package tv.dyndns.kishibe.qmaclone.client.lobby;
import java.util.Collections;
import java.util.List;
import tv.dyndns.kishibe.qmaclone.client.QMACloneGWTTestCaseBase;
import tv.dyndns.kishibe.qmaclone.client.UserData;
import tv.dyndns.kishibe.qmaclone.client.game.ProblemGenre;
import tv.dyndns.kishibe.qmaclone.client.game.ProblemType;
import tv.dyndns.kishibe.qmaclone.client.packet.PacketPlayerSummary;
import tv.dyndns.kishibe.qmaclone.client.packet.PacketRankingData;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
public class LobbyUiTest extends QMACloneGWTTestCaseBase {
private LobbyUi ui;
@Override
protected void gwtSetUp() throws Exception {
super.gwtSetUp();
UserData.get().setGenres(Collections.<ProblemGenre> emptySet());
UserData.get().setTypes(Collections.<ProblemType> emptySet());
ui = new LobbyUi(null);
}
public void testGetPlayerNameShouldReturnNormalPlayer() {
ui.listBoxLevelName.setSelectedIndex(1);
ui.listBoxLevelNumber.setSelectedIndex(2);
ui.textBoxPlayerName.setText("プレイヤー");
ui.listBoxPrefecture.setSelectedIndex(3);
UserData.get().setRating(1234);
final PacketPlayerSummary player = ui.getPlayerSummary();
assertEquals("見習3", player.level);
assertEquals("プレイヤー", player.name);
assertEquals("岩手", player.prefecture);
assertEquals(1234, player.rating);
}
public void testUpdateSpecialLevelName() {
ui.textBoxPlayerName.setText("プレイヤー");
ui.listBoxPrefecture.setSelectedIndex(3);
UserData.get().setRating(1234);
PacketRankingData data = new PacketRankingData();
final List<PacketRankingData> ranking = Lists.newArrayList();
for (int i = 0; i < 100; ++i) {
ranking.add(data);
}
final List<List<PacketRankingData>> rankingData = Lists.newArrayList();
for (int i = 0; i < 7; ++i) {
rankingData.add(ranking);
}
data = new PacketRankingData();
data.userCode = 123456789;
UserData.get().setUserCode(123456789);
rankingData.get(3).set(40, data);
ui.updateSpecialLevelName(rankingData);
assertEquals(LobbyUi.LEVEL_NAMES.size() + 1, ui.listBoxLevelName.getItemCount());
assertEquals("賢将", ui.listBoxLevelName.getItemText(LobbyUi.LEVEL_NAMES.size()));
assertEquals(LobbyUi.LEVEL_NAMES.size(), ui.listBoxLevelName.getSelectedIndex());
assertFalse(ui.listBoxLevelNumber.isEnabled());
assertTrue(ui.specialLevelName);
PacketPlayerSummary player = ui.getPlayerSummary();
assertEquals("賢将", player.level);
assertEquals("プレイヤー", player.name);
assertEquals("岩手", player.prefecture);
assertEquals(1234, player.rating);
// 別の階級を選んだ際に級数が選択できるようになるか?
ui.listBoxLevelName.setSelectedIndex(0);
ui.levelNameChangeHandler.onChange(null);
assertTrue(ui.listBoxLevelNumber.isEnabled());
player = ui.getPlayerSummary();
assertEquals("修練1", player.level);
assertEquals("プレイヤー", player.name);
assertEquals("岩手", player.prefecture);
assertEquals(1234, player.rating);
}
public void testUpdateThemeModeShouldSelectLastTheme() {
List<List<String>> themeLists = ImmutableList.<List<String>> of(
ImmutableList.of("テーマ1", "テーマ2", "テーマ3"), ImmutableList.<String> of(),
ImmutableList.<String> of(), ImmutableList.<String> of(), ImmutableList.<String> of(),
ImmutableList.<String> of());
UserData.get().setTheme("テーマ2");
ui.updateThemeMode(themeLists);
assertEquals("テーマ2", ui.getThemeModeTheme());
}
public void testSaveUserDataShouldSaveTheme() {
List<List<String>> themeLists = ImmutableList.<List<String>> of(
ImmutableList.of("テーマ1", "テーマ2", "テーマ3"), ImmutableList.<String> of(),
ImmutableList.<String> of(), ImmutableList.<String> of(), ImmutableList.<String> of(),
ImmutableList.<String> of());
UserData.get().setTheme("テーマ2");
ui.updateThemeMode(themeLists);
assertEquals("テーマ2", UserData.get().getTheme());
}
}