Esempio n. 1
0
 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"));
 }
Esempio n. 2
0
        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);
                }
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 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"));
 }
Esempio n. 5
0
 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"));
 }
Esempio n. 6
0
 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"));
 }
Esempio n. 7
0
 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'));
 }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
            }
        }