private static void loadRuleFile() { try { ClassLoader classLoader = Steward.class.getClassLoader(); PackageBuilderConfiguration configuration = new PackageBuilderConfiguration(classLoader); PackageBuilder builder = new PackageBuilder(configuration); Reader rulesFile = new InputStreamReader(Steward.class.getResourceAsStream("../Steward.drl")); builder.addPackageFromDrl(rulesFile); Reader ruleFlowFile1 = new InputStreamReader(Steward.class.getResourceAsStream("../ActionGeneration.rfm")); Reader ruleFlowFile2 = new InputStreamReader(Steward.class.getResourceAsStream("../ActionSelection.rfm")); builder.addRuleFlow(ruleFlowFile1); builder.addRuleFlow(ruleFlowFile2); if (builder.hasErrors()) { System.out.println(builder.getErrors().toString()); throw new RuntimeException("Unable to compile rule file."); } RuleBaseConfiguration ruleBaseConfiguration = new RuleBaseConfiguration(classLoader); ruleBase = RuleBaseFactory.newRuleBase(ruleBaseConfiguration); ruleBase.addPackage(builder.getPackage()); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } }
@Test public void testDuplicateLocalVariableMVELConsequence() throws Exception { final PackageBuilder builder = new PackageBuilder(); builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream("test_DuplicateLocalVariableMVELConsequence.drl"))); assertTrue(builder.hasErrors()); }
@Test public void testLogicalInsertionsWithModify() throws Exception { final PackageBuilder builder = new PackageBuilder(); builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream("test_LogicalInsertionsWithUpdate.drl"))); if (builder.hasErrors()) { fail(builder.getErrors().toString()); } final Package pkg = builder.getPackage(); RuleBase ruleBase = getRuleBase(); ruleBase.addPackage(pkg); ruleBase = SerializationHelper.serializeObject(ruleBase); StatefulSession workingMemory = ruleBase.newStatefulSession(); List l; final Person p = new Person("person"); p.setAge(2); FactHandle h = workingMemory.insert(p); assertEquals(1, IteratorToList.convert(workingMemory.iterateObjects()).size()); workingMemory.fireAllRules(); workingMemory = getSerialisedStatefulSession(workingMemory); assertEquals(2, IteratorToList.convert(workingMemory.iterateObjects()).size()); l = IteratorToList.convert( workingMemory.iterateObjects(new ClassObjectFilter(CheeseEqual.class))); assertEquals(1, l.size()); assertEquals(2, ((CheeseEqual) l.get(0)).getPrice()); h = getFactHandle(h, workingMemory); workingMemory.retract(h); workingMemory = getSerialisedStatefulSession(workingMemory); assertEquals(0, IteratorToList.convert(workingMemory.iterateObjects()).size()); TruthMaintenanceSystem tms = ((InternalWorkingMemory) workingMemory).getTruthMaintenanceSystem(); final java.lang.reflect.Field field = tms.getClass().getDeclaredField("assertMap"); field.setAccessible(true); final ObjectHashMap m = (ObjectHashMap) field.get(tms); field.setAccessible(false); assertEquals("assertMap should be empty", 0, m.size()); }