DeclareErrorOrWarningTestCase.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;
public class DeclareErrorOrWarningTestCase extends TestCase {
public void testParse() throws IOException {
DeclareErrorOrWarning d = parse("declare error: call(void foo()): \"that is bad\";");
assertTrue(d.isError());
assertEquals(d.getPointcut(), new PatternParser("call(void foo())").parsePointcut());
assertEquals("that is bad", d.getMessage());
checkSerialization(d);
d = parse("declare warning: bar() && baz(): \"boo!\";");
assertTrue(!d.isError());
assertEquals(d.getPointcut(), new PatternParser("bar() && baz()").parsePointcut());
assertEquals("boo!", d.getMessage());
checkSerialization(d);
}
public void testStartAndEndPositionSet() throws IOException {
DeclareErrorOrWarning d = parse("declare error: call(void foo()): \"that is bad\";");
assertEquals("start position should be 0", 0, d.getStart());
assertEquals("end position should be 46", 46, d.getEnd());
}
private DeclareErrorOrWarning parse(String string) {
return (DeclareErrorOrWarning) new PatternParser(string).parseDeclare();
}
private void checkSerialization(Declare declare) throws IOException {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ConstantPoolSimulator cps = new ConstantPoolSimulator();
CompressingDataOutputStream out = new CompressingDataOutputStream(bo, cps);
declare.write(out);
out.close();
ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray());
VersionedDataInputStream in = new VersionedDataInputStream(bi, cps);
Declare newDeclare = Declare.read(in, null);
assertEquals("write/read", declare, newDeclare);
}
}