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