FileDocCategorySizeDatePackage
RegexpMatcherTest.javaAPI DocApache Ant 1.707951Wed Dec 13 06:16:18 GMT 2006org.apache.tools.ant.util.regexp

RegexpMatcherTest

public abstract class RegexpMatcherTest extends TestCase
Tests for all implementations of the RegexpMatcher interface.

Fields Summary
public static final String
UNIX_LINE
private RegexpMatcher
reg
Constructors Summary
public RegexpMatcherTest(String name)

        super(name);
    
Methods Summary
protected voiddoEndTest1(java.lang.String text)

        reg.setPattern("endtest$");
        assertTrue("endtest$ in default mode", !reg.matches(text));
        assertTrue("endtest$ in single line mode",
               !reg.matches(text, RegexpMatcher.MATCH_SINGLELINE));
        assertTrue("endtest$ in multi line mode",
               reg.matches(text, RegexpMatcher.MATCH_MULTILINE));
    
protected voiddoEndTest2(java.lang.String text)

        reg.setPattern("Line4$");
        assertTrue("Line4$ in default mode", reg.matches(text));
        assertTrue("Line4$ in single line mode",
               reg.matches(text, RegexpMatcher.MATCH_SINGLELINE));
        assertTrue("Line4$ in multi line mode",
               reg.matches(text, RegexpMatcher.MATCH_MULTILINE));
    
protected voiddoStartTest1(java.lang.String text)

        reg.setPattern("^starttest");
        assertTrue("^starttest in default mode", !reg.matches(text));
        assertTrue("^starttest in single line mode",
               !reg.matches(text, RegexpMatcher.MATCH_SINGLELINE));
        assertTrue("^starttest in multi line mode",
               reg.matches(text, RegexpMatcher.MATCH_MULTILINE));
    
protected voiddoStartTest2(java.lang.String text)

        reg.setPattern("^Line1");
        assertTrue("^Line1 in default mode", reg.matches(text));
        assertTrue("^Line1 in single line mode",
               reg.matches(text, RegexpMatcher.MATCH_SINGLELINE));
        assertTrue("^Line1 in multi line mode",
               reg.matches(text, RegexpMatcher.MATCH_MULTILINE));
    
public abstract RegexpMatchergetImplementation()

protected final RegexpMatchergetReg()


       

        return reg;
public voidsetUp()

        reg = getImplementation();
    
public voidtestBugzillaReport14619()

        reg.setPattern("^(.*)/src/((.*/)*)([a-zA-Z0-9_\\.]+)\\.java$");
        Vector v = reg.getGroups("de/tom/src/Google.java");
        assertEquals(5, v.size());
        assertEquals("de/tom", v.elementAt(1));
        assertEquals("", v.elementAt(2));
        assertEquals("", v.elementAt(3));
        assertEquals("Google", v.elementAt(4));
    
public voidtestCaseInsensitiveMatch()

        reg.setPattern("aaaa");
        assertTrue("aaaa doesn't match AAaa", !reg.matches("AAaa"));
        assertTrue("aaaa matches AAaa ignoring case",
                   reg.matches("AAaa", RegexpMatcher.MATCH_CASE_INSENSITIVE));
    
public voidtestGroups()

        reg.setPattern("aaaa");
        Vector v = reg.getGroups("xaaaa");
        assertEquals("No parens -> no extra groups", 1, v.size());
        assertEquals("Trivial match with no parens", "aaaa",
                     (String) v.elementAt(0));

        reg.setPattern("(aaaa)");
        v = reg.getGroups("xaaaa");
        assertEquals("Trivial match with single paren", 2, v.size());
        assertEquals("Trivial match with single paren, full match", "aaaa",
                     (String) v.elementAt(0));
        assertEquals("Trivial match with single paren, matched paren", "aaaa",
                     (String) v.elementAt(0));

        reg.setPattern("(a+)b(b+)");
        v = reg.getGroups("xaabb");
        assertEquals(3, v.size());
        assertEquals("aabb", (String) v.elementAt(0));
        assertEquals("aa", (String) v.elementAt(1));
        assertEquals("b", (String) v.elementAt(2));
    
public voidtestLineSeparatorCharacter()

        reg.setPattern("end of text$");
        assertTrue("line-separator character", !reg.matches("end of text\u2028"));
    
public voidtestMatches()

        reg.setPattern("aaaa");
        assertTrue("aaaa should match itself", reg.matches("aaaa"));
        assertTrue("aaaa should match xaaaa", reg.matches("xaaaa"));
        assertTrue("aaaa shouldn\'t match xaaa", !reg.matches("xaaa"));
        reg.setPattern("^aaaa");
        assertTrue("^aaaa shouldn\'t match xaaaa", !reg.matches("xaaaa"));
        assertTrue("^aaaa should match aaaax", reg.matches("aaaax"));
        reg.setPattern("aaaa$");
        assertTrue("aaaa$ shouldn\'t match aaaax", !reg.matches("aaaax"));
        assertTrue("aaaa$ should match xaaaa", reg.matches("xaaaa"));
        reg.setPattern("[0-9]+");
        assertTrue("[0-9]+ should match 123", reg.matches("123"));
        assertTrue("[0-9]+ should match 1", reg.matches("1"));
        assertTrue("[0-9]+ shouldn\'t match \'\'", !reg.matches(""));
        assertTrue("[0-9]+ shouldn\'t match a", !reg.matches("a"));
        reg.setPattern("[0-9]*");
        assertTrue("[0-9]* should match 123", reg.matches("123"));
        assertTrue("[0-9]* should match 1", reg.matches("1"));
        assertTrue("[0-9]* should match \'\'", reg.matches(""));
        assertTrue("[0-9]* should match a", reg.matches("a"));
        reg.setPattern("([0-9]+)=\\1");
        assertTrue("([0-9]+)=\\1 should match 1=1", reg.matches("1=1"));
        assertTrue("([0-9]+)=\\1 shouldn\'t match 1=2", !reg.matches("1=2"));
    
public voidtestMultiVersusSingleLine()

        StringBuffer buf = new StringBuffer();
        buf.append("Line1").append(UNIX_LINE);
        buf.append("starttest Line2").append(UNIX_LINE);
        buf.append("Line3 endtest").append(UNIX_LINE);
        buf.append("Line4").append(UNIX_LINE);
        String text = buf.toString();

        doStartTest1(text);
        doStartTest2(text);
        doEndTest1(text);
        doEndTest2(text);
    
public voidtestNextLineCharacter()

        reg.setPattern("end of text$");
        assertTrue("next-line character", !reg.matches("end of text\u0085"));
    
public voidtestParagraphCharacter()

        reg.setPattern("end of text$");
        assertTrue("paragraph character", !reg.matches("end of text\u2029"));
    
public voidtestStandaloneCR()

        reg.setPattern("end of text$");
        assertTrue("standalone CR", !reg.matches("end of text\r"));
    
public voidtestUnixLineSeparator()

        reg.setPattern("end of text$");
        assertTrue("Unix line separator", reg.matches("end of text\n"));
    
public voidtestWindowsLineSeparator()

        reg.setPattern("end of text$");
        assertTrue("Windows line separator", !reg.matches("end of text\r\n"));
    
public voidtestWindowsLineSeparator2()

        reg.setPattern("end of text\r$");
        assertTrue("Windows line separator", reg.matches("end of text\r\n"));