📄 integrationcases.java
字号:
final WorkingMemory wm = ruleBase.newWorkingMemory();
wm.assertObject( "rage" );
wm.assertObject( new Integer( 66 ) );
final List messages = new ArrayList();
wm.setGlobal( "messages",
messages );
wm.fireAllRules();
//should have NONE, as both conditions should be false.
assertEquals( 0,
messages.size() );
wm.assertObject( "fire" );
wm.fireAllRules();
//still no firings
assertEquals( 0,
messages.size() );
wm.assertObject( new Integer( 42 ) );
wm.fireAllRules();
//YOUR FIRED
assertEquals( 1,
messages.size() );
}
public void testPredicateAsFirstColumn() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "predicate_as_first_column.drl" ) ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
final Cheese mussarela = new Cheese( "Mussarela",
35 );
workingMemory.assertObject( mussarela );
final Cheese provolone = new Cheese( "Provolone",
20 );
workingMemory.assertObject( provolone );
workingMemory.fireAllRules();
Assert.assertEquals( "The rule is being incorrectly fired",
35,
mussarela.getPrice() );
Assert.assertEquals( "Rule is incorrectly being fired",
20,
provolone.getPrice() );
}
public void testSalience() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "salience_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 PersonInterface person = new Person( "Edson",
"cheese" );
workingMemory.assertObject( person );
workingMemory.fireAllRules();
Assert.assertEquals( "Two rules should have been fired",
2,
list.size() );
Assert.assertEquals( "Rule 3 should have been fired first",
"Rule 3",
list.get( 0 ) );
Assert.assertEquals( "Rule 2 should have been fired second",
"Rule 2",
list.get( 1 ) );
}
public void testNoLoop() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "no-loop.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 brie = new Cheese( "brie",
12 );
workingMemory.assertObject( brie );
workingMemory.fireAllRules();
Assert.assertEquals( "Should not loop and thus size should be 1",
1,
list.size() );
}
public void testConsequenceException() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_ConsequenceException.drl" ) ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
final Cheese brie = new Cheese( "brie",
12 );
workingMemory.assertObject( brie );
try {
workingMemory.fireAllRules();
fail( "Should throw an Exception from the Consequence" );
} catch ( final Exception e ) {
assertEquals( "this should throw an exception",
e.getCause().getMessage() );
}
}
public void testFunctionException() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_FunctionException.drl" ) ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
final Cheese brie = new Cheese( "brie",
12 );
workingMemory.assertObject( brie );
try {
workingMemory.fireAllRules();
fail( "Should throw an Exception from the Function" );
} catch ( final Exception e ) {
assertEquals( "this should throw an exception",
e.getCause().getMessage() );
}
}
public void testEvalException() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_EvalException.drl" ) ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
final Cheese brie = new Cheese( "brie",
12 );
try {
workingMemory.assertObject( brie );
workingMemory.fireAllRules();
fail( "Should throw an Exception from the Eval" );
} catch ( final Exception e ) {
assertEquals( "this should throw an exception",
e.getCause().getMessage() );
}
}
public void testPredicateException() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_PredicateException.drl" ) ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
final Cheese brie = new Cheese( "brie",
12 );
try {
workingMemory.assertObject( brie );
workingMemory.fireAllRules();
fail( "Should throw an Exception from the Predicate" );
} catch ( final Exception e ) {
assertEquals( "this should throw an exception",
e.getCause().getMessage() );
}
}
public void testReturnValueException() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_ReturnValueException.drl" ) ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
final Cheese brie = new Cheese( "brie",
12 );
try {
workingMemory.assertObject( brie );
workingMemory.fireAllRules();
fail( "Should throw an Exception from the ReturnValue" );
} catch ( final Exception e ) {
assertEquals( "this should throw an exception",
e.getCause().getMessage() );
}
}
public void testAgendaGroups() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_AgendaGroups.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 brie = new Cheese( "brie",
12 );
workingMemory.assertObject( brie );
workingMemory.fireAllRules();
assertEquals( 7,
list.size() );
assertEquals( "group3",
list.get( 0 ) );
assertEquals( "group4",
list.get( 1 ) );
assertEquals( "group3",
list.get( 2 ) );
assertEquals( "MAIN",
list.get( 3 ) );
assertEquals( "group1",
list.get( 4 ) );
assertEquals( "group1",
list.get( 5 ) );
assertEquals( "MAIN",
list.get( 6 ) );
workingMemory.setFocus( "group2" );
workingMemory.fireAllRules();
assertEquals( 8,
list.size() );
assertEquals( "group2",
list.get( 7 ) );
}
public void testDumpers() throws Exception {
final DrlParser parser = new DrlParser();
final PackageDescr pkg = parser.parse( new InputStreamReader( getClass().getResourceAsStream( "test_Dumpers.drl" ) ) );
PackageBuilder builder = new PackageBuilder();
builder.addPackage( pkg );
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( builder.getPackage() );
WorkingMemory workingMemory = ruleBase.newWorkingMemory();
List list = new ArrayList();
workingMemory.setGlobal( "list",
list );
final Cheese brie = new Cheese( "brie",
12 );
workingMemory.assertObject( brie );
workingMemory.fireAllRules();
assertEquals( 3,
list.size() );
assertEquals( "3 1",
list.get( 0 ) );
assertEquals( "MAIN",
list.get( 1 ) );
assertEquals( "1 1",
list.get( 2 ) );
final DrlDumper drlDumper = new DrlDumper();
final String drlResult = drlDumper.dump( pkg );
builder = new PackageBuilder();
builder.addPackageFromDrl( new StringReader( drlResult ) );
ruleBase = getRuleBase();
ruleBase.addPackage( builder.getPackage() );
workingMemory = ruleBase.newWorkingMemory();
list = new ArrayList();
workingMemory.setGlobal( "list",
list );
workingMemory.assertObject( brie );
workingMemory.fireAllRules();
assertEquals( 3,
list.size() );
assertEquals( "3 1",
list.get( 0 ) );
assertEquals( "MAIN",
list.get( 1 ) );
assertEquals( "1 1",
list.get( 2 ) );
final XmlDumper xmlDumper = new XmlDumper();
final String xmlResult = xmlDumper.dump( pkg );
builder = new PackageBuilder();
builder.addPackageFromXml( new StringReader( xmlResult ) );
ruleBase = getRuleBase();
ruleBase.addPackage( builder.getPackage() );
workingMemory = ruleBase.newWorkingMemory();
list = new ArrayList();
workingMemory.setGlobal( "list",
list );
workingMemory.assertObject( brie );
workingMemory.fireAllRules();
assertEquals( 3,
list.size() );
assertEquals( "3 1",
list.get( 0 ) );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -