@Test public void testRuleRender() { final Rule rule = new Rule("myrule", new Integer(42), 1); rule.setComment("rule comments"); final Condition cond = new Condition(); cond.setComment("cond comment"); cond.setSnippet("cond snippet"); rule.addCondition(cond); final Consequence cons = new Consequence(); cons.setComment("cons comment"); cons.setSnippet("cons snippet;"); rule.addConsequence(cons); rule.addConsequence(cons); final DRLOutput out = new DRLOutput(); rule.renderDRL(out); final String drl = out.getDRL(); assertNotNull(drl); assertTrue(drl.indexOf("cond snippet") != -1); assertTrue(drl.indexOf("cons snippet") != -1); assertTrue(drl.indexOf("salience 42") != -1); assertTrue(drl.indexOf("salience 42") < drl.indexOf("when")); assertTrue(drl.indexOf("cond snippet") < drl.indexOf("then")); assertTrue(drl.indexOf("cons snippet;") > drl.indexOf("then")); assertTrue(drl.indexOf("rule") != -1); assertTrue(drl.indexOf("end") > drl.indexOf("rule ")); assertTrue(drl.indexOf("//rule comments") > -1); }
/** * This checks that if the rule has "nil" salience, then no salience value should be put in the * rule definition. This allows default salience to work as advertised. */ @Test public void testNilSalience() { Rule rule = new Rule("MyRule", null, 1); DRLOutput out = new DRLOutput(); rule.renderDRL(out); String xml = out.toString(); int idx = xml.indexOf("salience"); assertEquals(-1, idx); rule = new Rule("MyRule", new Integer(42), 1); out = new DRLOutput(); rule.renderDRL(out); xml = out.toString(); idx = xml.indexOf("salience"); assertTrue(idx > -1); }
@Test public void testMetadata() throws Exception { Rule rule = new Rule("la", new Integer(42), 2); rule.addMetadata("Author( A. U. Thor )"); rule.addMetadata("Revision( 42 )"); DRLOutput out = new DRLOutput(); rule.renderDRL(out); String result = out.toString(); assertTrue(result.contains("@Author( A. U. Thor )")); assertTrue(result.contains("@Revision( 42 )")); }
@Test public void testAttributes() throws Exception { Rule rule = new Rule("la", new Integer(42), 2); rule.setActivationGroup("foo"); rule.setNoLoop(true); rule.setRuleFlowGroup("ruleflowgroup"); rule.setDuration(42L); DRLOutput out = new DRLOutput(); rule.renderDRL(out); String result = out.toString(); assertTrue(result.indexOf("ruleflow-group \"ruleflowgroup\"") > -1); assertTrue(result.indexOf("no-loop true") > -1); assertTrue(result.indexOf("activation-group \"foo\"") > -1); assertTrue(result.indexOf("duration 42") > -1); }