Beispiel #1
0
        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);
        }
Beispiel #2
0
        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
        }
Beispiel #3
0
        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()));
            }
        }
Beispiel #4
0
        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()));
            }
        }