def testScanSingleHit(self): data = b"foobarbaz" chunk = streaming.Chunk(offset=0, data=data) spans = list(chunk.Scan(conditions.LiteralMatcher(b"bar"))) self.assertLen(spans, 1) self.assertEqual(spans[0], self.Span(begin=3, end=6))
def testScanWithOverlapOverlapping(self): data = b"oooooo" chunk = streaming.Chunk(offset=0, data=data, overlap=3) spans = list(chunk.Scan(conditions.LiteralMatcher(b"oo"))) self.assertLen(spans, 2) self.assertEqual(spans[0], self.Span(begin=2, end=4)) self.assertEqual(spans[1], self.Span(begin=4, end=6))
def testScanWithOverlap(self): data = b"foofoobarfoofoo" chunk = streaming.Chunk(offset=0, data=data, overlap=8) spans = list(chunk.Scan(conditions.LiteralMatcher(b"foo"))) self.assertLen(spans, 2) self.assertEqual(spans[0], self.Span(begin=9, end=12)) self.assertEqual(spans[1], self.Span(begin=12, end=15))
def testScanOverlappedHits(self): data = b"xoxoxoxo" chunk = streaming.Chunk(offset=0, data=data) spans = list(chunk.Scan(conditions.LiteralMatcher(b"xoxo"))) self.assertLen(spans, 2) self.assertEqual(spans[0], self.Span(begin=0, end=4)) self.assertEqual(spans[1], self.Span(begin=4, end=8))
def testScanMultiHit(self): data = b"foobarfoo" chunk = streaming.Chunk(offset=0, data=data) spans = list(chunk.Scan(conditions.LiteralMatcher(b"foo"))) self.assertLen(spans, 2) self.assertEqual(spans[0], self.Span(begin=0, end=3)) self.assertEqual(spans[1], self.Span(begin=6, end=9))
def testNoMatchLiteral(self): matcher = conditions.LiteralMatcher(b"norf") span = matcher.Match(b"quux", 0) self.assertFalse(span) span = matcher.Match(b"norf", 2) self.assertFalse(span) span = matcher.Match(b"quuxnorf", 5) self.assertFalse(span)
def testMatchLiteral(self): matcher = conditions.LiteralMatcher(b"bar") span = matcher.Match(b"foobarbaz", 0) self.assertTrue(span) self.assertEqual(span.begin, 3) self.assertEqual(span.end, 6) span = matcher.Match(b"barbarbar", 0) self.assertTrue(span) self.assertEqual(span.begin, 0) self.assertEqual(span.end, 3) span = matcher.Match(b"barbarbar", 4) self.assertTrue(span) self.assertEqual(span.begin, 6) self.assertEqual(span.end, 9)