public void TestAlphabet() { var alphabet = new AlphabetGenerator <string>(new [] { "0", "1" }, "", (s, s1) => s + s1); var result = alphabet.EnumerateWords(3); var expected = new[] { "", "0", "1", "00", "01", "10", "11", "000", "001", "010", "011", "100", "101", "110", "111" }; CollectionAssert.AreEquivalent(expected, result.ToList()); }
public void TestForwardTree() { var tree = new ForwardLinkedTree <string>(""); var words = new AlphabetGenerator <string>(new[] { "0", "1" }, "", (s, s1) => s + s1).EnumerateWords(4).ToList(); var processed = words.Count; while (words.Count > 0) { var word = GetRandom(words); words.Remove(word); tree.Insert(word, new TreeComparer()); } var q = new Queue <ITreeNode <string> >(); q.Enqueue(tree.Root); while (q.Count > 0) { processed--; var word = q.Dequeue(); if (word.Value.Length < 4) { Assert.IsTrue(word.Children.Any(c => c.Value == word.Value + "0")); Assert.IsTrue(word.Children.Any(c => c.Value == word.Value + "1")); } foreach (var child in word.Children) { q.Enqueue(child); } } Assert.AreEqual(0, processed); }