12baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumannpackage android.os; 22baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 32baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumannimport android.test.suitebuilder.annotation.SmallTest; 42baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumannimport junit.framework.TestCase; 52baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumannimport org.junit.runner.RunWith; 62baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumannimport org.junit.Test; 72baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumannimport org.junit.runners.JUnit4; 82baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 92baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann@RunWith(JUnit4.class) 102baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann@SmallTest 112baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumannpublic class PatternMatcherTest extends TestCase{ 122baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 132baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann @Test 142baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann public void testAdvancedPatternMatchesAnyToken() { 152baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann PatternMatcher matcher = new PatternMatcher(".", PatternMatcher.PATTERN_ADVANCED_GLOB); 162baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("a", matcher); 172baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("b", matcher); 182baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("", matcher); 192baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } 202baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 212baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann @Test 222baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann public void testAdvancedPatternMatchesSetToken() { 232baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann PatternMatcher matcher = new PatternMatcher("[a]", PatternMatcher.PATTERN_ADVANCED_GLOB); 242baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("a", matcher); 252baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("b", matcher); 262baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 272baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann matcher = new PatternMatcher("[.*+{}\\]\\\\[]", PatternMatcher.PATTERN_ADVANCED_GLOB); 282baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches(".", matcher); 292baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("*", matcher); 302baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("+", matcher); 312baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("{", matcher); 322baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("}", matcher); 332baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("]", matcher); 342baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("\\", matcher); 352baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("[", matcher); 362baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } 372baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 382baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann @Test 392baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann public void testAdvancedPatternMatchesSetCharacterClassToken() { 402baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann PatternMatcher matcher = new PatternMatcher("[a-z]", PatternMatcher.PATTERN_ADVANCED_GLOB); 412baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("a", matcher); 422baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("b", matcher); 432baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("A", matcher); 442baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("1", matcher); 452baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 462baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann matcher = new PatternMatcher("[a-z][0-9]", PatternMatcher.PATTERN_ADVANCED_GLOB); 472baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("a1", matcher); 482baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("1a", matcher); 492baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("aa", matcher); 502baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 512baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann matcher = new PatternMatcher("[z-a]", PatternMatcher.PATTERN_ADVANCED_GLOB); 522baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("a", matcher); 532baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("z", matcher); 542baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("A", matcher); 552baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 562baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann matcher = new PatternMatcher("[^0-9]", PatternMatcher.PATTERN_ADVANCED_GLOB); 572baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("a", matcher); 582baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("z", matcher); 592baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("A", matcher); 602baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("9", matcher); 612baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("5", matcher); 622baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("0", matcher); 632baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 642baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertPoorlyFormattedPattern("[]a]"); 652baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann matcher = new PatternMatcher("[\\[a]", PatternMatcher.PATTERN_ADVANCED_GLOB); 662baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("a", matcher); 672baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("[", matcher); 682baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } 692baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 702baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann @Test 712baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann public void testAdvancedPatternMatchesEscapedCharacters() { 722baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann PatternMatcher matcher = new PatternMatcher("\\.", PatternMatcher.PATTERN_ADVANCED_GLOB); 732baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches(".", matcher); 742baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("a", matcher); 752baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("1", matcher); 762baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 772baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann matcher = new PatternMatcher("a\\+", PatternMatcher.PATTERN_ADVANCED_GLOB); 782baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("a+", matcher); 792baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("a", matcher); 802baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("aaaaa", matcher); 812baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 822baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann matcher = new PatternMatcher("[\\a-\\z]", PatternMatcher.PATTERN_ADVANCED_GLOB); 832baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("a", matcher); 842baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("z", matcher); 852baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("A", matcher); 862baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } 872baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 882baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann @Test 892baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann public void testAdvancedPatternMatchesLiteralTokens() { 902baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann PatternMatcher matcher = new PatternMatcher("a", PatternMatcher.PATTERN_ADVANCED_GLOB); 912baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("", matcher); 922baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("a", matcher); 932baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("z", matcher); 942baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 952baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann matcher = new PatternMatcher("az", PatternMatcher.PATTERN_ADVANCED_GLOB); 962baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("", matcher); 972baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("az", matcher); 982baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("za", matcher); 992baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } 1002baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 1012baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann @Test 1022baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann public void testAdvancedPatternMatchesSetZeroOrMore() { 1032baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann PatternMatcher matcher = new PatternMatcher("[a-z]*", PatternMatcher.PATTERN_ADVANCED_GLOB); 1042baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 1052baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("", matcher); 1062baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("a", matcher); 1072baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("abcdefg", matcher); 1082baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("abc1", matcher); 1092baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("1abc", matcher); 1102baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } 1112baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 1122baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann @Test 1132baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann public void testAdvancedPatternMatchesSetOneOrMore() { 1142baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann PatternMatcher matcher = new PatternMatcher("[a-z]+", PatternMatcher.PATTERN_ADVANCED_GLOB); 1152baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 1162baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("", matcher); 1172baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("a", matcher); 1182baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("abcdefg", matcher); 1192baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("abc1", matcher); 1202baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("1abc", matcher); 1212baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } 1222baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 1232baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 1242baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann @Test 1252baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann public void testAdvancedPatternMatchesSingleRange() { 1262baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann PatternMatcher matcher = new PatternMatcher("[a-z]{1}", 1272baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann PatternMatcher.PATTERN_ADVANCED_GLOB); 1282baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 1292baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("", matcher); 1302baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("a", matcher); 1312baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("z", matcher); 1322baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("1", matcher); 1332baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("aa", matcher); 1342baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } 1352baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 1362baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann @Test 1372baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann public void testAdvancedPatternMatchesFullRange() { 1382baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann PatternMatcher matcher = new PatternMatcher("[a-z]{1,5}", 1392baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann PatternMatcher.PATTERN_ADVANCED_GLOB); 1402baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 1412baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("", matcher); 1422baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("a", matcher); 1432baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("zazaz", matcher); 1442baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("azazaz", matcher); 1452baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("11111", matcher); 1462baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } 1472baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 1482baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann @Test 1492baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann public void testAdvancedPatternMatchesPartialRange() { 1502baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann PatternMatcher matcher = new PatternMatcher("[a-z]{3,}", 1512baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann PatternMatcher.PATTERN_ADVANCED_GLOB); 1522baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 1532baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("", matcher); 1542baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("aza", matcher); 1552baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("zazaz", matcher); 1562baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("azazazazazaz", matcher); 1572baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("aa", matcher); 1582baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } 1592baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 1602baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann @Test 1612baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann public void testAdvancedPatternMatchesComplexPatterns() { 1622baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann PatternMatcher matcher = new PatternMatcher( 1632baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann "/[0-9]{4}/[0-9]{2}/[0-9]{2}/[a-zA-Z0-9_]+\\.html", 1642baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann PatternMatcher.PATTERN_ADVANCED_GLOB); 1652baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 1662baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("", matcher); 1672baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("/2016/09/07/got_this_working.html", matcher); 1682baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("/2016/09/07/got_this_working2.html", matcher); 1692baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("/2016/09/07/got_this_working2dothtml", matcher); 1702baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("/2016/9/7/got_this_working.html", matcher); 1712baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 1722baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann matcher = new PatternMatcher( 1732baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann "/b*a*bar.*", 1742baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann PatternMatcher.PATTERN_ADVANCED_GLOB); 1752baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 1762baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("/babar", matcher); 1772baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("/babarfff", matcher); 1782baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("/bbaabarfff", matcher); 1792baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("/babar?blah", matcher); 1802baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertMatches("/baaaabar?blah", matcher); 1812baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("?bar", matcher); 1822baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("/bar", matcher); 1832baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("/baz", matcher); 1842baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("/ba/bar", matcher); 1852baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("/barf", matcher); 1862baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("/", matcher); 1872baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertNotMatches("?blah", matcher); 1882baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } 1892baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 1902baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann @Test 1912baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann public void testAdvancedPatternPoorFormatThrowsIllegalArgumentException() { 1922baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertPoorlyFormattedPattern("[a-z"); 1932baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertPoorlyFormattedPattern("a{,4}"); 1942baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertPoorlyFormattedPattern("a{0,a}"); 1952baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertPoorlyFormattedPattern("a{\\1, 2}"); 1962baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertPoorlyFormattedPattern("[]"); 1972baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertPoorlyFormattedPattern("a{}"); 1982baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertPoorlyFormattedPattern("{3,4}"); 1992baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertPoorlyFormattedPattern("a+{3,4}"); 2002baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertPoorlyFormattedPattern("*."); 2012baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertPoorlyFormattedPattern(".+*"); 2022baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertPoorlyFormattedPattern("a{3,4"); 2032baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertPoorlyFormattedPattern("[a"); 2042baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertPoorlyFormattedPattern("abc\\"); 2052baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertPoorlyFormattedPattern("+."); 2062baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 2072baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann StringBuilder charSet = new StringBuilder("["); 2082baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann for (int i = 0; i < 1024; i++) { 2092baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann charSet.append('a' + (i % 26)); 2102baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } 2112baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann charSet.append("]"); 2122baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertPoorlyFormattedPattern(charSet.toString()); 2132baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } 2142baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 2152baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann private void assertMatches(String string, PatternMatcher matcher) { 2162baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertTrue("'" + string + "' should match '" + matcher.toString() + "'", 2172baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann matcher.match(string)); 2182baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } 2192baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 2202baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann private void assertNotMatches(String string, PatternMatcher matcher) { 2212baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann assertTrue("'" + string + "' should not match '" + matcher.toString() + "'", 2222baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann !matcher.match(string)); 2232baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } 2242baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 2252baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann private void assertPoorlyFormattedPattern(String format) { 2262baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann try { 2272baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann new PatternMatcher(format, PatternMatcher.PATTERN_ADVANCED_GLOB); 2282baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } catch (IllegalArgumentException e) { 2292baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann return;// expected 2302baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } 2312baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann 2322baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann fail("'" + format + "' was erroneously created"); 2332baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann } 2342baf095ca9e3827f721271a915d1e04db0718bf9Patrick Baumann} 235