private MnemonicValidator(final WordList wordList) { normalizer = new WordListMapNormalization(wordList); words = new WordAndIndex[1 << 11]; for (int i = 0; i < 1 << 11; i++) { words[i] = new WordAndIndex(i, wordList.getWord(i)); } charSequenceSplitter = new CharSequenceSplitter(wordList.getSpace(), normalizeNFKD(wordList.getSpace())); Arrays.sort(words, wordListSortOrder); }
private MnemonicValidator(final WordList wordList) { normalizer = new WordListMapNormalization(wordList); words = new WordAndIndex[1 << 11]; for (int i = 0; i < 1 << 11; i++) { words[i] = new WordAndIndex(i, wordList.getWord(i)); } charSequenceSplitter = new CharSequenceSplitter(wordList.getSpace(), normalizeNFKD(wordList.getSpace())); Arrays.sort(words, wordListSortOrder); }
@Test public void sequence_containing_one() { final List<CharSequence> list = new CharSequenceSplitter(' ', ' ').split("abc"); assertEquals(1, list.size()); assertEquals("abc", list.get(0).toString()); }
@Test public void separator_at_end() { final List<CharSequence> list = new CharSequenceSplitter('-', '-').split("a-b-c-"); assertEquals(4, list.size()); assertEquals("a", list.get(0).toString()); assertEquals("b", list.get(1).toString()); assertEquals("c", list.get(2).toString()); assertEquals("", list.get(3).toString()); }
@Test public void two_items() { final List<CharSequence> list = new CharSequenceSplitter(' ', ' ').split("abc def"); assertEquals(2, list.size()); assertEquals("abc", list.get(0).toString()); assertEquals("def", list.get(1).toString()); }
@Test public void empty_sequence() { final List<CharSequence> list = new CharSequenceSplitter(' ', ' ').split(""); assertEquals(1, list.size()); assertEquals("", list.get(0).toString()); }
@Test public void two_separators_in_middle() { final List<CharSequence> list = new CharSequenceSplitter('-', '-').split("a--b-c"); assertEquals(4, list.size()); assertEquals("a", list.get(0).toString()); assertEquals("", list.get(1).toString()); assertEquals("b", list.get(2).toString()); assertEquals("c", list.get(3).toString()); }
@Test public void different_separators() { final List<CharSequence> list = new CharSequenceSplitter('-', '+').split("a-b+c"); assertEquals(3, list.size()); assertEquals("a", list.get(0).toString()); assertEquals("b", list.get(1).toString()); assertEquals("c", list.get(2).toString()); }
@Test public void two_items_different_separator() { final List<CharSequence> list = new CharSequenceSplitter('-', '-').split("abc-def"); assertEquals(2, list.size()); assertEquals("abc", list.get(0).toString()); assertEquals("def", list.get(1).toString()); }
@Test public void just_separator() { final List<CharSequence> list = new CharSequenceSplitter('-', '-').split("-"); assertEquals(2, list.size()); assertEquals("", list.get(0).toString()); assertEquals("", list.get(1).toString()); }
@Test public void whiteBox_number_of_expected_calls() { final CharSequence inner = "abc-def-123"; final Spy spy = new Spy(inner); new CharSequenceSplitter('-', '-').split(spy); assertEquals(1, spy.lengthCalls); assertEquals(inner.length(), spy.charAtCalls); assertEquals(3, spy.subSequenceCalls); assertEquals(0, spy.toStringCalls); }
/** * This works because the split creates char sequences with 0 hashcode */ @Test public void a_fresh_char_sequence_from_a_split_still_does_not_need_to_to_string() { final WordListMapNormalization map = new WordListMapNormalization(Japanese.INSTANCE); final String word2 = Japanese.INSTANCE.getWord(2); final String word51 = Japanese.INSTANCE.getWord(51); final String sentence = word2 + Japanese.INSTANCE.getSpace() + word51; final List<CharSequence> split = new CharSequenceSplitter(' ', Japanese.INSTANCE.getSpace()).split(sentence); assertNotSame(split.get(0), word2); assertNotSame(split.get(1), word51); assertSame(map.normalize(word2), map.normalize(split.get(0))); assertSame(map.normalize(word51), map.normalize(split.get(1))); assertSame(map.normalize(word2), map.normalize(preventToStringAndSubSequence(split.get(0)))); assertSame(map.normalize(word51), map.normalize(preventToStringAndSubSequence(split.get(1)))); }