📄 packagebuildertest.java
字号:
final PackageDescr packageDescr3 = new PackageDescr( "package3" );
createReturnValueRule( packageDescr3,
"new Integer(x.intValue() - y.intValue() )" );
builder3.addPackage( packageDescr3 );
final Column column3 = (Column) builder3.getPackage().getRules()[0].getLhs().getChildren().get( 0 );
final ReturnValueConstraint returnValue3 = (ReturnValueConstraint) column3.getConstraints().get( 2 );
assertEquals( returnValue1,
returnValue2 );
assertFalse( returnValue1.equals( returnValue3 ) );
assertFalse( returnValue2.equals( returnValue3 ) );
}
public void testPredicate() throws Exception {
final PackageBuilder builder = new PackageBuilder();
final PackageDescr packageDescr = new PackageDescr( "p1" );
final RuleDescr ruleDescr = new RuleDescr( "rule-1" );
packageDescr.addRule( ruleDescr );
final AndDescr lhs = new AndDescr();
ruleDescr.setLhs( lhs );
final ColumnDescr column = new ColumnDescr( Cheese.class.getName(),
"stilton" );
lhs.addDescr( column );
final FieldBindingDescr fieldBindingDescr = new FieldBindingDescr( "price",
"x" );
column.addDescr( fieldBindingDescr );
packageDescr.addGlobal( "map",
"java.util.Map" );
final PredicateDescr predicate = new PredicateDescr( "price",
"y",
"( ( Integer )map.get(x) ).intValue() == y.intValue()" );
column.addDescr( predicate );
ruleDescr.setConsequence( "modify(stilton);" );
builder.addPackage( packageDescr );
assertLength( 0,
builder.getErrors() );
}
public void testPredicateMethodCompare() {
final PackageBuilder builder1 = new PackageBuilder();
final PackageDescr packageDescr1 = new PackageDescr( "package1" );
createPredicateRule( packageDescr1,
"x==y" );
builder1.addPackage( packageDescr1 );
final Column column1 = (Column) builder1.getPackage().getRules()[0].getLhs().getChildren().get( 0 );
final PredicateConstraint predicate1 = (PredicateConstraint) column1.getConstraints().get( 2 );
final PackageBuilder builder2 = new PackageBuilder();
final PackageDescr packageDescr2 = new PackageDescr( "package2" );
createPredicateRule( packageDescr2,
"x==y" );
builder2.addPackage( packageDescr2 );
final Column column2 = (Column) builder2.getPackage().getRules()[0].getLhs().getChildren().get( 0 );
final PredicateConstraint predicate2 = (PredicateConstraint) column2.getConstraints().get( 2 );
final PackageBuilder builder3 = new PackageBuilder();
final PackageDescr packageDescr3 = new PackageDescr( "package3" );
createPredicateRule( packageDescr3,
"x!=y" );
builder3.addPackage( packageDescr3 );
final Column column3 = (Column) builder3.getPackage().getRules()[0].getLhs().getChildren().get( 0 );
final PredicateConstraint predicate3 = (PredicateConstraint) column3.getConstraints().get( 2 );
assertEquals( predicate1,
predicate2 );
assertFalse( predicate1.equals( predicate3 ) );
assertFalse( predicate2.equals( predicate3 ) );
}
public void testEval() throws Exception {
final PackageBuilder builder = new PackageBuilder();
final PackageDescr packageDescr = new PackageDescr( "p1" );
final RuleDescr ruleDescr = new RuleDescr( "rule-1" );
packageDescr.addRule( ruleDescr );
final AndDescr lhs = new AndDescr();
ruleDescr.setLhs( lhs );
final ColumnDescr column = new ColumnDescr( Cheese.class.getName(),
"stilton" );
lhs.addDescr( column );
FieldBindingDescr fieldBindingDescr = new FieldBindingDescr( "price",
"x" );
column.addDescr( fieldBindingDescr );
fieldBindingDescr = new FieldBindingDescr( "price",
"y" );
column.addDescr( fieldBindingDescr );
packageDescr.addGlobal( "map",
"java.util.Map" );
final EvalDescr evalDescr = new EvalDescr( "( ( Integer )map.get(x) ).intValue() == y.intValue()" );
lhs.addDescr( evalDescr );
ruleDescr.setConsequence( "modify(stilton);" );
builder.addPackage( packageDescr );
assertLength( 0,
builder.getErrors() );
final Package pkg = builder.getPackage();
final Rule rule = pkg.getRule( "rule-1" );
final EvalCondition eval = (EvalCondition) rule.getLhs().getChildren().get( 1 );
final CompiledInvoker invoker = (CompiledInvoker) eval.getEvalExpression();
final List list = invoker.getMethodBytecode();
}
public void testEvalMethodCompare() {
final PackageBuilder builder1 = new PackageBuilder();
final PackageDescr packageDescr1 = new PackageDescr( "package1" );
createEvalRule( packageDescr1,
"1==1" );
builder1.addPackage( packageDescr1 );
final EvalCondition eval1 = (EvalCondition) builder1.getPackage().getRules()[0].getLhs().getChildren().get( 0 );
final PackageBuilder builder2 = new PackageBuilder();
final PackageDescr packageDescr2 = new PackageDescr( "package2" );
createEvalRule( packageDescr2,
"1==1" );
builder2.addPackage( packageDescr2 );
final EvalCondition eval2 = (EvalCondition) builder2.getPackage().getRules()[0].getLhs().getChildren().get( 0 );
final PackageBuilder builder3 = new PackageBuilder();
final PackageDescr packageDescr3 = new PackageDescr( "package3" );
createEvalRule( packageDescr3,
"1==3" );
builder3.addPackage( packageDescr3 );
final EvalCondition eval3 = (EvalCondition) builder3.getPackage().getRules()[0].getLhs().getChildren().get( 0 );
assertEquals( eval1,
eval2 );
assertFalse( eval1.equals( eval3 ) );
assertFalse( eval2.equals( eval3 ) );
}
public void testOr() throws Exception {
final PackageBuilder builder = new PackageBuilder();
final Rule rule = createRule( new OrDescr(),
builder,
"modify(stilton);" );
assertLength( 0,
builder.getErrors() );
final And lhs = rule.getLhs();
assertLength( 1,
lhs.getChildren() );
final Or or = (Or) lhs.getChildren().get( 0 );
assertLength( 1,
or.getChildren() );
final Column column = (Column) or.getChildren().get( 0 );
final LiteralConstraint literalConstarint = (LiteralConstraint) column.getConstraints().get( 0 );
}
public void testAnd() throws Exception {
final PackageBuilder builder = new PackageBuilder();
final Rule rule = createRule( new AndDescr(),
builder,
"modify(stilton);" );
assertLength( 0,
builder.getErrors() );
final And lhs = rule.getLhs();
assertLength( 1,
lhs.getChildren() );
final And and = (And) lhs.getChildren().get( 0 );
assertLength( 1,
and.getChildren() );
final Column column = (Column) and.getChildren().get( 0 );
final LiteralConstraint literalConstarint = (LiteralConstraint) column.getConstraints().get( 0 );
}
public void testNot() throws Exception {
PackageBuilder builder = new PackageBuilder();
// Make sure we can't accessa variable bound inside the not node
Rule rule = createRule( new NotDescr(),
builder,
"modify(stilton);" );
assertEquals( 1,
builder.getErrors().length );
builder = new PackageBuilder();
rule = createRule( new NotDescr(),
builder,
"" );
assertEquals( 0,
builder.getErrors().length );
final And lhs = rule.getLhs();
assertLength( 1,
lhs.getChildren() );
final Not not = (Not) lhs.getChildren().get( 0 );
assertLength( 1,
not.getChildren() );
final Column column = (Column) not.getChildren().get( 0 );
final LiteralConstraint literalConstarint = (LiteralConstraint) column.getConstraints().get( 0 );
}
public void testExists() throws Exception {
PackageBuilder builder = new PackageBuilder();
// Make sure we can't accessa variable bound inside the not node
Rule rule = createRule( new ExistsDescr(),
builder,
"modify(stilton);" );
assertEquals( 1,
builder.getErrors().length );
builder = new PackageBuilder();
rule = createRule( new ExistsDescr(),
builder,
"" );
assertEquals( 0,
builder.getErrors().length );
final And lhs = rule.getLhs();
assertLength( 1,
lhs.getChildren() );
final Exists exists = (Exists) lhs.getChildren().get( 0 );
assertLength( 1,
exists.getChildren() );
final Column column = (Column) exists.getChildren().get( 0 );
final LiteralConstraint literalConstarint = (LiteralConstraint) column.getConstraints().get( 0 );
}
public void testNumbers() throws Exception {
// test boolean
createLiteralRule( new LiteralDescr( "booleanPrimitive",
"==",
"true" ) );
// test boolean
createLiteralRule( new LiteralDescr( "booleanPrimitive",
"==",
"false" ) );
// test char
createLiteralRule( new LiteralDescr( "charPrimitive",
"==",
"a" ) );
// test byte
createLiteralRule( new LiteralDescr( "bytePrimitive",
"==",
"1" ) );
createLiteralRule( new LiteralDescr( "bytePrimitive",
"==",
"0" ) );
createLiteralRule( new LiteralDescr( "bytePrimitive",
"==",
"-1" ) );
// test short
createLiteralRule( new LiteralDescr( "shortPrimitive",
"==",
"1" ) );
createLiteralRule( new LiteralDescr( "shortPrimitive",
"==",
"0" ) );
createLiteralRule( new LiteralDescr( "shortPrimitive",
"==",
"-1" ) );
// test int
createLiteralRule( new LiteralDescr( "intPrimitive",
"==",
"1" ) );
createLiteralRule( new LiteralDescr( "intPrimitive",
"==",
"0" ) );
createLiteralRule( new LiteralDescr( "intPrimitive",
"==",
"-1" ) );
// // test long
createLiteralRule( new LiteralDescr( "longPrimitive",
"==",
"1" ) );
createLiteralRule( new LiteralDescr( "longPrimitive",
"==",
"0" ) );
createLiteralRule( new LiteralDescr( "longPrimitive",
"==",
"-1" ) );
// test float
createLiteralRule( new LiteralDescr( "floatPrimitive",
"==",
"1.1" ) );
createLiteralRule( new LiteralDescr( "floatPrimitive",
"==",
"0" ) );
createLiteralRule( new LiteralDescr( "floatPrimitive",
"==",
"-1.1" ) );
// test double
createLiteralRule( new LiteralDescr( "doublePrimitive",
"==",
"1.1" ) );
createLiteralRule( new LiteralDescr( "doublePrimitive",
"==",
"0" ) );
createLiteralRule( new LiteralDescr( "doublePrimitive",
"==",
"-1.1" ) );
}
public void testNull() {
final PackageBuilder builder = new PackageBuilder();
final PackageDescr packageDescr = new PackageDescr( "p1" );
final RuleDescr ruleDescr = new RuleDescr( "rule-1" );
packageDescr.addRule( ruleDescr );
final AndDescr lhs = new AndDescr();
ruleDescr.setLhs( lhs );
final ColumnDescr columnDescr = new ColumnDescr( Cheese.class.getName(),
"stilton" );
final LiteralDescr literalDescr = new LiteralDescr( "type",
"==",
null );
columnDescr.addDescr( literalDescr );
ruleDescr.setConsequence( "" );
builder.addPackage( packageDescr );
final Package pkg = (Package) builder.getPackage();
final Rule rule = pkg.getRule( "rule-1" );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -