public void Example_FindsExpectedWords()
            {
                AnagramFinder finder  = new AnagramFinder();
                List <string> results = finder.FindAnagram("teen nine");

                Assert.AreEqual("nineteen", results[0]);
            }
Exemple #2
0
        public void TestEmptyListE()
        {
            af = new AnagramFinder();
            List <List <String> > emptyListE = af.FindAllAnagramsWithDuplicateLetters(new List <String>());

            Assert.AreEqual(0, emptyListE.Count);
        }
Exemple #3
0
        public void AnagramTester_CanAcceptInput_String()
        {
            string        testString1 = "Poorly";
            AnagramFinder testFinder  = new AnagramFinder(testString1);

            Assert.AreEqual(testString1, testFinder.GetString());
        }
Exemple #4
0
        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();
        }
Exemple #5
0
        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();
        }
Exemple #6
0
        public void ShouldReturnEmptyListIfThereAreNoAnagrams(List <string> words)
        {
            var anagramFinder = new AnagramFinder();

            var result = anagramFinder.FindAnagrams(words);

            Assert.Empty(result.Anagrams);
        }
Exemple #7
0
        public void ShouldFindAnagrams(List <string> words)
        {
            var anagramFinder = new AnagramFinder();

            var result = anagramFinder.FindAnagrams(words);

            Assert.NotEmpty(result.Anagrams);
        }
Exemple #8
0
        public void TestNoAnagrams()
        {
            af = new AnagramFinder();
            List <String> list = new List <String> {
                "bee", "ebbc"
            };

            Assert.AreEqual(1, af.FindAllAnagramsWithDuplicateLetters(list).Count);
        }
Exemple #9
0
        public void TestSingleWord()
        {
            af = new AnagramFinder();
            List <String> list = new List <String> {
                "fish"
            };

            Assert.AreEqual(0, af.FindAllAnagramsWithDuplicateLetters(list).Count);
        }
Exemple #10
0
        public void TestNullListE()
        {
            af = new AnagramFinder();

            var actual = Assert.ThrowsException <ArgumentException>(() =>
                                                                    af.FindAllAnagramsWithDuplicateLetters(null));

            Assert.AreEqual(actual.Message, "Param 'wordList' is null or empty");
        }
Exemple #11
0
        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);
            }
Exemple #13
0
        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);
        }
Exemple #14
0
        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());
        }
Exemple #15
0
        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);
        }
Exemple #19
0
        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);
        }
Exemple #20
0
        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();
        }
Exemple #21
0
        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();
            }
        }
Exemple #22
0
        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);
    }
Exemple #26
0
 public static void Main()
 {
     AnagramFinder.SetInput();
 }
Exemple #27
0
 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'+
    '&amp;url='+encodeURIComponent(ARTICLE_URL)+
    (CONTENT_ID ? '&amp;cid='+encodeURIComponent(CONTENT_ID) : '')+
    '&amp;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"">&nbsp; <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""> &nbsp;
      </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&nbsp;&amp;&nbsp;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 &amp; Articles</a> |
<a href=""siteindex.html"">Site&nbsp;Map</A><br>
<a href=""anagrams.html"">Anagrams Found</a>
<p>
<span style=""color:gray;font-size:8pt;"">&copy; 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));
            }