NamePatternTestCase.java
/* *******************************************************************
* Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC).
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v 2.0
* which accompanies this distribution and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
*
* Contributors:
* PARC initial implementation
* ******************************************************************/
package org.aspectj.weaver.patterns;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import junit.framework.TestCase;
import org.aspectj.weaver.CompressingDataOutputStream;
import org.aspectj.weaver.VersionedDataInputStream;
/**
* @author hugunin
*
* To change this generated comment edit the template variable "typecomment": Window>Preferences>Java>Templates. To enable
* and disable the creation of type comments go to Window>Preferences>Java>Code Generation.
*/
public class NamePatternTestCase extends TestCase {
static String[] matchAll = new String[] { "*****", "*" };
static String[] match1 = new String[] { "abcde", "abc*", "abcd*", "abcde*", "*e", "*cde", "*abcde", "a*e", "ab*e", "abc*de",
"*a*b*c*d*e*", "a*c*e", "a***bcde", "*d*", };
static String[] match2 = new String[] { "abababab", "aba*", "abab*", "abababab*", "*b", "*ab", "*ababab", "*abababab", "a*b",
"ab*b", "abab*abab", "*a*b*a*b*a*b*a*b*", "a*****b", "a**b", "ab*b*b", };
/**
* Constructor for PatternTestCase.
*
* @param name
*/
public NamePatternTestCase(String name) {
super(name);
}
public void testMatch() {
checkMatch("abcde", matchAll, true);
checkMatch("abcde", match1, true);
checkMatch("abcde", match2, false);
checkMatch("abababab", matchAll, true);
checkMatch("abababab", match1, false);
checkMatch("abababab", match2, true);
}
/**
* Method checkMatch.
*
* @param string
* @param matchAll
* @param b
*/
private void checkMatch(String string, String[] patterns, boolean shouldMatch) {
for (String pattern : patterns) {
NamePattern p = new NamePattern(pattern);
checkMatch(string, p, shouldMatch);
}
}
private void checkMatch(String string, NamePattern p, boolean shouldMatch) {
String msg = "matching " + string + " to " + p;
assertEquals(msg, shouldMatch, p.matches(string));
}
public void testSerialization() throws IOException {
checkSerialization(matchAll);
checkSerialization(match1);
checkSerialization(match2);
}
private void checkSerialization(String[] patterns) throws IOException {
for (String pattern : patterns) {
NamePattern p = new NamePattern(pattern);
checkSerialization(p);
}
}
private void checkSerialization(NamePattern p) throws IOException {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ConstantPoolSimulator cps = new ConstantPoolSimulator();
CompressingDataOutputStream out = new CompressingDataOutputStream(bo, cps);
p.write(out);
out.close();
ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray());
VersionedDataInputStream in = new VersionedDataInputStream(bi, cps);
NamePattern newP = NamePattern.read(in);
assertEquals("write/read", p, newP);
}
}