View Javadoc
1   /*
2    * Copyright (C) 2013, Robin Stocker <robin@nibor.org> and others
3    *
4    * This program and the accompanying materials are made available under the
5    * terms of the Eclipse Distribution License v. 1.0 which is available at
6    * https://www.eclipse.org/org/documents/edl-v10.php.
7    *
8    * SPDX-License-Identifier: BSD-3-Clause
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  }