コード例 #1
0
        public void TestTreePrefixSearch()
        {
            TernaryTreeExtended <string> tree = new TernaryTreeExtended <string>();
            var InputKeys = "aback abacus abalone abandon abase abash abate abbas abbe abbey abbot Abbott".ToLower().Split(' ');

            foreach (var key in InputKeys)
            {
                tree.Add(key, "value of " + key);
            }

            {
                var matches = tree.PrefixMatch("ab");
                int count   = getCount(matches);
                Assert.AreEqual(InputKeys.Length, count);
            }

            {
                var matches = tree.PrefixMatch("aba");
                int count   = getCount(matches);
                Assert.AreEqual(7, count);
            }

            {
                var matches = tree.PrefixMatch("abb");
                int count   = getCount(matches);
                Assert.AreEqual(5, count);
            }

            {
                var matches = tree.PrefixMatch("XXX");
                int count   = getCount(matches);
                Assert.AreEqual(0, count);
            }
        }
コード例 #2
0
        public void TestAddingNullKeysInTree()
        {
            TernaryTreeExtended<string> tree = new TernaryTreeExtended<string>();
            try
            {
                tree.Add(null, null);
                Assert.Fail("null key allowed.");

            }
            catch (InvalidOperationException e)
            {
                Assert.AreEqual("Keys cannot be null or empty.", e.Message);
            }

            try
            {
                tree.Add("", null);
                Assert.Fail("empty key allowed.");
            }
            catch (InvalidOperationException e)
            {
                Assert.AreEqual("Keys cannot be null or empty.", e.Message);
            }

            Assert.AreEqual(0, tree.Length);

            tree.Add(" ", "white space");
            Assert.AreEqual(1, tree.Length);
            tree.Add(" a ", "another key with space");
            Assert.AreEqual("white space", tree[" "][0]);
        }
コード例 #3
0
        public void TestAddingNullKeysInTree()
        {
            TernaryTreeExtended <string> tree = new TernaryTreeExtended <string>();

            try
            {
                tree.Add(null, null);
                Assert.Fail("null key allowed.");
            }
            catch (InvalidOperationException e)
            {
                Assert.AreEqual("Keys cannot be null or empty.", e.Message);
            }

            try
            {
                tree.Add("", null);
                Assert.Fail("empty key allowed.");
            }
            catch (InvalidOperationException e)
            {
                Assert.AreEqual("Keys cannot be null or empty.", e.Message);
            }

            Assert.AreEqual(0, tree.Length);

            tree.Add(" ", "white space");
            Assert.AreEqual(1, tree.Length);
            tree.Add(" a ", "another key with space");
            Assert.AreEqual("white space", tree[" "][0]);
        }
コード例 #4
0
 public void TestAddingNullValuesInTree()
 {
     TernaryTreeExtended<string> tree = new TernaryTreeExtended<string>();
     tree.Add("Key1", null);
     Assert.AreEqual(1, tree.Length);
     Assert.IsNull(tree["Key1"][0]);
     Assert.IsTrue(tree.Contains("Key1"));
 }
コード例 #5
0
        static void Main(string[] args)
        {
            GC_MemoryStart = System.GC.GetTotalMemory(true);
            TernaryTreeExtended <int> tree = new TernaryTreeExtended <int>();

            var lines = File.ReadAllLines("../../resources/sa.txt");

            for (int i = 0; i < lines.Length; i++)
            {
                var line = lines[i];

                var words = GetWords(line);
                foreach (var word in words)
                {
                    tree.Add(word.Trim(), i);
                }
            }

            GC_MemoryEnd = System.GC.GetTotalMemory(true);

            Console.WriteLine("========================");
            Console.WriteLine(ConvertBytesToMegabytes(GC_MemoryEnd - GC_MemoryStart) + " mb in use");
            Console.WriteLine("========================");

            Console.WriteLine();
            Console.WriteLine("Enter a search term.");
            Console.WriteLine("--------------------");

            string input;

            while ((input = Console.ReadLine()) != "xx")
            {
                var words = GetWords(input.ToLower());
                IEnumerable <int> results = null;
                foreach (var w in words)
                {
                    if (results != null)
                    {
                        results = System.Linq.Enumerable.Intersect(results, tree.Search(w));
                    }
                    else
                    {
                        results = tree.Search(w);
                    }
                }


                foreach (var r in results)
                {
                    Console.WriteLine(lines[r]);
                }

                Console.WriteLine();
                Console.WriteLine("Enter a search term.");
                Console.WriteLine("--------------------");
                Console.WriteLine();
            }
        }
