Example #1
0
        public void TheProblem_OverlapWithPartOfItself()
        {
            // Content 3: aa bb cc dd ee ff ee dd cc bb aa aa bb cc dd
            // Content 4: aa bb cc dd cc
            // Content 5: cc dd ee ff

            Console.WriteLine("dd ee * ee");

            // dd ee * ee => (dd ee) * (ee)  does not work as expected
            var lm = MakeSpan(0, dd, ee);
            var rm = MakeSpan(0, ee);
            var q1 = MakeSpan(1, lm, rm);

            TestIndex.AssertQuery(q1, 3, 5);

            // dd ee * ee => dd (ee * ee) works, but only because nothing follows the last ee
            var q2 = MakeSpan(0, dd, MakeSpan(1, ee, ee));

            TestIndex.AssertQuery(q2, 3);

            // (dd ee) * (ee - (dd ee))
            var not = new SpanNotQuery(ee, MakeSpan(0, dd, ee));
            var q3  = MakeSpan(1, lm, not);

            TestIndex.AssertQuery(q3, 3);
        }
Example #2
0
        public void OverlappingSpans_Part3()
        {
            // If you rewrite it as (cc (dd ** (dd cc))) it matches only 4!
            Console.WriteLine("(cc (dd ** (dd cc)))");
            var q3 = MakeSpan(0, cc, MakeSpan(16, dd, MakeSpan(0, dd, cc)));

            TestIndex.AssertQuery(q3, 4);
        }
Example #3
0
        public void OverlappingSpans_Part2()
        {
            // If you rewrite the query as (cc (dd ** dd) cc) it doesn't work at all
            // because the inner match is to great
            var gap = MakeSpan(16, dd, dd);
            var q2  = MakeSpan(0, cc, gap, cc);

            TestIndex.AssertQuery(q2);
        }
Example #4
0
 public void DeletedFile_FoundInRevision6to8()
 {
     TestIndex.AssertQueryFromRevision(int.MaxValue, "p:deleted.cpp"); // HEAD should find nothing
     TestIndex.AssertQueryFromRevision(0, "p:deleted.cpp", 25);        // ALL should find it
     TestIndex.AssertQueryFromRevision(5, "p:deleted.cpp");
     TestIndex.AssertQueryFromRevision(6, "p:deleted.cpp", 25);
     TestIndex.AssertQueryFromRevision(7, "p:deleted.cpp", 25);
     TestIndex.AssertQueryFromRevision(8, "p:deleted.cpp", 25);
     TestIndex.AssertQueryFromRevision(9, "p:deleted.cpp");
 }
Example #5
0
        public void OverlappingSpans_Part1()
        {
            // A SpanQuery clause can overlap its preceding clause if its
            // slope is greater than 0
            // In the following example ((cc dd) ** (dd cc)) matches content 3 and 4!
            var lm = MakeSpan(0, cc, dd);
            var rm = MakeSpan(0, dd, cc);
            var q1 = MakeSpan(16, lm, rm);

            TestIndex.AssertQuery(q1, 3, 4);
        }
Example #6
0
        public void OverlappingSpans_Part5()
        {
            // Interestingly, the following does not work with SpanNotQueries
            // dd ee * ee => ((dd ee) - ee) * ee never matches because the
            // first span (dd ee) always overlaps with ee
            var span = MakeSpan(0, dd, ee);

            TestIndex.AssertQuery(span, 3, 5);
            var q5 = new SpanNotQuery(span, ee);

            TestIndex.AssertQuery(q5);
        }
Example #7
0
        public void OverlappingSpans_Part4()
        {
            var lm = MakeSpan(0, cc, dd);
            var rm = MakeSpan(0, dd, cc);

            // Rewriting with SpanNotQueries works!
            Console.WriteLine("((cc dd) - (dd cc)) ** (dd cc)");
            var not = new SpanNotQuery(lm, rm);
            var q4  = MakeSpan(16, not, rm);

            TestIndex.AssertQuery(q4, 3);

            // This is now implemented int the parser
            TestIndex.AssertQuery(Content("cc dd ** dd cc"), 3);
        }
Example #8
0
        public void OverlappingSpans_Part6()
        {
            // But the reverse ways of excluding spans works
            // (dd ee * ee) => (dd ee) * (ee -(dd ee))
            var span = MakeSpan(0, dd, ee);
            var not  = new SpanNotQuery(ee, span);
            var q6   = MakeSpan(1, span, not);

            TestIndex.AssertQuery(q6, 3);

            // The parser now implements this strategy
            var q = Content("dd ee * ee");

            TestIndex.AssertQuery(Content("dd ee * ee"), 3);
        }
