public void IsAnagram() { Assert.IsTrue(LinkTypes.IsAnagram("bat", "tab")); Assert.IsTrue(LinkTypes.IsAnagram("angel", "angle")); Assert.IsFalse(LinkTypes.IsAnagram("cat", "angle")); Assert.IsFalse(LinkTypes.IsAnagram("cat", "cat")); }
public void AddWord(Word word) { if (words.Contains(word)) { return; } words.Add(word); // Check if word can be linked to others foreach (Word other in words) { if (LinkTypes.IsOneLetterChange(word.Text, other.Text)) { Link link = new Link(word, other, LinkType.OneLetterChange); AddLink(link); } if (LinkTypes.IsOneLetterAddOrRemove(word.Text, other.Text)) { Link link = new Link(word, other, LinkType.OneLetterAddOrRemove); AddLink(link); } if (LinkTypes.IsAnagram(word.Text, other.Text)) { Link link = new Link(word, other, LinkType.Anagram); AddLink(link); } } }
public void CompareLetterCount() { LinkTypes.LetterCounter letterCount1 = LinkTypes.CountLetters("system"); LinkTypes.LetterCounter letterCount2 = LinkTypes.CountLetters("system"); System.Console.WriteLine(letterCount1.ToString()); Assert.AreEqual(letterCount1, letterCount2); letterCount1 = LinkTypes.CountLetters("system"); letterCount2 = LinkTypes.CountLetters("sytem"); System.Console.WriteLine(letterCount1.ToString()); Assert.AreNotEqual(letterCount1, letterCount2); letterCount1 = LinkTypes.CountLetters("system"); letterCount2 = LinkTypes.CountLetters("yetmss"); System.Console.WriteLine(letterCount1.ToString()); Assert.AreEqual(letterCount1, letterCount2); letterCount1 = LinkTypes.CountLetters("abc"); letterCount2 = LinkTypes.CountLetters("cde"); System.Console.WriteLine(letterCount1.ToString()); Assert.AreNotEqual(letterCount1, letterCount2); letterCount1 = LinkTypes.CountLetters("abcd"); letterCount2 = LinkTypes.CountLetters("aaaa"); System.Console.WriteLine(letterCount1.ToString()); Assert.AreNotEqual(letterCount1, letterCount2); }
public void IsOneLetterRemove() { Assert.IsTrue(LinkTypes.IsOneLetterRemove("pain", "pan")); Assert.IsTrue(LinkTypes.IsOneLetterRemove("cart", "car")); Assert.IsFalse(LinkTypes.IsOneLetterRemove("cat", "bite")); Assert.IsFalse(LinkTypes.IsOneLetterRemove("straw", "raw")); Assert.IsFalse(LinkTypes.IsOneLetterRemove("cat", "cat")); }
public void IsOneLetterChange() { Assert.IsTrue(LinkTypes.IsOneLetterChange("moon", "moan")); Assert.IsTrue(LinkTypes.IsOneLetterChange("cart", "care")); Assert.IsFalse(LinkTypes.IsOneLetterChange("cat", "bit")); Assert.IsFalse(LinkTypes.IsOneLetterChange("cat", "angle")); Assert.IsFalse(LinkTypes.IsOneLetterChange("cat", "cat")); }
public void FromString1() { Assert.AreEqual(LinkType.OneLetterChange, LinkTypes.FromString("OneLetterChange")); Assert.AreEqual(LinkType.OneLetterAddOrRemove, LinkTypes.FromString("OneLetterAddOrRemove")); Assert.AreEqual(LinkType.Anagram, LinkTypes.FromString("Anagram")); Assert.AreEqual(LinkType.Synonym, LinkTypes.FromString("Synonym")); Assert.AreEqual(LinkType.Antonym, LinkTypes.FromString("Antonym")); Assert.AreEqual(LinkType.WordAssociation, LinkTypes.FromString("WordAssociation")); Assert.ThrowsException <System.Exception>(() => LinkTypes.FromString("Wrong")); }
public void CountLetters() { LinkTypes.LetterCounter letterCount = LinkTypes.CountLetters("system"); Assert.AreEqual(2, letterCount.CountFor('s')); Assert.AreEqual(1, letterCount.CountFor('y')); Assert.AreEqual(1, letterCount.CountFor('t')); Assert.AreEqual(1, letterCount.CountFor('e')); Assert.AreEqual(1, letterCount.CountFor('m')); Assert.AreEqual(0, letterCount.CountFor('a')); Assert.AreEqual(0, letterCount.CountFor('b')); }
public static WordDatabase Deserialize(TextReader reader) { WordDatabase db = new WordDatabase(); reader.ReadLine(); foreach (string word in reader.ReadLine().Split(',')) { db.AddWord(word.Trim()); } reader.ReadLine(); reader.ReadLine(); while (reader.Peek() >= 0) { string[] tokens = reader.ReadLine().Split(' '); db.AddLink(new Link(new Word(tokens[0]), new Word(tokens[1]), LinkTypes.FromString(tokens[2]))); } return(db); }
public Link(Word wordA, Word wordB, LinkType type) { this.WordA = wordA; this.WordB = wordB; this.Type = type; if (type == LinkType.Anagram && !LinkTypes.IsAnagram(WordA.Text, WordB.Text)) { throw new Exception(WordA.Text + " is not an anagram of " + WordB.Text); } if (type == LinkType.OneLetterChange && !LinkTypes.IsOneLetterChange(WordA.Text, WordB.Text)) { throw new Exception(WordA.Text + " is not a letter change from " + WordB.Text); } if (type == LinkType.OneLetterAddOrRemove && !LinkTypes.IsOneLetterAddOrRemove(WordA.Text, WordB.Text)) { throw new Exception(WordA.Text + " is not a letter additon or subtraction to " + WordB.Text); } }