コード例 #6
0
        public void TestAddingNullValuesInTree()
        {
            TernaryTreeExtended <string> tree = new TernaryTreeExtended <string>();

            tree.Add("Key1", null);
            Assert.AreEqual(1, tree.Length);
            Assert.IsNull(tree["Key1"][0]);
            Assert.IsTrue(tree.Contains("Key1"));
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: gaiaing/TernaryTree
        static void Main(string[] args)
        {
            GC_MemoryStart = System.GC.GetTotalMemory(true);
            TernaryTreeExtended<int> tree = new TernaryTreeExtended<int>();

            var lines = File.ReadAllLines("../../resources/sa.txt");

            for (int i = 0; i < lines.Length; i++)
            {
                var line = lines[i];

                var words = GetWords(line);
                foreach (var word in words)
                {
                    tree.Add(word.Trim(), i);
                }

            }

            GC_MemoryEnd = System.GC.GetTotalMemory(true);

            Console.WriteLine("========================");
            Console.WriteLine(ConvertBytesToMegabytes(GC_MemoryEnd - GC_MemoryStart) + " mb in use");
            Console.WriteLine("========================");

            Console.WriteLine();
            Console.WriteLine("Enter a search term.");
            Console.WriteLine("--------------------");

            string input;
            while ((input = Console.ReadLine()) != "xx")
            {

                var words = GetWords(input.ToLower());
                IEnumerable<int> results = null;
                foreach (var w in words) {
                    if (results != null)
                    {
                        results = System.Linq.Enumerable.Intersect(results, tree.Search(w));
                    }
                    else
                    {
                        results = tree.Search(w);
                    }
                }

                foreach (var r in results)
                {
                    Console.WriteLine(lines[r]);
                }

                Console.WriteLine();
                Console.WriteLine("Enter a search term.");
                Console.WriteLine("--------------------");
                Console.WriteLine();
            }
        }
コード例 #8
0
        public void TestAddingDuplicateKeysInTree()
        {
            TernaryTreeExtended <string> tree = new TernaryTreeExtended <string>();

            tree.Add("Key1", "value1");
            Assert.AreEqual(1, tree.Length);
            Assert.AreEqual("value1", tree["Key1"][0]);

            tree.Add("Key1", "value2");
            Assert.AreEqual(1, tree.Length);
            Assert.AreEqual("value2", tree["Key1"][1]);
        }
コード例 #9
0
        public void TestAddingDuplicateKeysInTree()
        {
            TernaryTreeExtended<string> tree = new TernaryTreeExtended<string>();

            tree.Add("Key1", "value1");
            Assert.AreEqual(1, tree.Length);
            Assert.AreEqual("value1", tree["Key1"][0]);

            tree.Add("Key1", "value2");
            Assert.AreEqual(1, tree.Length);
            Assert.AreEqual("value2", tree["Key1"][1]);
        }
コード例 #10
0
        static void populateTree()
        {
            tree = new TernaryTreeExtended <int>();
            string fileName = HttpContext.Current.Server.MapPath("~/App_Code/sa.txt");

            lines = File.ReadAllLines(fileName);

            for (int i = 0; i < lines.Length; i++)
            {
                var line = lines[i];

                var words = GetWords(line);
                foreach (var word in words)
                {
                    tree.Add(word.Trim(), i);
                }
            }
        }
コード例 #11
0
        public void TestTreePrefixSearchForValues()
        {
            TernaryTreeExtended <string> tree = new TernaryTreeExtended <string>();
            var InputKeys = "aback abacus abalone abandon abase abash abate abbas abbe abbey abbot Abbott".ToLower().Split(' ');

            foreach (var key in InputKeys)
            {
                tree.Add(key, "value of " + key);
            }

            {
                var matches = tree.Search("ab");
                int count   = getCount(matches);
                Assert.AreEqual(12, count);
                int i = 0;
                foreach (var val in matches)
                {
                    Assert.AreEqual("value of " + InputKeys[i++], val);
                }
            }
        }
コード例 #12
0
        public void TestTreeWildCardSearch()
        {
            TernaryTreeExtended <string> tree = new TernaryTreeExtended <string>();
            var InputKeys = "aback abacus abalone abandon abase abash abate abbas abbe abbey abbot Abbott".ToLower().Split(' ');

            foreach (var key in InputKeys)
            {
                tree.Add(key, "value of " + key);
            }

            {
                var matches = tree.WildcardMatch("...cus");
                int count   = getCount(matches);
                Assert.AreEqual(1, count);
            }

            {
                var matches = tree.WildcardMatch("....y");
                int count   = getCount(matches);
                Assert.AreEqual(1, count);
            }

            {
                var matches = tree.WildcardMatch("a.b.t.");
                int count   = getCount(matches);
                Assert.AreEqual(1, count);
            }

            {
                var matches = tree.WildcardMatch("aba....");
                int count   = getCount(matches);
                Assert.AreEqual(2, count);
            }

            {
                var matches = tree.WildcardMatch("..a..");
                int count   = getCount(matches);
                Assert.AreEqual(4, count);
            }
        }
コード例 #13
0
ファイル: Global.asax.cs プロジェクト: gaiaing/TernaryTree
        static void populateTree()
        {
            tree = new TernaryTreeExtended<int>();
            string fileName = HttpContext.Current.Server.MapPath("~/App_Code/sa.txt");
            lines = File.ReadAllLines(fileName);

            for (int i = 0; i < lines.Length; i++)
            {
                var line = lines[i];

                var words = GetWords(line);
                foreach (var word in words)
                {
                    tree.Add(word.Trim(), i);
                }

            }
        }
コード例 #14
0
        public void TestTreePrefixSearch()
        {
            TernaryTreeExtended<string> tree = new TernaryTreeExtended<string>();
            var InputKeys = "aback abacus abalone abandon abase abash abate abbas abbe abbey abbot Abbott".ToLower().Split(' ');
            foreach (var key in InputKeys)
            {
                tree.Add(key, "value of " + key);
            }

            {
                var matches = tree.PrefixMatch("ab");
                int count = getCount(matches);
                Assert.AreEqual(InputKeys.Length, count);
            }

            {
                var matches = tree.PrefixMatch("aba");
                int count = getCount(matches);
                Assert.AreEqual(7, count);
            }

            {
                var matches = tree.PrefixMatch("abb");
                int count = getCount(matches);
                Assert.AreEqual(5, count);
            }

            {
                var matches = tree.PrefixMatch("XXX");
                int count = getCount(matches);
                Assert.AreEqual(0, count);
            }
        }
コード例 #15
0
        public void TestTreeWildCardSearch()
        {
            TernaryTreeExtended<string> tree = new TernaryTreeExtended<string>();
            var InputKeys = "aback abacus abalone abandon abase abash abate abbas abbe abbey abbot Abbott".ToLower().Split(' ');
            foreach (var key in InputKeys)
            {
                tree.Add(key, "value of " + key);
            }

            {
                var matches = tree.WildcardMatch("...cus");
                int count = getCount(matches);
                Assert.AreEqual(1, count);
            }

            {
                var matches = tree.WildcardMatch("....y");
                int count = getCount(matches);
                Assert.AreEqual(1, count);
            }

            {
                var matches = tree.WildcardMatch("a.b.t.");
                int count = getCount(matches);
                Assert.AreEqual(1, count);
            }

            {
                var matches = tree.WildcardMatch("aba....");
                int count = getCount(matches);
                Assert.AreEqual(2, count);
            }

            {
                var matches = tree.WildcardMatch("..a..");
                int count = getCount(matches);
                Assert.AreEqual(4, count);
            }
        }
コード例 #16
0
        public void TestTreePrefixSearchForValues()
        {
            TernaryTreeExtended<string> tree = new TernaryTreeExtended<string>();
            var InputKeys = "aback abacus abalone abandon abase abash abate abbas abbe abbey abbot Abbott".ToLower().Split(' ');
            foreach (var key in InputKeys)
            {
                tree.Add(key, "value of " + key);
            }

            {
                var matches = tree.Search("ab");
                int count = getCount(matches);
                Assert.AreEqual(12, count);
                int i = 0;
                foreach (var val in matches)
                {
                    Assert.AreEqual("value of " + InputKeys[i++], val);
                }
            }
        }