package test;
import java.io.IOException;
import aQute.bnd.osgi.resource.FilterParser;
import aQute.bnd.osgi.resource.FilterParser.Expression;
import aQute.bnd.osgi.resource.FilterParser.WithRangeExpression;
import junit.framework.TestCase;
public class FilterParserTest extends TestCase {
FilterParser fp = new FilterParser();
public void testSpaces() throws Exception {
FilterParser p = new FilterParser();
p.parse("(| (a=b) (b=c) )");
p.parse("(| (&(osgi.ee=JavaSE)(version=1.6)) (&(osgi.ee=JavaSE/compact1)(version=1.8)) )");
p.parse("( & ( org.osgi.framework.windowing.system = xyz ) )");
p.parse("( | ( org.osgi.framework.windowing.system=xyz))");
}
public void testNestedAnd() throws IOException {
aQute.bnd.osgi.resource.FilterParser.Expression exp = fp
.parse("(&(osgi.wiring.package=osgi.enroute.webserver)(&(version>=1.0.0)(!(version>=2.0.0))))");
System.out.println(exp);
}
public void testSimple() throws IOException {
aQute.bnd.osgi.resource.FilterParser.Expression exp = fp
.parse("(&(osgi.wiring.package=package)(|(|(c=4)))(!(version>=2.0.0))(!(a=3))(version>=1.0.0))");
System.out.println(exp);
}
public void testReduce() throws IOException {
Expression exp = fp.parse("(&(osgi.wiring.package=package)(!(version>=2.0.0))(version>=1.0.0))");
System.out.println(exp);
}
public void testVoidRange() throws IOException {
Expression exp = fp.parse("(&(osgi.wiring.package=package)(version>=0.0.0))");
System.out.println(exp);
}
public void testPackageRange() throws Exception {
Expression expression = fp.parse("(&(osgi.wiring.package=A)(version>=1.0.0)(!(version>=2.0.0)))");
assertTrue(expression instanceof WithRangeExpression);
assertEquals("[1.0.0,2.0.0)", ((WithRangeExpression) expression).getRangeExpression().getRangeString());
}
public void testBundleRange() throws Exception {
Expression expression = fp.parse("(&(osgi.wiring.bundle=B)(bundle-version>=1.0.0)(!(bundle-version>=2.0.0)))");
assertTrue(expression instanceof WithRangeExpression);
assertEquals("[1.0.0,2.0.0)", ((WithRangeExpression) expression).getRangeExpression().getRangeString());
}
public void testIdentity() throws IOException {
Expression exp = fp.parse("(&(osgi.identity=identity)(version>=0.0.0))");
System.out.println(exp);
exp = fp.parse("(&(osgi.identity=identity)(!(version>=2.0.0))(version>=1.0.0))");
System.out.println(exp);
}
/**
* Since the filters are cached we need to get similar filters to check if
* this works.
*
* @throws IOException
*/
public void testCache() throws IOException {
Expression exp = fp.parse("(&(osgi.wiring.package=a)(version>=1)(!(version>=2.0.0)))");
Expression exp2 = fp.parse("(&(osgi.wiring.package=b)(version>=1.1)(!(version>=2.0.0)))");
assertNotNull(exp2);
assertNotNull(exp);
}
}