1
2
3
4
5
6
7
8
9
10 package org.eclipse.jgit.util;
11
12 import static java.nio.charset.StandardCharsets.UTF_8;
13 import static org.junit.Assert.assertEquals;
14 import static org.junit.Assert.assertNotNull;
15
16 import org.eclipse.jgit.junit.RepositoryTestCase;
17 import org.junit.Test;
18
19 public class RawSubStringPatternTest extends RepositoryTestCase {
20
21 @Test
22 public void testBoundary() {
23 assertMatchResult("a", "a", 0);
24 assertMatchResult("a", "abcd", 0);
25 assertMatchResult("ab", "abcd", 0);
26 assertMatchResult("abcd", "abcd", 0);
27 assertMatchResult("bc", "abcd", 1);
28 assertMatchResult("bcd", "abcd", 1);
29 assertMatchResult("cd", "abcd", 2);
30 assertMatchResult("d", "abcd", 3);
31 assertMatchResult("abab", "abaabab", 3);
32 }
33
34 @Test
35 public void testNoMatches() {
36 assertMatchResult("a", "", -1);
37 assertMatchResult("a", "b", -1);
38 assertMatchResult("abab", "abaaba", -1);
39 assertMatchResult("ab", "ddda", -1);
40 }
41
42 @Test
43 public void testCaseInsensitive() {
44 assertMatchResult("a", "A", 0);
45 assertMatchResult("A", "a", 0);
46 assertMatchResult("Ab", "aB", 0);
47 assertMatchResult("aB", "Ab", 0);
48 }
49
50 @Test(expected = IllegalArgumentException.class)
51 public void testEmptyPattern() {
52 assertNotNull(new RawSubStringPattern(""));
53 }
54
55 private static void assertMatchResult(String pattern, String input, int position) {
56 RawSubStringPattern p = new RawSubStringPattern(pattern);
57 assertEquals("Expected match result " + position + " with input "
58 + input + " for pattern " + pattern,
59 position, p.match(raw(input)));
60 }
61
62 private static RawCharSequence raw(String text) {
63 byte[] bytes = text.getBytes(UTF_8);
64 return new RawCharSequence(bytes, 0, bytes.length);
65 }
66 }