public void Example_FindsExpectedWords() { AnagramFinder finder = new AnagramFinder(); List <string> results = finder.FindAnagram("teen nine"); Assert.AreEqual("nineteen", results[0]); }
public void TestEmptyListE() { af = new AnagramFinder(); List <List <String> > emptyListE = af.FindAllAnagramsWithDuplicateLetters(new List <String>()); Assert.AreEqual(0, emptyListE.Count); }
public void AnagramTester_CanAcceptInput_String() { string testString1 = "Poorly"; AnagramFinder testFinder = new AnagramFinder(testString1); Assert.AreEqual(testString1, testFinder.GetString()); }
static void anagramsMode(LanguageInfo language) { Console.Write("Get top 20 anagrams for: "); var input = Console.ReadLine(); if (string.IsNullOrEmpty(input)) { Console.WriteLine("Input was empty. Try again."); } else if (!input.All(x => x == AnagramFinder.WILDCARD || language.Letters.Keys.Contains(x))) { Console.WriteLine("Invalid character(s) in the input. Try again."); } else { var anagramFinder = new AnagramFinder(language); var foundAny = false; foreach (var anagram in anagramFinder.GetTopAnagrams(input.ToCharArray(), 20)) { Console.WriteLine(" {0} ({1}p)", anagram.Word, anagram.Points); foundAny = true; } if (!foundAny) Console.WriteLine("No anagrams found."); } Console.WriteLine(); }
static void Main(string[] args) { AnagramFinder anagramFinder = new AnagramFinder(); Console.WriteLine("Please enter the input file path containing possible anagrams "); string path = Console.ReadLine(); var inputList = FileReader.ReadAllStrings(path); if (inputList.Count == 0) { return; } Console.WriteLine("All possible anagrams in input file"); Console.WriteLine(); anagramFinder.PrintAllAnagrams(inputList); anagramFinder.Clear(); Console.WriteLine(); Console.WriteLine("Longest anagram set in the input file"); Console.WriteLine(); Console.WriteLine(anagramFinder.FindAnagramSetWithMostWords(inputList)); anagramFinder.Clear(); Console.WriteLine(); Console.WriteLine("Longest words that are anagrams in input file"); Console.WriteLine(); Console.WriteLine(anagramFinder.FindLongestAnagramWords(inputList)); anagramFinder.Clear(); }
public void ShouldReturnEmptyListIfThereAreNoAnagrams(List <string> words) { var anagramFinder = new AnagramFinder(); var result = anagramFinder.FindAnagrams(words); Assert.Empty(result.Anagrams); }
public void ShouldFindAnagrams(List <string> words) { var anagramFinder = new AnagramFinder(); var result = anagramFinder.FindAnagrams(words); Assert.NotEmpty(result.Anagrams); }
public void TestNoAnagrams() { af = new AnagramFinder(); List <String> list = new List <String> { "bee", "ebbc" }; Assert.AreEqual(1, af.FindAllAnagramsWithDuplicateLetters(list).Count); }
public void TestSingleWord() { af = new AnagramFinder(); List <String> list = new List <String> { "fish" }; Assert.AreEqual(0, af.FindAllAnagramsWithDuplicateLetters(list).Count); }
public void TestNullListE() { af = new AnagramFinder(); var actual = Assert.ThrowsException <ArgumentException>(() => af.FindAllAnagramsWithDuplicateLetters(null)); Assert.AreEqual(actual.Message, "Param 'wordList' is null or empty"); }
public void ShouldFindAnagramsAndItsNumbers(AnagramFinderTestData data) { var anagramFinder = new AnagramFinder(); var result = anagramFinder.FindAnagrams(data.Words); Assert.Equal(data.AnagramCount, result.Anagrams.Count); Assert.Equal(data.LongestWordWithAnagramLength, result.GetLongestWordWithAnagram().Length); }
public void ExampleWithNoResults_ReturnsEmptyList() { AnagramFinder finder = new AnagramFinder(); // ReSharper disable StringLiteralTypo List <string> results = finder.FindAnagram("hitittttt"); // ReSharper restore StringLiteralTypo Assert.AreEqual(0, results.Count); }
public void TestFindsTwoWords() { var af = new AnagramFinder(); af.LoadList("TestWords.txt", 4); var words = af.Find("evil"); words.ForEach(a => Console.WriteLine(a)); Assert.AreEqual(2, words.Count); }
public void TestCaseInsensitive() { af = new AnagramFinder(); List <String> l = new List <String> { "SILENT", "listen", "taLent", "LatenT" }; List <List <String> > actual = af.FindAllAnagramsWithDuplicateLetters(l); String expected = "[[LatenT, taLent], [listen, SILENT]]"; Assert.AreEqual(expected, actual.ToString()); }
public void TestEmptyValE() { af = new AnagramFinder(); List <String> emptyValL = new List <String> { "dale", "vale", "veal", "", "lead" }; var actual = Assert.ThrowsException <ArgumentException>(() => af.FindAllAnagramsWithDuplicateLetters(emptyValL)); Assert.AreEqual("Param 'wordList' contains null or empty val", actual.Message); }
public void SameStringsAreAnagramWithZeroDeletions() { var str1 = "abc"; var str2 = "abc"; var expectedResult = 0; var anagramFinder = new AnagramFinder(); var actualResult = anagramFinder.FindDeletions(str1, str2); Assert.AreEqual(expectedResult, actualResult); }
public void DiffStringsAreAnagramWithSixDeletions() { var str1 = "abcxyz"; var str2 = "aabcbb"; var expectedResult = 6; var anagramFinder = new AnagramFinder(); var actualResult = anagramFinder.FindDeletions(str1, str2); Assert.AreEqual(expectedResult, actualResult); }
public void TestCaseInsensitive() { af = new AnagramFinder(); List <String> l = new List <String> { "SILENT", "listen", "taLent", "LatenT" }; List <List <String> > actualL = af.FindAllAnagramsWithDuplicateLetters(l); String expected = "LatenT, taLent, listen, SILENT"; String actualS = ""; actualL.ForEach(y => y.ForEach(x => actualS += (x + ", "))); actualS = actualS.Substring(0, actualS.Length - 2); Assert.AreEqual(expected, actualS); }
public void TestIgnoreDuplicate() { af = new AnagramFinder(); List <String> list = new List <String> { "lead", "silent", "dale", "talent", "new york times", "vile", "talent", "deal", "listen", "monkeys write", "evil" }; List <List <String> > test = af.FindAllAnagramsWithDuplicateLetters(list); List <String> actual = new List <String>(); foreach (List <String> sl in test) { actual.AddRange(sl); } Assert.IsTrue(list.Count > actual.Count); }
public void TestReturns() { af = new AnagramFinder(); List <String> list = new List <String> { "lead", "silent", "dale", "talent", "new york times", "vile", "deal", "listen", "monkeys write", "evil" }; List <String> expected = new List <String>(); foreach (List <String> sList in af.FindAllAnagramsWithDuplicateLetters(list)) { expected.Add(sList[0]); sList.Should().BeInAscendingOrder(); } expected.Should().BeInAscendingOrder(); }
public void TestTwoWords() { af = new AnagramFinder(); List <String> list = new List <String> { "bee", "ebb" }; List <List <String> > actual = af.FindAllAnagramsWithDuplicateLetters(list); Assert.AreEqual(1, actual.Count); foreach (List <String> l in actual) { l.Should().BeInAscendingOrder(); } }
public void ProcessingWordListFor6LettersAnagrams_FindsSome() { var readableFinder = new FixedSizeAnagramFinder(@"C:\Users\Etienne\Documents\GitHub\codekatas\wordlist.txt", 6); int count1 = readableFinder.Find().Count(); Assert.NotEqual(0, count1); var extendableFinder = new AnagramFinder( new FileBasedWordListProvider(@"C:\Users\Etienne\Documents\GitHub\codekatas\wordlist.txt"), new FixedSizeAnagramValidator(6) // TODO: Inject find algo... ); int count2 = extendableFinder.Find().Count(); Assert.Equal(count1, count2); }
public void Example_ReturnsListSortedByLength() { AnagramFinder finder = new AnagramFinder { MinimumWordLength = 2 }; List <string> results = finder.FindAnagram("teen nine"); Assert.AreEqual(12, results.Count); int previousWordLength = results[0].Length; foreach (string word in results) { Assert.LessOrEqual(word.Length, previousWordLength, $"Expected {word} to have length less than {previousWordLength}, but it has length {word.Length}"); previousWordLength = word.Length; } }
public void Init() { _AnagramFinder = new AnagramFinder(); InputData = FileReader.ReadAllStrings(path); }
public void Works(string s, string p, int[] expected) { IList <int> result = AnagramFinder.FindAnagrams(s, p); result.Should().BeEquivalentTo(expected); }
public static void Main() { AnagramFinder.SetInput(); }
public void TestInitialize() { finder = new AnagramFinder(); validator = new InputValidator(); }
public void Example_ReturnsExpectedList() { #region const string EXAMPLE_HTML = @".... const string EXAMPLE_HTML = @" <!DOCTYPE HTML> <html> <head> <TITLE>The Internet Anagram Server : Anagrams for: nineteen</TITLE> <meta name=""viewport"" content=""width=device-width, initial-scale=1""> <META name=""description"" content=""Discover the magic of anagrams with the Internet Anagram Server""> <META name=""keywords"" content=""internet, anagram, server, pangram, word, fun, hall, fame, wordserver, wordplay, pun, crossword, transmogrification, transmogrify, rearrangement, servant, Inert Net Grave Near Mars, quotations, quotes""> <META name=""author"" content=""Anu Garg (garg AT wordsmith.org)""> <meta http-equiv=Content-Type content=""text/html; charset=windows-1252""> <link href=""/awad/style.css"" type=""text/css"" rel=""stylesheet""> <base href=//wordsmith.org/anagram/> <script src=""/misc.js"" type=""text/javascript""></script> <script type=""text/javascript""> function validate() { document.redirect_form.submit(); return true; } </script> </head> <body bgcolor=""#FFFFFF"" topmargin=""0"" leftmargin=""0"" rightmargin=""0"" marginwidth=""0"" marginheight=""0""> <script async src=""//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js""></script> <script> (adsbygoogle = window.adsbygoogle || []).push({ google_ad_client: ""ca-pub-0068747404870456"", enable_page_level_ads: true }); </script> <script type=""text/javascript""> (function() { var ARTICLE_URL = window.location.href; var CONTENT_ID = 'everything'; document.write( '<scr'+'ipt '+ 'src=""//survey.g.doubleclick.net/survey?site=_ecjxdrc2oz3xrvetrvilu74c7y'+ '&url='+encodeURIComponent(ARTICLE_URL)+ (CONTENT_ID ? '&cid='+encodeURIComponent(CONTENT_ID) : '')+ '&random='+(new Date).getTime()+ '"" type=""text/javascript"">'+'\x3C/scr'+'ipt>'); })(); </script> <!-- ==============================Top Bar================================= --> <topbar> <form name=redirect_form method=""post"" action=""/awad/go.cgi""> <table width=""100%"" cellspacing=""0"" cellpadding=""2"" border=""0"" bgcolor=""#bbbbbb""> <tr> <td class=""topbar"" align=""left"" valign=""middle""><font face=""verdana,arial,sans-serif"" color=""white""> <a href=""/"" class=""homelink""><b>Wordsmith.org</b>: the magic of words</a></font></td> <td align=right valign=middle> <select name=""service"" onChange=""return validate(redirect_form)""> <option value="""">Other Services</option> <option value=""awad"">A.Word.A.Day</option> <option value=""anagram"">Internet Anagram Server</option> <option value=""anagramtimes"">The Anagram Times</option> <option value=""pangram"">Pangram Finder</option> <option value=""board"">Wordsmith Talk</option> <option value=""chat"">Wordsmith Chat</option> <option value=""wordserver"">Wordserver</option> <option value=""listat"">Listat</option> </select> <noscript> <input type=""submit"" value=""Go""> </noscript> </td> </tr> </table> </form> <p> </topbar> <toplinks> <div class=""centered""> <a href=""index.html""><img src=""https://lh6.ggpht.com/wordsmith.org/SDuzuqjcWAI/AAAAAAAAABg/L-KYUA1Yuhc/s800/masthead.gif"" height=""64"" width=""430"" alt=""I, Rearrangement Servant OR Internet Anagram Server"" /></a><br> <A HREF=""about.html"" class=""anagram_menu"">About</A> <A HREF=""advanced.html"" class=""anagram_menu"">Advanced</A> <A HREF=""hof.html"" class=""anagram_menu"">Hall of Fame</A> <A HREF=""anagram-check.html"" class=""anagram_menu"">Checker</a> <A HREF=""animation.html"" class=""anagram_menu"">Animation</A> <A HREF=""odd.html"" class=""anagram_menu"">Odds & Ends</A> <A HREF=""faq.html"" class=""anagram_menu"">FAQ</A> <A HREF=""tips.html"" class=""anagram_menu"">Tips</A> <A HREF=""practical.html"" class=""anagram_menu"">Uses</A> <A HREF=""search.html"" class=""anagram_menu"">Search</A> <a href=""contribute.html"" class=""anagram_menu"">Contribute</a> <A HREF=""feedback.html"" class=""anagram_menu"">Contact</A><br> <A HREF=""https://www.anagramtimes.com/"" class=""anagram_menu"">The Anagram Times</A> </div> <P> </toplinks> <blockquote> <h3> Anagrams for: nineteen</h3> <div class=""p402_premium""> <!-- YOUR PREMIUM CONTENT HERE --> <div class=""p402_hide""> <!-- YOUR OPTIONAL HIDDEN CONTENT HERE --> <p style=""width:220px;float:right;border:1px dotted;border-color:#99CCFF;padding:10px;font-size:10pt;color:#333333""><b>Thought of the Moment</b><br><br>HELP! MY TYPEWRITER IS BROKEN! -E.E. CUMMINGS<br><br><a href=""/awad/subscribe.html"">Receive quotations (and words) in our daily newsletter</a>. It's free.</p> </div> Try <a href=advanced.html>advanced</a> options to fine-tune these anagram results.<p> <script>document.body.style.cursor='wait';</script><b>8 found. Displaying all: </b><br>Nineteen<br> Teen Nine<br> Nee En Tin<br> Nee En Nit<br> Nee Net In<br> Nee Ten In<br> Teen En In<br> Tee En Inn<br> <script>document.body.style.cursor='default';</script></div> <script type=""text/javascript""> try { _402_Show(); } catch(e) {} </script> <bottomlinks> <p><br> <hr noshade align=""center"" size=""1"" width=""265""> <div style=""text-align:center; font-size: 9pt;""> <a href=""new.html"">What's New</a> | <a href=""awards.html"">Awards & Articles</a> | <a href=""siteindex.html"">Site Map</A><br> <a href=""anagrams.html"">Anagrams Found</a> <p> <span style=""color:gray;font-size:8pt;"">© 1994-2018 Wordsmith</span> </div> </bottomlinks> </blockquote> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-32209-1', 'wordsmith.org'); ga('require', 'displayfeatures'); ga('send', 'pageview'); </script> </body> </html> "; #endregion AnagramFinder finder = new AnagramFinder(); var results = finder.ParseResponse(EXAMPLE_HTML); Assert.AreEqual("nineteen", results[0]); Console.WriteLine(string.Join(",", results)); }