Example #9
0
        public void TrailingGap()
        {
            Hits a = TestIndex.SearchHeadRevision(PathQuery("/general/**"));
            Hits b = TestIndex.SearchHeadRevision(PathQuery("/general/"));

            Assert.That(a.Length() == b.Length());

            HashSet <string> aa = new HashSet <string>();
            HashSet <string> bb = new HashSet <string>();

            for (int i = 0; i < a.Length(); ++i)
            {
                aa.Add(a.Doc(i).Get(FieldName.Id));
                bb.Add(b.Doc(i).Get(FieldName.Id));
            }
            Assert.That(aa.SetEquals(bb), Is.True);
        }
Example #10
0
 public void SingleGap()
 {
     TestIndex.AssertQuery(PathQuery("/shared/general/FileIO/*.xml"), 4);
 }
Example #11
0
 public void SomePathInFixedExternals()
 {
     TestIndex.AssertQueryFromHeadRevision("x:products/internal", 16);
 }
Example #12
0
 public void LeadingWildcards()
 {
     TestIndex.AssertQuery(PathQuery("*.cs"), 0, 14, 17);
 }
Example #13
0
 public void PathGap()
 {
     TestIndex.AssertQuery(PathQuery("FileIO/**/fileio.cpp"), 1, 8, 15);
     TestIndex.AssertQuery(PathQuery("/woanders/FileIO/**/fileio.*"), 15, 16);
     TestIndex.AssertQuery(PathQuery("shared/**/fileio"), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
 }
Example #14
0
 public void FindPathOrFile()
 {
     TestIndex.AssertQuery(PathQuery("flip"), 5, 14);
 }
Example #15
0
 public void FindPathOnly()
 {
     TestIndex.AssertQuery(PathQuery("flip/"), 5);
 }
Example #16
0
 public void WildcardOnlyQuery_ExpectedResultsNothing()
 {
     TestIndex.AssertQueryFromHeadRevision("c:\"*\"");
     TestIndex.AssertQueryFromHeadRevision("c:\"**\"");
     TestIndex.AssertQueryFromHeadRevision("c:\"**/\"");
 }
Example #17
0
 public void AbsoluteExternal_Found()
 {
     TestIndex.AssertQueryFromHeadRevision("x:\"svn://svnquery.tigris.org\"", 17);
 }
Example #18
0
 public void RealLifeFulltext()
 {
     TestIndex.AssertQueryFromHeadRevision(@"c:""include ** comment ** searched""", 8);
 }
Example #19
0
 public void Gap()
 {
     TestIndex.AssertQueryFromHeadRevision("c:\"comment ** that", 8, 9);
 }
Example #20
0
 public void WildcardStar()
 {
     TestIndex.AssertQueryFromHeadRevision("c:El*ant", 12, 15, 16, 17);
 }
Example #21
0
 public void FixedExternalsWildcards()
 {
     TestIndex.AssertQueryFromHeadRevision("x:\"-r*\"", 16, 15);
 }
Example #22
0
 public void FixedExternals()
 {
     TestIndex.AssertQueryFromHeadRevision("x:\"-r5000\"", 16);
 }
Example #23
0
 public void WildcardsQuestionMark()
 {
     TestIndex.AssertQueryFromHeadRevision("c:Ele?ant", 15, 16, 17);
 }
Example #24
0
 public void PartialPath()
 {
     TestIndex.AssertQuery(PathQuery("selt.sam/source/form1.design.cs"), 17);
 }
Example #25
0
 public void RealLifeIncludeQuery()
 {
     TestIndex.AssertQueryFromHeadRevision(@"c:""#include ** bla.h""", 9);
 }
Example #26
0
 public void EmptyQuery()
 {
     TestIndex.AssertQuery(PathQuery(""));
 }
Example #27
0
 public void RealLifeGrouping()
 {
     TestIndex.AssertQueryFromHeadRevision(@"c:(include comment searched)", 8);
     TestIndex.AssertQueryFromHeadRevision(@"c:(include comment)", 8, 9);
     TestIndex.AssertQueryFromHeadRevision(@"c:(include comment -searched)", 9);
 }
Example #28
0
 public void StartAtRoot()
 {
     TestIndex.AssertQuery(PathQuery("/shared/"), 1, 2, 3, 4, 5, 6, 7);
 }
Example #29
0
 public void LargeData_NoMoreThanMaxNumberOfTermsPerDocumentAreIndexed()
 {
     TestIndex.AssertQueryFromHeadRevision("c:a49", 27);
     TestIndex.AssertQueryFromHeadRevision("c:a50"); // should not be indexed
 }
Example #30
0
 public void CsExtension()
 {
     TestIndex.AssertQuery(PathQuery(".cs"), 0, 14, 17);
     TestIndex.AssertQuery(PathQuery("cs"), 0, 14, 17);
 }