package tv.dyndns.kishibe.qmaclone.client.creation.validater;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import tv.dyndns.kishibe.qmaclone.client.game.ProblemGenre;
import tv.dyndns.kishibe.qmaclone.client.game.ProblemType;
import tv.dyndns.kishibe.qmaclone.client.game.RandomFlag;
@RunWith(JUnit4.class)
public class ValidatorTest extends ValidatorTestBase {
private Validator validator;
@Before
public void setUp() throws Exception {
super.setUp();
validator = new ValidatorNull();
problem.genre = ProblemGenre.Random;
}
@Test
public void testCheckTypingAnswer() {
assertFalse(validator.checkTypingAnswer(null));
assertFalse(validator.checkTypingAnswer(""));
assertTrue(validator.checkTypingAnswer("012ABC"));
assertTrue(validator.checkTypingAnswer("あいうえお"));
assertTrue(validator.checkTypingAnswer("アイウエオ"));
assertFalse(validator.checkTypingAnswer("0あ"));
assertFalse(validator.checkTypingAnswer("0ア"));
assertFalse(validator.checkTypingAnswer("あア"));
assertFalse(validator.checkTypingAnswer("残念ながら"));
}
@Test
public void testToFull() {
assertEquals("0123ABCD一", validator.toFull("0123ABCD一"));
}
@Test
public void testCheck() {
problem.genre = ProblemGenre.Anige;
assertEquals(Arrays.asList(), validator.check(problem).warn);
}
@Test
public void testCheckGenre() {
problem.genre = ProblemGenre.Random;
assertTrue(validator.check(problem).hasWarning());
}
@Test
public void testCheckType() {
problem.type = ProblemType.Random;
assertTrue(validator.check(problem).hasWarning());
}
@Test
public void testCheckSentence() {
problem.sentence = "";
assertTrue(validator.check(problem).hasWarning());
}
@Test
public void testCheckCreator() {
problem.creator = "";
assertTrue(validator.check(problem).hasWarning());
}
@Test
public void testCheckDefaultCreator() {
problem.creator = "未初期化です";
assertTrue(validator.check(problem).hasWarning());
}
@Test
public void testCheckImageAnswer() {
problem.imageAnswer = true;
problem.answers = new String[] { "hoge", null, null, null, null, null, null, null };
assertTrue(validator.check(problem).hasWarning());
}
@Test
public void testCheckImageChoice() {
problem.imageChoice = true;
problem.choices = new String[] { "hoge", null, null, null, null, null, null, null };
assertTrue(validator.check(problem).hasWarning());
}
@Test
public void testCheckRandomFlag() {
problem.randomFlag = RandomFlag.Random5;
assertTrue(validator.check(problem).hasWarning());
}
@Test
public void testCheckImageUrl() {
problem.imageUrl = "hoge";
assertTrue(validator.check(problem).hasWarning());
}
@Test
public void testCheckMovieUrl() {
problem.movieUrl = "hoge";
assertTrue(validator.check(problem).hasWarning());
}
@Test
public void testCheckDuplicatedAnswer() {
problem.answers = new String[] { "a", "a", "b", "c", null, null, null, null };
assertTrue(validator.check(problem).hasWarning());
}
@Test
public void testCheckDuplicatedChoice() {
problem.choices = new String[] { "A", "A", "B", "C", null, null, null, null };
assertTrue(validator.check(problem).hasWarning());
}
@Test
public void testIsUrl() {
assertTrue(validator.isUrl("http://www.google.com/"));
assertFalse(validator.isUrl("hoge"));
}
@Test
public void testConsistsOfTheSameLetters() {
assertTrue(validator.consistsOfTheSameLetters("a", "a"));
assertTrue(validator.consistsOfTheSameLetters("abc", "abc"));
assertTrue(validator.consistsOfTheSameLetters("cba", "acb"));
assertFalse(validator.consistsOfTheSameLetters("a", "aa"));
assertFalse(validator.consistsOfTheSameLetters("a", "b"));
}
@Test
public void testRightNowWords() {
problem.sentence = "現在のモーニング娘。のメンバー数は?";
assertFalse(validator.check(problem).info.isEmpty());
}
@Test
public void testRightNowWords2() {
problem.sentence = "今ではのモーニング娘。のメンバー数は?";
assertThat(validator.check(problem).info).hasSize(1);
;
}
@Test
public void testRightNowWords3() {
problem.sentence = "今までのモーニング娘。のメンバー数は?";
assertThat(validator.check(problem).info).hasSize(1);
;
}
}