public void SearchEngine_SearchExpression_InvalidExpression() { var searchFilter = new Framework.Node() { Data = "**", Left = new Framework.Node() { Data = "Today" }, Right = new Framework.Node() { Data = "Sunday" }, }; var dataset = new List <string>() { "Today is Sunday", "Today is not Monday", "Tomorrow is Tuesday", "Tomorrow isn't Wednesday" }; var searchEngine = new Framework.SearchEngine(dataset: dataset); Assert.ThrowsException <ArgumentException>(() => { searchEngine.Search(searchFilter: searchFilter); }); }
public void SearchEngine_SearchExpression_TodayANDSunday() { var searchFilter = new Framework.Node() { Data = "&&", Left = new Framework.Node() { Data = "Today" }, Right = new Framework.Node() { Data = "Sunday" }, }; var dataset = new List <string>() { "Today is Sunday", "Today is not Monday", "Tomorrow is Tuesday", "Tomorrow isn't Wednesday" }; var searchEngine = new Framework.SearchEngine(dataset: dataset); var indices = searchEngine.Search(searchFilter: searchFilter); Assert.AreEqual(expected: 1, actual: indices.Count); Assert.AreEqual(expected: 0, actual: indices[0]); Assert.AreEqual(expected: "Today is Sunday", actual: dataset[indices[0]]); }
public void SearchEngine_SearchExpression_TodayANDSunday_OR_NotORTomorow() { var leftSubExpression = new Framework.Node() { Data = "&&", Left = new Framework.Node() { Data = "Today" }, Right = new Framework.Node() { Data = "Sunday" }, }; var rightSubExpression = new Framework.Node() { Data = "||", Left = new Framework.Node() { Data = "not" }, Right = new Framework.Node() { Data = "Tomorrow" }, }; var searchFilter = new Framework.Node() { Data = "||", Left = leftSubExpression, Right = rightSubExpression, }; var dataset = new List <string>() { "Today is Sunday", "Today is not Monday", "Tomorrow is Tuesday", "Tomorrow isn't Wednesday" }; var searchEngine = new Framework.SearchEngine(dataset: dataset); var indices = searchEngine.Search(searchFilter: searchFilter); Assert.AreEqual(expected: 4, actual: indices.Count); Assert.AreEqual(expected: 0, actual: indices[0]); Assert.AreEqual(expected: 1, actual: indices[1]); Assert.AreEqual(expected: 2, actual: indices[2]); Assert.AreEqual(expected: 3, actual: indices[3]); Assert.AreEqual(expected: "Today is Sunday", actual: dataset[indices[0]]); Assert.AreEqual(expected: "Today is not Monday", actual: dataset[indices[1]]); Assert.AreEqual(expected: "Tomorrow is Tuesday", actual: dataset[indices[2]]); Assert.AreEqual(expected: "Tomorrow isn't Wednesday", actual: dataset[indices[3]]); }
public void SearchEngine_SearchExpression_SingleWordNotExist() { var searchFilter = new Framework.ExpressionTree( new Framework.Node() { Data = "Friday", Left = null, Right = null, }); var dataset = new List <string>() { "Today is Sunday", "Today is not Monday", "Tomorrow is Tuesday", "Tomorrow isn't Wednesday" }; var searchEngine = new Framework.SearchEngine(dataset: dataset); var indices = searchEngine.Search(searchFilter: searchFilter.Root); Assert.AreEqual(expected: 0, actual: indices.Count); }