// Path: src/main/java/com/deswaef/twitch/api/games/domain/Game.java
// public class Game {
// 
//     @SerializedName("_id")
//     private Long id;
//     @SerializedName("giantbomb_id")
//     private Long giantbombId;
//     @SerializedName("box")
//     private GameImage box;
//     @SerializedName("logo")
//     private GameImage logo;
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
//     public Long getGiantbombId() {
//         return giantbombId;
//     }
// 
//     public void setGiantbombId(Long giantbombId) {
//         this.giantbombId = giantbombId;
//     }
// 
//     public GameImage getBox() {
//         return box;
//     }
// 
//     public void setBox(GameImage box) {
//         this.box = box;
//     }
// 
//     public GameImage getLogo() {
//         return logo;
//     }
// 
//     public void setLogo(GameImage logo) {
//         this.logo = logo;
//     }
// }
// 
// Path: src/main/java/com/deswaef/twitch/api/games/domain/GameImage.java
// public class GameImage {
// 
//     private String large;
//     private String medium;
//     private String small;
//     private String template;
// 
//     public String getLarge() {
//         return large;
//     }
// 
//     public void setLarge(String large) {
//         this.large = large;
//     }
// 
//     public String getMedium() {
//         return medium;
//     }
// 
//     public void setMedium(String medium) {
//         this.medium = medium;
//     }
// 
//     public String getSmall() {
//         return small;
//     }
// 
//     public void setSmall(String small) {
//         this.small = small;
//     }
// 
//     public String getTemplate() {
//         return template;
//     }
// 
//     public void setTemplate(String template) {
//         this.template = template;
//     }
// }
// 
// Path: src/main/java/com/deswaef/twitch/api/games/domain/GameTopResult.java
// public class GameTopResult {
// 
//     private Game game;
//     private Long viewers;
//     private Long channels;
// 
// 
//     public Long getViewers() {
//         return viewers;
//     }
// 
//     public void setViewers(Long viewers) {
//         this.viewers = viewers;
//     }
// 
//     public Long getChannels() {
//         return channels;
//     }
// 
//     public void setChannels(Long channels) {
//         this.channels = channels;
//     }
// 
//     public Game getGame() {
//         return game;
//     }
// 
//     public void setGame(Game game) {
//         this.game = game;
//     }
// }


import com.deswaef.twitch.api.games.domain.Game;
import com.deswaef.twitch.api.games.domain.GameImage;
import com.deswaef.twitch.api.games.domain.GameTopResult;
import net.vidageek.mirror.dsl.Mirror;
import org.junit.Before;
import org.junit.Test;
import retrofit.RestAdapter;
import static org.fest.assertions.Assertions.assertThat;
        assertThat(gamesResource.top().get().getTop().size()).isEqualTo(10);
    }

    @Test
    public void topHasValidGames() {
        gamesResource.top().get().getTop().stream()
                .map(x -> x.getGame())
                .forEach(
                        this::validateGame
                );
    }

    @Test
    public void topHasValidGameLogos(){
        gamesResource.top().get().getTop().stream()
                .map(x -> x.getGame().getLogo())
                .forEach(
                        this::validateImage
                );
    }

    @Test
    public void topHasValidBox(){
        gamesResource.top().get().getTop().stream()
                .map(x -> x.getGame().getBox())
                .forEach(
                        this::validateImage
                );
    }

// Path: src/main/java/com/deswaef/twitch/api/games/domain/Game.java
// public class Game {
// 
//     @SerializedName("_id")
//     private Long id;
//     @SerializedName("giantbomb_id")
//     private Long giantbombId;
//     @SerializedName("box")
//     private GameImage box;
//     @SerializedName("logo")
//     private GameImage logo;
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
//     public Long getGiantbombId() {
//         return giantbombId;
//     }
// 
//     public void setGiantbombId(Long giantbombId) {
//         this.giantbombId = giantbombId;
//     }
// 
//     public GameImage getBox() {
//         return box;
//     }
// 
//     public void setBox(GameImage box) {
//         this.box = box;
//     }
// 
//     public GameImage getLogo() {
//         return logo;
//     }
// 
//     public void setLogo(GameImage logo) {
//         this.logo = logo;
//     }
// }
// 
// Path: src/main/java/com/deswaef/twitch/api/games/domain/GameImage.java
// public class GameImage {
// 
//     private String large;
//     private String medium;
//     private String small;
//     private String template;
// 
//     public String getLarge() {
//         return large;
//     }
// 
//     public void setLarge(String large) {
//         this.large = large;
//     }
// 
//     public String getMedium() {
//         return medium;
//     }
// 
//     public void setMedium(String medium) {
//         this.medium = medium;
//     }
// 
//     public String getSmall() {
//         return small;
//     }
// 
//     public void setSmall(String small) {
//         this.small = small;
//     }
// 
//     public String getTemplate() {
//         return template;
//     }
// 
//     public void setTemplate(String template) {
//         this.template = template;
//     }
// }
// 
// Path: src/main/java/com/deswaef/twitch/api/games/domain/GameTopResult.java
// public class GameTopResult {
// 
//     private Game game;
//     private Long viewers;
//     private Long channels;
// 
// 
//     public Long getViewers() {
//         return viewers;
//     }
// 
//     public void setViewers(Long viewers) {
//         this.viewers = viewers;
//     }
// 
//     public Long getChannels() {
//         return channels;
//     }
// 
//     public void setChannels(Long channels) {
//         this.channels = channels;
//     }
// 
//     public Game getGame() {
//         return game;
//     }
// 
//     public void setGame(Game game) {
//         this.game = game;
//     }
// }


// Path: src/test/java/com/deswaef/twitch/api/games/GamesResourceTest.java
import com.deswaef.twitch.api.games.domain.Game;
import com.deswaef.twitch.api.games.domain.GameImage;
import com.deswaef.twitch.api.games.domain.GameTopResult;
import net.vidageek.mirror.dsl.Mirror;
import org.junit.Before;
import org.junit.Test;
import retrofit.RestAdapter;
import static org.fest.assertions.Assertions.assertThat;

        assertThat(gamesResource.top().get().getTop().size()).isEqualTo(10);
    }

    @Test
    public void topHasValidGames() {
        gamesResource.top().get().getTop().stream()
                .map(x -> x.getGame())
                .forEach(
                        this::validateGame
                );
    }

    @Test
    public void topHasValidGameLogos(){
        gamesResource.top().get().getTop().stream()
                .map(x -> x.getGame().getLogo())
                .forEach(
                        this::validateImage
                );
    }

    @Test
    public void topHasValidBox(){
        gamesResource.top().get().getTop().stream()
                .map(x -> x.getGame().getBox())
                .forEach(
                        this::validateImage
                );
    }

    private void validateImage(GameImage gameImage) {