/* * Copyright 2014 - 2017 Blazebit. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.blazebit.persistence.impl.util; import org.junit.Assert; import org.junit.Test; public class PatternFinderTest { private PatternFinder firstFinder; private PatternFinder lastFinder; @Test public void matching() { firstFinder = new BoyerMooreCaseInsensitiveAsciiFirstPatternFinder("abc"); lastFinder = new BoyerMooreCaseInsensitiveAsciiLastPatternFinder("abc"); Assert.assertEquals(0, firstFinder.indexIn("abc")); Assert.assertEquals(0, lastFinder.indexIn("abc")); } @Test public void notMatching() { firstFinder = new BoyerMooreCaseInsensitiveAsciiFirstPatternFinder("xxx"); lastFinder = new BoyerMooreCaseInsensitiveAsciiLastPatternFinder("xxx"); Assert.assertEquals(-1, firstFinder.indexIn("abc")); Assert.assertEquals(-1, lastFinder.indexIn("abc")); } @Test public void partPrefixMatching() { firstFinder = new BoyerMooreCaseInsensitiveAsciiFirstPatternFinder("abx"); lastFinder = new BoyerMooreCaseInsensitiveAsciiLastPatternFinder("abx"); Assert.assertEquals(-1, firstFinder.indexIn("abc")); Assert.assertEquals(-1, lastFinder.indexIn("abc")); } @Test public void partSuffixMatching() { firstFinder = new BoyerMooreCaseInsensitiveAsciiFirstPatternFinder("xbc"); lastFinder = new BoyerMooreCaseInsensitiveAsciiLastPatternFinder("xbc"); Assert.assertEquals(-1, firstFinder.indexIn("abc")); Assert.assertEquals(-1, lastFinder.indexIn("abc")); } @Test public void matchingPrefix() { firstFinder = new BoyerMooreCaseInsensitiveAsciiFirstPatternFinder("ab"); lastFinder = new BoyerMooreCaseInsensitiveAsciiLastPatternFinder("ab"); Assert.assertEquals(0, firstFinder.indexIn("abc")); Assert.assertEquals(0, lastFinder.indexIn("abc")); } @Test public void matchingSuffix() { firstFinder = new BoyerMooreCaseInsensitiveAsciiFirstPatternFinder("bc"); lastFinder = new BoyerMooreCaseInsensitiveAsciiLastPatternFinder("bc"); Assert.assertEquals(1, firstFinder.indexIn("abc")); Assert.assertEquals(1, lastFinder.indexIn("abc")); } @Test public void matchingMultipleFirst() { firstFinder = new BoyerMooreCaseInsensitiveAsciiFirstPatternFinder("ab"); lastFinder = new BoyerMooreCaseInsensitiveAsciiLastPatternFinder("ab"); Assert.assertEquals(2, firstFinder.indexIn("xxabxxabxx")); Assert.assertEquals(6, lastFinder.indexIn("xxabxxabxx")); } @Test public void matchingMultipleLast() { firstFinder = new BoyerMooreCaseInsensitiveAsciiFirstPatternFinder("ab"); lastFinder = new BoyerMooreCaseInsensitiveAsciiLastPatternFinder("ab"); Assert.assertEquals(6, firstFinder.indexIn("xxabxxabxx", 3)); Assert.assertEquals(2, lastFinder.indexIn("xxabxxabxx", 0, 6)); } @Test public void matchingWithSkipFirst() { firstFinder = new BoyerMooreCaseInsensitiveAsciiFirstPatternFinder("abab"); lastFinder = new BoyerMooreCaseInsensitiveAsciiLastPatternFinder("abab"); Assert.assertEquals(8, firstFinder.indexIn("xxabacxxababxxabacxxababxxabacxx")); Assert.assertEquals(20, lastFinder.indexIn("xxabacxxababxxabacxxababxxabacxx")); } @Test public void matchingWithSkipLast() { firstFinder = new BoyerMooreCaseInsensitiveAsciiFirstPatternFinder("abab"); lastFinder = new BoyerMooreCaseInsensitiveAsciiLastPatternFinder("abab"); Assert.assertEquals(20, firstFinder.indexIn("xxabacxxababxxabacxxababxxabacxx", 9)); Assert.assertEquals(8, lastFinder.indexIn("xxabacxxababxxabacxxababxxabacxx", 0, 20)); } @Test public void bla() { firstFinder = new BoyerMooreCaseInsensitiveAsciiFirstPatternFinder("bbab"); lastFinder = new BoyerMooreCaseInsensitiveAsciiLastPatternFinder("bbab"); Assert.assertEquals(0, lastFinder.indexIn("bbabaaab")); } @Test public void bla2() { firstFinder = new BoyerMooreCaseInsensitiveAsciiFirstPatternFinder("aaac"); lastFinder = new BoyerMooreCaseInsensitiveAsciiLastPatternFinder("aaac"); Assert.assertEquals(0, lastFinder.indexIn("aaacbaaaax")); } @Test public void bla3() { firstFinder = new BoyerMooreCaseInsensitiveAsciiFirstPatternFinder("cXXXcXXXbXXXcXXX"); lastFinder = new BoyerMooreCaseInsensitiveAsciiLastPatternFinder("cXXXcXXXbXXXcXXX"); Assert.assertEquals(13, lastFinder.indexIn("leading TEXT cXXXcXXXbXXXcXXX rest of the TEXT")); } @Test public void bla4() { firstFinder = new BoyerMooreCaseInsensitiveAsciiFirstPatternFinder("AABA"); lastFinder = new BoyerMooreCaseInsensitiveAsciiLastPatternFinder("AABA"); Assert.assertEquals(0, firstFinder.indexIn("AABAACAADAABAAABAA")); Assert.assertEquals(9, firstFinder.indexIn("AABAACAADAABAAABAA", 1)); Assert.assertEquals(13, firstFinder.indexIn("AABAACAADAABAAABAA", 10)); Assert.assertEquals(13, lastFinder.indexIn("AABAACAADAABAAABAA")); Assert.assertEquals(9, lastFinder.indexIn("AABAACAADAABAAABAA", 0, 13)); Assert.assertEquals(0, lastFinder.indexIn("AABAACAADAABAAABAA", 0, 9)); } @Test public void expressionExtraction() { firstFinder = new BoyerMooreCaseInsensitiveAsciiFirstPatternFinder(" as "); lastFinder = new BoyerMooreCaseInsensitiveAsciiLastPatternFinder(" as "); Assert.assertEquals(15, lastFinder.indexIn(" document0_.age as age2_1_")); Assert.assertEquals(15, firstFinder.indexIn(" document0_.age as age2_1_")); } }