void DoAddNodesTest <T>(DictRadix <T> d, DataGeneratorFunc dataGenerator) { int counter = 0; // Try adding one node... AddAndIncrement(d, "abcdef", (T)dataGenerator(), ref counter); // And another AddAndIncrement(d, "azfwasf", (T)dataGenerator(), ref counter); // Adding this node will require the radix to split a leaf AddAndIncrement(d, "abf", (T)dataGenerator(), ref counter); // Now add a leaf under that new leaf AddAndIncrement(d, "abfeeee", (T)dataGenerator(), ref counter); // Add a new leaf under the root AddAndIncrement(d, "bcdef", (T)dataGenerator(), ref counter); // Simple node addition AddAndIncrement(d, "abcdefg", (T)dataGenerator(), ref counter); // Re-root operation AddAndIncrement(d, "a", (T)dataGenerator(), ref counter); // Add a new leaf node after re-rooting AddAndIncrement(d, "agga", (T)dataGenerator(), ref counter); // Do all that backwards - add leafs in a sequential order AddAndIncrement(d, "c", (T)dataGenerator(), ref counter); AddAndIncrement(d, "cb", (T)dataGenerator(), ref counter); AddAndIncrement(d, "cbd", (T)dataGenerator(), ref counter); AddAndIncrement(d, "cbdefg", (T)dataGenerator(), ref counter); AddAndIncrement(d, "cbdefghij", (T)dataGenerator(), ref counter); // And break that order AddAndIncrement(d, "czzzzij", (T)dataGenerator(), ref counter); AddAndIncrement(d, "czzzzija", (T)dataGenerator(), ref counter); AddAndIncrement(d, "czzzzijabcde", (T)dataGenerator(), ref counter); // Test overriding an item - value should not change AddAndIncrement(d, "abf", (T)dataGenerator(), ref counter); // Test overriding an item with AllowValueOverride set to true d.AllowValueOverride = true; AddAndIncrement(d, "abf", (T)dataGenerator(), ref counter); // Verify the cached counter equals to the count of elements retrieved by actual enumeration, // and that the nodes are alphabetically sorted int enCount = 0; string nodeText = string.Empty; var en = d.GetEnumerator() as DictRadix <T> .RadixEnumerator; while (en.MoveNext()) { Assert.True(string.Compare(nodeText, en.CurrentKey, StringComparison.Ordinal) < 0); nodeText = en.CurrentKey; enCount++; } Assert.Equal(counter, enCount); }
public void VerifyAllWordsAreLoaded() { int WordsCount = HSpell.Loader.GetWordCountInHSpellFolder(hspellPath); DictRadix <MorphData> d = HSpell.Loader.LoadDictionaryFromHSpellFolder(hspellPath, true); Assert.Equal(WordsCount, d.Count); // Compare expected words count with the cached counter // Verify the cached counter equals to the count of elements retrieved by actual enumeration, // and that the nodes are alphabetically sorted int enCount = 0; string nodeText = string.Empty; DictRadix <MorphData> .RadixEnumerator en = d.GetEnumerator() as DictRadix <MorphData> .RadixEnumerator; while (en.MoveNext()) { Assert.True(string.Compare(nodeText, en.CurrentKey, StringComparison.Ordinal) < 0); nodeText = en.CurrentKey; enCount++; } Assert.Equal(WordsCount, enCount); // Compare expected words count with count yielded by iteration }
private void btnTestRadix_Click(object sender, EventArgs e) { DictRadix <object> r = new DictRadix <object>();; r.AddNode("abcdef", 5); r.AddNode("ab", 11); r.AddNode("abcd", 115); r.AddNode("aaa", 41); r.AddNode("abc", 111); r.AddNode("a", 101); r.AddNode("bba", 22); r.AddNode("bbc", 22); r.AddNode("bb", 221); r.AddNode("def", 22); r.AddNode("deg", 33); r.AddNode("deg", 33); r.AddNode("cfg", 3222); DictRadix <object> .RadixEnumerator en = r.GetEnumerator() as DictRadix <object> .RadixEnumerator; while (en.MoveNext()) { System.Diagnostics.Trace.WriteLine(string.Format("{0} {1}", en.CurrentKey, en.Current.ToString())); } }
private void btnTestRadix_Click(object sender, EventArgs e) { DictRadix<object> r = new DictRadix<object>(); ; r.AddNode("abcdef", 5); r.AddNode("ab", 11); r.AddNode("abcd", 115); r.AddNode("aaa", 41); r.AddNode("abc", 111); r.AddNode("a", 101); r.AddNode("bba", 22); r.AddNode("bbc", 22); r.AddNode("bb", 221); r.AddNode("def", 22); r.AddNode("deg", 33); r.AddNode("deg", 33); r.AddNode("cfg", 3222); DictRadix<object>.RadixEnumerator en = r.GetEnumerator() as DictRadix<object>.RadixEnumerator; while (en.MoveNext()) { System.Diagnostics.Trace.WriteLine(string.Format("{0} {1}", en.CurrentKey, en.Current.ToString())); } }