Пример #1
0
        public void FormatShouldBeFieldColonQuoteConditionQuote()
        {
            var stringBooleanCondition = new StringBooleanCondition(_field, _condition);
            var output = stringBooleanCondition.GetConditionParam();

            output.ShouldEndWith(string.Format("{0}{1}'{2}'", _field, Uri.EscapeDataString(":"), _condition));
        }
Пример #2
0
        public void ShouldUrlEscapeAColonAfterTheField()
        {
            var stringBooleanCondition = new StringBooleanCondition(_field, _condition);
            var output = stringBooleanCondition.GetConditionParam();

            output.ShouldStartWith(string.Format("{0}{1}", _field, Uri.EscapeDataString(":")));
        }
Пример #3
0
        public void ShouldEncloseTheConditionInQuotes()
        {
            var stringBooleanCondition = new StringBooleanCondition(_field, _condition);
            var output = stringBooleanCondition.GetConditionParam();

            output.ShouldEndWith(string.Format("'{0}'", _condition));
        }
Пример #4
0
        public void NullFieldShouldNotIncludeColon()
        {
            var stringBooleanCondition = new StringBooleanCondition(null, Condition);
            var output = stringBooleanCondition.GetConditionParam();

            output.ShouldEqual(string.Format("'{0}'", Condition));
        }
Пример #5
0
        public void ShouldStartWithTheFieldName()
        {
            var stringBooleanCondition = new StringBooleanCondition(_field, _condition);
            var output = stringBooleanCondition.GetConditionParam();

            output.ShouldStartWith(_field);
        }
Пример #6
0
        public void ShouldUrlEscapeTheValue()
        {
            var stringBooleanCondition = new StringBooleanCondition(Field, " & ");
            var output = stringBooleanCondition.GetConditionParam();

            output.ShouldEndWith(string.Format("'%20%26%20'"));
        }
Пример #7
0
        public void NegatedFormatShouldBeWrappedWithNot()
        {
            var stringBooleanCondition = new StringBooleanCondition(Field, Condition, true);
            var output = stringBooleanCondition.GetConditionParam();

            output.ShouldEndWith(string.Format("(not+{0}{1}'{2}')", Field, Uri.EscapeDataString(":"), Condition));
        }
Пример #8
0
        public void ComplexOrWithList()
        {
            var genres = new List <string> {
                "Sci-Fi", "Fantasy"
            };
            var condition1A = new StringListBooleanCondition("genre", genres, ConditionType.OR);
            var years       = new List <int> {
                1987, 1990, 2010
            };
            var condition1B     = new IntListBooleanCondition("year", years, ConditionType.OR);
            var groupCondition1 = new GroupedCondition(condition1A, ConditionType.AND, condition1B);

            var condition2 = new StringBooleanCondition("director", "doduck");

            var groupConditionAll = new GroupedCondition(groupCondition1, ConditionType.AND, condition2);

            var bQuery = new BooleanQuery();

            bQuery.Conditions.Add(groupConditionAll);

            _searchQuery = new SearchQuery <Movie> {
                BooleanQuery = bQuery
            };
            string query = _queryBuilder.BuildSearchQuery(_searchQuery);

            //query.ShouldNotContain("(and+(and+(and+genre%3A'Sci-Fi'+genre%3A'Fantasy'+year%3A1987+year%3A1990+year%3A2010)+director%3A'doduck'))");

            query.ShouldContain("(and+(and+(or+genre%3A'Sci-Fi'+genre%3A'Fantasy')+(or+year%3A1987+year%3A1990+year%3A2010)+director%3A'doduck'))");
        }
Пример #9
0
        public void ComplexOr()
        {
            var condition1A = new StringBooleanCondition("genre", "Sci-Fi");
            var condition1B = new IntBooleanCondition("year");

            condition1B.SetFrom(1990);
            var groupCondition1 = new GroupedCondition(condition1A, ConditionType.AND, condition1B);

            var condition2A = new StringBooleanCondition("genre", "Fantasy");
            var condition2B = new IntBooleanCondition("year");

            condition2B.SetFrom(2013);
            var groupCondition2 = new GroupedCondition(condition2A, ConditionType.AND, condition2B);

            var groupConditionAll = new GroupedCondition(groupCondition1, ConditionType.OR, groupCondition2);

            var bQuery = new BooleanQuery();

            bQuery.Conditions.Add(groupConditionAll);

            _searchQuery = new SearchQuery <Movie> {
                BooleanQuery = bQuery
            };
            string query = _queryBuilder.BuildSearchQuery(_searchQuery);

            query.ShouldContain("(or+(or+(and+genre%3A'Sci-Fi'+year%3A1990..)+(and+genre%3A'Fantasy'+year%3A2013..)))");
        }
