package tv.dyndns.kishibe.qmaclone.client.game.sentence; import static java.util.Arrays.asList; import java.util.List; import org.junit.Test; import tv.dyndns.kishibe.qmaclone.client.QMACloneGWTTestCaseBase; import tv.dyndns.kishibe.qmaclone.client.packet.PacketProblem; import com.google.common.collect.Lists; public class WidgetProblemSentenceRensouTest extends QMACloneGWTTestCaseBase { @Override protected void gwtSetUp() throws Exception { super.gwtSetUp(); } private static List<String> toStringList(StringBuilder[] sbs) { List<String> list = Lists.newArrayList(); for (StringBuilder sb : sbs) { list.add(sb.toString()); } return list; } @Test public void testUpdateShouldProcessNormalSentence() { PacketProblem problem = new PacketProblem(); problem.sentence = "a \nb\nc\nd\n"; WidgetProblemSentenceRensou ui = new WidgetProblemSentenceRensou(problem); assertEquals(asList("『ヒント1』", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "c", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "c", "『ヒント4』"), toStringList(ui.lines)); assertFalse(ui.updateLetter()); assertEquals(asList("a", "b", "c", "d"), toStringList(ui.lines)); } @Test public void testUpdateShouldProcessWithoutLastReturn() { PacketProblem problem = new PacketProblem(); problem.sentence = "a \nb\nc\nd\n"; WidgetProblemSentenceRensou ui = new WidgetProblemSentenceRensou(problem); assertEquals(asList("『ヒント1』", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "c", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "c", "『ヒント4』"), toStringList(ui.lines)); assertFalse(ui.updateLetter()); assertEquals(asList("a", "b", "c", "d"), toStringList(ui.lines)); } @Test public void testUpdateShouldProcessClear() { PacketProblem problem = new PacketProblem(); problem.sentence = "a \nb\nc%c\nd\n"; WidgetProblemSentenceRensou ui = new WidgetProblemSentenceRensou(problem); assertEquals(asList("『ヒント1』", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "c", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("『ヒント1』", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertFalse(ui.updateLetter()); assertEquals(asList("d", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); } @Test public void testUpdateShouldNotClearIfNotPercentC() { PacketProblem problem = new PacketProblem(); problem.sentence = "a \nb\nc%z\nd\n"; WidgetProblemSentenceRensou ui = new WidgetProblemSentenceRensou(problem); assertEquals(asList("『ヒント1』", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "c", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "c%", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "c%z", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "c%z", "『ヒント4』"), toStringList(ui.lines)); assertFalse(ui.updateLetter()); assertEquals(asList("a", "b", "c%z", "d"), toStringList(ui.lines)); } @Test public void testUpdateShouldProcessMoreThan4Lines() { PacketProblem problem = new PacketProblem(); problem.sentence = "a \nb\nc\nd\ne\nf\n"; WidgetProblemSentenceRensou ui = new WidgetProblemSentenceRensou(problem); assertEquals(asList("『ヒント1』", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "『ヒント2』", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "『ヒント3』", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "c", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "c", "『ヒント4』"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "c", "d"), toStringList(ui.lines)); assertTrue(ui.updateLetter()); assertEquals(asList("a", "b", "c", "d"), toStringList(ui.lines)); assertFalse(ui.updateLetter()); assertEquals(asList("a", "b", "c", "d"), toStringList(ui.lines)); } @Test public void testUpdateShouldProcessAllShow() { PacketProblem problem = new PacketProblem(); problem.sentence = "!a \nb\nc\nd\n"; WidgetProblemSentenceRensou ui = new WidgetProblemSentenceRensou(problem); assertEquals(asList("a", "b", "c", "d"), toStringList(ui.lines)); assertFalse(ui.updateLetter()); assertEquals(asList("a", "b", "c", "d"), toStringList(ui.lines)); } @Test public void testUpdateShouldShowHtml() { PacketProblem problem = new PacketProblem(); problem.sentence = "a\nb\nc\nd\n"; WidgetProblemSentenceRensou ui = new WidgetProblemSentenceRensou(problem); ui.update(0, 10000); assertEquals("a<br>b<br>c<br>d", ui.htmlSentence.getHTML().replaceAll("</br>", "")); } }