/*
* Copyright 2006-2007 the original author or authors.
*
* 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 org.springframework.batch.support;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
/**
* @author Dan Garrette
* @since 2.0
*/
public class PatternMatcherTests {
private static Map<String, Integer> map = new HashMap<String, Integer>();
static {
map.put("an*", 3);
map.put("a*", 2);
map.put("big*", 4);
}
private static Map<String, Integer> defaultMap = new HashMap<String, Integer>();
static {
defaultMap.put("an", 3);
defaultMap.put("a", 2);
defaultMap.put("big*", 4);
defaultMap.put("big?*", 5);
defaultMap.put("*", 1);
}
@Test
public void testMatchNoWildcardYes() {
assertTrue(PatternMatcher.match("abc", "abc"));
}
@Test
public void testMatchNoWildcardNo() {
assertFalse(PatternMatcher.match("abc", "ab"));
}
@Test
public void testMatchSingleYes() {
assertTrue(PatternMatcher.match("a?c", "abc"));
}
@Test
public void testMatchSingleNo() {
assertFalse(PatternMatcher.match("a?c", "ab"));
}
@Test
public void testMatchSingleWildcardNo() {
assertTrue(PatternMatcher.match("a?*", "abc"));
}
@Test
public void testMatchStarYes() {
assertTrue(PatternMatcher.match("a*c", "abdegc"));
}
@Test
public void testMatchTwoStars() {
assertTrue(PatternMatcher.match("a*d*", "abcdeg"));
}
@Test
public void testMatchPastEnd() {
assertFalse(PatternMatcher.match("a*de", "abcdeg"));
}
@Test
public void testMatchPastEndTwoStars() {
assertTrue(PatternMatcher.match("a*d*g*", "abcdeg"));
}
@Test
public void testMatchStarAtEnd() {
assertTrue(PatternMatcher.match("ab*", "ab"));
}
@Test
public void testMatchStarNo() {
assertFalse(PatternMatcher.match("a*c", "abdeg"));
}
@Test
public void testMatchPrefixSubsumed() {
assertEquals(2, new PatternMatcher<Integer>(map).match("apple").intValue());
}
@Test
public void testMatchPrefixSubsuming() {
assertEquals(3, new PatternMatcher<Integer>(map).match("animal").intValue());
}
@Test
public void testMatchPrefixUnrelated() {
assertEquals(4, new PatternMatcher<Integer>(map).match("biggest").intValue());
}
@Test(expected = IllegalStateException.class)
public void testMatchPrefixNoMatch() {
new PatternMatcher<Integer>(map).match("bat");
}
@Test
public void testMatchPrefixDefaultValueUnrelated() {
assertEquals(5, new PatternMatcher<Integer>(defaultMap).match("biggest").intValue());
}
@Test
public void testMatchPrefixDefaultValueEmptyString() {
assertEquals(1, new PatternMatcher<Integer>(defaultMap).match("").intValue());
}
@Test
public void testMatchPrefixDefaultValueNoMatch() {
assertEquals(1, new PatternMatcher<Integer>(defaultMap).match("bat").intValue());
}
}