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]); }
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]); }
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]); }
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]); }
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); } }
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")); }
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(); } }
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")); }
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(); } }
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); } } }
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); } } }
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); } }
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); } } }
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); } }
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); } }
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); } } }