📄 integrationcases.java
字号:
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
final List list = new ArrayList();
workingMemory.setGlobal( "list",
list );
final PersonInterface bill = new Person( "bill",
null,
12 );
bill.setBigDecimal( new BigDecimal( "42" ) );
workingMemory.assertObject( new BigDecimal( "43" ) );
workingMemory.assertObject( bill );
workingMemory.fireAllRules();
assertEquals( 1,
list.size() );
}
public void testCell() throws Exception {
final Cell cell1 = new Cell( 9 );
final Cell cell = new Cell( 0 );
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "evalmodify.drl" ) ) );
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( builder.getPackage() );
final WorkingMemory memory = ruleBase.newWorkingMemory();
memory.assertObject( cell1 );
memory.assertObject( cell );
memory.fireAllRules();
assertEquals( 9,
cell.getValue() );
}
public void testOr() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "or_test.drl" ) ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
final List list = new ArrayList();
workingMemory.setGlobal( "list",
list );
final Cheese cheddar = new Cheese( "cheddar",
5 );
final FactHandle h = workingMemory.assertObject( cheddar );
workingMemory.fireAllRules();
//just one added
assertEquals( "got cheese",
list.get( 0 ) );
assertEquals( 1,
list.size() );
workingMemory.retractObject( h );
workingMemory.fireAllRules();
//still just one
assertEquals( 1,
list.size() );
workingMemory.assertObject( new Cheese( "stilton",
5 ) );
workingMemory.fireAllRules();
//now have one more
assertEquals( 2,
list.size() );
}
public void testQuery() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "simple_query_test.drl" ) ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
final Cheese stilton = new Cheese( "stinky",
5 );
workingMemory.assertObject( stilton );
final QueryResults results = workingMemory.getQueryResults( "simple query" );
assertEquals( 1,
results.size() );
}
public void testEval() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "eval_rule_test.drl" ) ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
workingMemory.setGlobal( "five",
new Integer( 5 ) );
final List list = new ArrayList();
workingMemory.setGlobal( "list",
list );
final Cheese stilton = new Cheese( "stilton",
5 );
workingMemory.assertObject( stilton );
workingMemory.fireAllRules();
assertEquals( stilton,
list.get( 0 ) );
}
public void testJaninoEval() throws Exception {
PackageBuilderConfiguration config = new PackageBuilderConfiguration();
config.setCompiler( PackageBuilderConfiguration.JANINO );
final PackageBuilder builder = new PackageBuilder( config );
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "eval_rule_test.drl" ) ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
workingMemory.setGlobal( "five",
new Integer( 5 ) );
final List list = new ArrayList();
workingMemory.setGlobal( "list",
list );
final Cheese stilton = new Cheese( "stilton",
5 );
workingMemory.assertObject( stilton );
workingMemory.fireAllRules();
assertEquals( stilton,
list.get( 0 ) );
}
public void testEvalMore() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "eval_rule_test_more.drl" ) ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
final List list = new ArrayList();
workingMemory.setGlobal( "list",
list );
workingMemory.assertObject( "foo" );
workingMemory.fireAllRules();
assertEquals( "foo",
list.get( 0 ) );
}
public void testReturnValue() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "returnvalue_rule_test.drl" ) ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
workingMemory.setGlobal( "two",
new Integer( 2 ) );
final List list = new ArrayList();
workingMemory.setGlobal( "list",
list );
final PersonInterface peter = new Person( "peter",
null,
12 );
workingMemory.assertObject( peter );
final PersonInterface jane = new Person( "jane",
null,
10 );
workingMemory.assertObject( jane );
workingMemory.fireAllRules();
assertEquals( jane,
list.get( 0 ) );
assertEquals( peter,
list.get( 1 ) );
}
public void testPredicate() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "predicate_rule_test.drl" ) ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
workingMemory.setGlobal( "two",
new Integer( 2 ) );
final List list = new ArrayList();
workingMemory.setGlobal( "list",
list );
final PersonInterface peter = new Person( "peter",
null,
12 );
workingMemory.assertObject( peter );
final PersonInterface jane = new Person( "jane",
null,
10 );
workingMemory.assertObject( jane );
workingMemory.fireAllRules();
assertEquals( jane,
list.get( 0 ) );
assertEquals( peter,
list.get( 1 ) );
}
public void testNot() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "not_rule_test.drl" ) ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
final List list = new ArrayList();
workingMemory.setGlobal( "list",
list );
final Cheese stilton = new Cheese( "stilton",
5 );
final FactHandle stiltonHandle = workingMemory.assertObject( stilton );
final Cheese cheddar = new Cheese( "cheddar",
7 );
final FactHandle cheddarHandle = workingMemory.assertObject( cheddar );
workingMemory.fireAllRules();
assertEquals( 0,
list.size() );
workingMemory.retractObject( stiltonHandle );
workingMemory.fireAllRules();
assertEquals( 4,
list.size() );
Assert.assertTrue( list.contains( new Integer( 5 ) ) );
Assert.assertTrue( list.contains( new Integer( 6 ) ) );
Assert.assertTrue( list.contains( new Integer( 7 ) ) );
Assert.assertTrue( list.contains( new Integer( 8 ) ) );
}
public void testNotWithBindings() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "not_with_bindings_rule_test.drl" ) ) );
final Package pkg = builder.getPackage();
final Rule rule = pkg.getRules()[0];
assertTrue( rule.isValid() );
assertEquals( 0,
builder.getErrors().length );
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
final List list = new ArrayList();
workingMemory.setGlobal( "list",
list );
final Cheese stilton = new Cheese( "stilton",
5 );
final FactHandle stiltonHandle = workingMemory.assertObject( stilton );
final Cheese cheddar = new Cheese( "cheddar",
7 );
final FactHandle cheddarHandle = workingMemory.assertObject( cheddar );
final PersonInterface paul = new Person( "paul",
"stilton",
12 );
workingMemory.assertObject( paul );
workingMemory.fireAllRules();
assertEquals( 0,
list.size() );
workingMemory.retractObject( stiltonHandle );
workingMemory.fireAllRules();
assertEquals( 1,
list.size() );
}
public void testNullBehaviour() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "null_behaviour.drl" ) ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
final PersonInterface p1 = new Person( "michael",
"food",
40 );
final PersonInterface p2 = new Person( null,
"drink",
30 );
workingMemory.assertObject( p1 );
workingMemory.assertObject( p2 );
workingMemory.fireAllRules();
}
public void testNullConstraint() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "null_constraint.drl" ) ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
final List foo = new ArrayList();
workingMemory.setGlobal( "messages",
foo );
final PersonInterface p1 = new Person( null,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -