Java tutorial
/* * Copyright (c) 2004-2016 Stuart Boston * * This file is part of TheMovieDB API. * * TheMovieDB API is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * TheMovieDB API is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>. * */ package com.omertron.themoviedbapi; import com.omertron.themoviedbapi.interfaces.AppendToResponse; import com.omertron.themoviedbapi.interfaces.AppendToResponseMethod; import com.omertron.themoviedbapi.interfaces.Identification; import com.omertron.themoviedbapi.model.list.UserList; import com.omertron.themoviedbapi.model.media.MediaCreditList; import com.omertron.themoviedbapi.model.media.MediaState; import com.omertron.themoviedbapi.model.movie.MovieBasic; import com.omertron.themoviedbapi.model.movie.MovieInfo; import com.omertron.themoviedbapi.model.person.ExternalID; import com.omertron.themoviedbapi.model.person.PersonCreditList; import com.omertron.themoviedbapi.model.person.PersonInfo; import com.omertron.themoviedbapi.model.tv.TVBasic; import com.omertron.themoviedbapi.model.tv.TVEpisodeInfo; import com.omertron.themoviedbapi.model.tv.TVInfo; import com.omertron.themoviedbapi.model.tv.TVSeasonInfo; import com.omertron.themoviedbapi.results.ResultList; import java.util.List; import java.util.Random; import org.apache.commons.lang3.StringUtils; import static org.apache.commons.lang3.StringUtils.isNotBlank; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; public class TestSuite { private static final String MISSING_NAME = ": Missing name"; private static final String MISSING_POSTER = ": Missing poster"; private static final String MISSING_TITLE = ": Missing title"; private static final String MISSING_ID = ": Missing ID"; private TestSuite() { throw new UnsupportedOperationException("Utility class"); } public static int randomRating() { return new Random().nextInt(10) + 1; } public static void test(ResultList<?> result, String message) { assertNotNull(message + ": Null result list", result); assertFalse(message + ": Empty result list", result.isEmpty()); test(result.getResults(), message); } public static void test(List<?> result, String message) { assertNotNull(message + ": Null results", result); assertFalse(message + ": Empty results", result.isEmpty()); } public static void test(MovieBasic test) { String message = test.getClass().getSimpleName(); assertTrue(message + MISSING_TITLE, isNotBlank(test.getTitle())); assertTrue(message + MISSING_POSTER, isNotBlank(test.getPosterPath())); assertTrue(message + ": Missing release date", isNotBlank(test.getReleaseDate())); } public static void test(MovieInfo test) { String message = test.getClass().getSimpleName(); assertTrue(message + MISSING_TITLE, isNotBlank(test.getTitle())); assertTrue(message + ": Missing original title", isNotBlank(test.getOriginalTitle())); assertTrue(message + MISSING_POSTER, isNotBlank(test.getPosterPath())); assertTrue(message + ": Missing release date", isNotBlank(test.getReleaseDate())); assertTrue(message + ": Missing backdrop", isNotBlank(test.getBackdropPath())); assertTrue(message + ": Missing poster path", isNotBlank(test.getPosterPath())); assertTrue(message + ": Missing overview", isNotBlank(test.getOverview())); assertTrue(message + ": Missing Language", isNotBlank(test.getOriginalLanguage())); test(test.getGenres(), "Genres"); test(test.getProductionCompanies(), "ProductionCompany"); test(test.getProductionCountries(), "ProductionCountries"); } public static void test(UserList test) { String message = test.getClass().getSimpleName(); assertTrue(message + MISSING_ID, isNotBlank(test.getId())); assertTrue(message + ": Missing Description", isNotBlank(test.getDescription())); } public static void test(TVBasic test) { String message = test.getClass().getSimpleName(); assertTrue(message + MISSING_NAME, isNotBlank(test.getName())); assertTrue(message + MISSING_POSTER, isNotBlank(test.getPosterPath())); assertTrue(message + ": Missing first air date", isNotBlank(test.getFirstAirDate())); } public static void test(TVInfo test) { String message = test.getClass().getSimpleName(); assertTrue(message + MISSING_ID, test.getId() > 0); assertFalse(message + ": Missing runtime", test.getEpisodeRunTime().isEmpty()); assertFalse(message + ": Missing genres", test.getGenres().isEmpty()); assertTrue(message + ": Missing season count", test.getNumberOfSeasons() > 0); assertTrue(message + ": Missing episode count", test.getNumberOfEpisodes() > 0); } public static void test(TVEpisodeInfo test) { String message = test.getClass().getSimpleName(); assertTrue(message + MISSING_ID, test.getId() > 0); assertTrue(message + MISSING_NAME, StringUtils.isNotBlank(test.getName())); assertFalse(message + ": Missing crew", test.getCrew().isEmpty()); assertFalse(message + ": Missing guest stars", test.getGuestStars().isEmpty()); } public static void test(PersonInfo test) { String message = test.getClass().getSimpleName(); assertTrue(message + ": Missing bio", StringUtils.isNotBlank(test.getBiography())); assertTrue(message + ": Missing birthday", StringUtils.isNotBlank(test.getBirthday())); assertTrue(message + ": Missing homepage", StringUtils.isNotBlank(test.getHomepage())); assertTrue(message + MISSING_NAME, StringUtils.isNotBlank(test.getName())); assertTrue(message + ": Missing birth place", StringUtils.isNotBlank(test.getPlaceOfBirth())); assertTrue(message + ": Missing artwork", StringUtils.isNotBlank(test.getProfilePath())); assertTrue(message + ": Missing bio", test.getPopularity() > 0F); } public static void test(TVSeasonInfo test) { String message = test.getClass().getSimpleName(); assertTrue(message + MISSING_ID, test.getId() > 0); assertTrue(message + MISSING_NAME, StringUtils.isNotBlank(test.getName())); assertTrue(message + ": Missing overview", StringUtils.isNotBlank(test.getOverview())); assertTrue(message + ": Missing episodes", test.getEpisodes().size() > 0); } public static void test(ExternalID test) { String message = test.getClass().getSimpleName(); boolean found = false; found |= StringUtils.isNotBlank(test.getImdbId()); found |= StringUtils.isNotBlank(test.getFreebaseId()); found |= StringUtils.isNotBlank(test.getFreebaseMid()); found |= StringUtils.isNotBlank(test.getTvdbId()); found |= StringUtils.isNotBlank(test.getTvrageId()); assertTrue(message + ": Missing all of the External IDs", found); } public static void test(MediaCreditList test) { String message = test.getClass().getSimpleName(); boolean found = false; found |= !test.getCast().isEmpty(); found |= !test.getCrew().isEmpty(); found |= !test.getGuestStars().isEmpty(); assertTrue(message + ": Missing cast/crew/guest stars information", found); } public static void test(MediaState test) { String message = test.getClass().getSimpleName(); assertNotNull(message + ": Null result", test); assertTrue(message + ": Invalid rating", test.getRated() > -2f); } public static void test(PersonCreditList<?> test, String message) { boolean found = false; found |= !test.getCast().isEmpty(); found |= !test.getCrew().isEmpty(); assertTrue(message + ": Missing cast/crew information", found); } public static void testId(ResultList<? extends Identification> result, int id, String message) { testId(result.getResults(), id, message); } public static void testId(List<? extends Identification> result, int id, String message) { boolean found = false; for (Identification item : result) { if (item.getId() == id) { found = true; break; } } assertTrue(message + " ID " + id + " not found in list", found); } /** * Test the AppendToResponse method * * @param <T> * @param test * @param methodClass * @param skip Any methods to skip */ public static <T extends AppendToResponseMethod> void testATR(AppendToResponse<T> test, Class<T> methodClass, T skip) { for (T method : methodClass.getEnumConstants()) { if (skip != null && method != skip) { assertTrue(test.getClass().getSimpleName() + ": Does not have " + method.getPropertyString(), test.hasMethod(method)); } } } }