TIMED_TEST(DawgLexiconTests, basicTest_DawgLexicon, TEST_TIMEOUT_DEFAULT) { std::initializer_list<std::string> words = { "a", "ab", "aab", "aaab", "aardvark", "b", "banana" }; std::initializer_list<std::string> badWords = { "abb", "ad", "and", "aaardvark", "aardvarks", }; std::initializer_list<std::string> badPrefixes = { "aaaa", "abb", "aardvarz", "bb", "bananas", "c", "r", "z" }; DawgLexicon dawg; for (std::string word : words) { dawg.add(word); } assertEquals("DawgLexicon size", words.size(), dawg.size()); for (std::string word : words) { assertTrue("DawgLexicon contains " + word, dawg.contains(word)); } for (std::string word : badWords) { assertFalse("DawgLexicon contains " + word, dawg.contains(word)); } for (std::string word : words) { for (int i = 0; i < (int) word.length(); i++) { std::string prefix = word.substr(0, i); assertTrue("DawgLexicon containsPrefix " + word, dawg.containsPrefix(word)); } } for (std::string word : badPrefixes) { assertFalse("DawgLexicon containsPrefix " + word, dawg.containsPrefix(word)); } }
TIMED_TEST(DawgLexiconTests, initializerListTest_DawgLexicon, TEST_TIMEOUT_DEFAULT) { std::initializer_list<std::string> lexlist = {"sixty", "seventy"}; std::initializer_list<std::string> lexallwords = { "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy" }; DawgLexicon dlex {"ten", "twenty", "thirty"}; assertEqualsString("init list DawgLexicon", "{\"ten\", \"thirty\", \"twenty\"}", dlex.toString()); assertEqualsInt("init list DawgLexicon size", 3, dlex.size()); assertTrue("init list DawgLexicon contains ten", dlex.contains("ten")); assertTrue("init list DawgLexicon contains twenty", dlex.contains("twenty")); assertTrue("init list DawgLexicon contains thirty", dlex.contains("thirty")); assertFalse("init list DawgLexicon contains forty", dlex.contains("forty")); assertFalse("init list DawgLexicon contains fifty", dlex.contains("fifty")); dlex += {"forty", "fifty"}; assertEqualsString("after += DawgLexicon", "{\"fifty\", \"forty\", \"ten\", \"thirty\", \"twenty\"}", dlex.toString()); assertEqualsInt("after += DawgLexicon size", 5, dlex.size()); assertTrue("init list DawgLexicon contains ten", dlex.contains("ten")); assertTrue("init list DawgLexicon contains twenty", dlex.contains("twenty")); assertTrue("init list DawgLexicon contains thirty", dlex.contains("thirty")); assertTrue("init list DawgLexicon contains forty", dlex.contains("forty")); assertTrue("init list DawgLexicon contains fifty", dlex.contains("fifty")); assertFalse("init list DawgLexicon contains sixty", dlex.contains("sixty")); assertFalse("init list DawgLexicon contains seventy", dlex.contains("seventy")); DawgLexicon dlex2 = (dlex + lexlist); assertEqualsString("after += DawgLexicon", "{\"fifty\", \"forty\", \"ten\", \"thirty\", \"twenty\"}", dlex.toString()); assertEqualsInt("after + DawgLexicon size", 5, dlex.size()); assertTrue("init list DawgLexicon contains ten", dlex.contains("ten")); assertTrue("init list DawgLexicon contains twenty", dlex.contains("twenty")); assertTrue("init list DawgLexicon contains thirty", dlex.contains("thirty")); assertTrue("init list DawgLexicon contains forty", dlex.contains("forty")); assertTrue("init list DawgLexicon contains fifty", dlex.contains("fifty")); assertFalse("init list DawgLexicon contains sixty", dlex.contains("sixty")); assertFalse("init list DawgLexicon contains seventy", dlex.contains("seventy")); assertEqualsString("after + DawgLexicon 2", "{\"fifty\", \"forty\", \"seventy\", \"sixty\", \"ten\", \"thirty\", \"twenty\"}", dlex2.toString()); assertEqualsInt("after + DawgLexicon 2 size", 7, dlex2.size()); assertTrue("init list DawgLexicon contains ten", dlex2.contains("ten")); assertTrue("init list DawgLexicon contains twenty", dlex2.contains("twenty")); assertTrue("init list DawgLexicon contains thirty", dlex2.contains("thirty")); assertTrue("init list DawgLexicon contains forty", dlex2.contains("forty")); assertTrue("init list DawgLexicon contains fifty", dlex2.contains("fifty")); assertTrue("init list DawgLexicon contains sixty", dlex2.contains("sixty")); assertTrue("init list DawgLexicon contains seventy", dlex2.contains("seventy")); }