Пример #10
0
        public void ShouldNotAddToOrConditionIfTheConditionIsAnAndCondition()
        {
            var stringBooleanCondition = new StringBooleanCondition("field", "4");

            _booleanQuery.Conditions.Add(stringBooleanCondition);
            _queryBuilder.SplitConditions(_booleanQuery, _listOrConditions, _andConditions);
            _listOrConditions.Count.ShouldEqual(0);
        }
Пример #11
0
        public void ShouldAddToAndConditionIfTheConditionIsAnAndCondition()
        {
            var stringBooleanCondition = new StringBooleanCondition("field", "4");

            _booleanQuery.Conditions.Add(stringBooleanCondition);
            _queryBuilder.SplitConditions(_booleanQuery, _listOrConditions, _andConditions);
            _andConditions.Length.ShouldBeGreaterThan(0);
            _andConditions.ToString().ShouldEqual(string.Format("{0}+", stringBooleanCondition.GetConditionParam()));
        }
Пример #12
0
        public void ShouldAddTheBooleanConditionToTheQuery()
        {
            var searchQuery            = new SearchQuery <Movie>();
            var stringBooleanCondition = new StringBooleanCondition("fooTenant", "fooParameterName");

            _cloudSearch.AddPresistantCondition(stringBooleanCondition);
            var result = _cloudSearch.AddPresistantConditionsToQuery(searchQuery);
            var output = result.BooleanQuery.Conditions;

            output.Count.ShouldEqual(1);
            output[0].GetConditionParam().ShouldEqual(stringBooleanCondition.GetConditionParam());
        }
Пример #13
0
        public void TestSearch()
        {
            var cloudSearch = new CloudSearch <Movie>("YOU_AMAZON_CLOUD_SEARCH_KEY", "2011-02-01");

            //build facet
            var genreFacetContraint = new StringFacetConstraints();

            genreFacetContraint.AddContraint("Sci-Fi");
            genreFacetContraint.AddContraint("Adventure");
            var genreFacet = new Facet {
                Name = "genre", TopResult = 2
            };

            var yearFacetContraint = new IntFacetContraints();

            yearFacetContraint.AddFrom(1950);
            yearFacetContraint.AddInterval(1980, 2012);
            var yearFacet = new Facet {
                Name = "year", FacetContraint = yearFacetContraint
            };

            var liFacet = new List <Facet> {
                genreFacet, yearFacet
            };


            //build boolean query
            var bQuery     = new BooleanQuery();
            var gCondition = new StringBooleanCondition("genre", "Sci-Fi");
            var yCondition = new IntBooleanCondition("year");

            yCondition.SetInterval(1970, 2013);
            bQuery.Conditions.Add(gCondition);
            bQuery.Conditions.Add(yCondition);

            //build search
            var searchQuery = new SearchQuery <Movie> {
                Keyword = "star wars", Facets = liFacet, Size = 20, Start = 0, BooleanQuery = bQuery
            };

            //search
            var found = cloudSearch.Search(searchQuery);

            Assert.IsTrue(!found.IsError);

            Assert.IsTrue(found.hits.found > 0);

            Assert.IsTrue(found.facetsResults.Count > 0);

            Assert.AreEqual(found.facetsResults.Count, 2, "We request only the top 2 facet");
        }
Пример #14
0
        public void OrCondition()
        {
            var conditionA = new StringBooleanCondition("genre", "Sci-Fi");
            var conditionB = new IntBooleanCondition("year");

            conditionB.SetFrom(2013);

            var groupCondition = new GroupedCondition(conditionA, ConditionType.OR, conditionB);
            var bQuery         = new BooleanQuery();

            bQuery.Conditions.Add(groupCondition);

            _searchQuery = new SearchQuery <Movie> {
                BooleanQuery = bQuery
            };
            string query = _queryBuilder.BuildSearchQuery(_searchQuery);

            query.ShouldContain("(or+(or+genre%3A'Sci-Fi'+year%3A2013..))");
        }