/** Column headers must be valid. */
 @Test
 public void testBadColumnHeader() {
   try {
     makeRuleSet();
     makeRuleTable();
     makeRow(11, "Condition", "CONDITION", "A", "SMURF", "P");
     listener.finishSheet();
     fail("should have failed");
   } catch (DecisionTableParseException e) {
     String badCell = RuleSheetParserUtil.rc2name(11, 4);
     System.err.println(e.getMessage());
     assertTrue(e.getMessage().contains(badCell));
   }
 }
 /** Duplications of several columns are not permitted : PRIORITY/P. */
 @Test
 public void testTooManyColumnsPriority() {
   try {
     makeRuleSet();
     makeRuleTable();
     makeRow(11, "C", "C", "A", "PRIORITY", "P");
     listener.finishSheet();
     fail("should have failed");
   } catch (DecisionTableParseException e) {
     String badCell = RuleSheetParserUtil.rc2name(11, 5);
     System.err.println(e.getMessage());
     assertTrue(e.getMessage().contains(badCell));
   }
 }
 /** Must have a type for pattern below a condition, not a snippet. */
 @Test
 public void testMissingCondition() {
   try {
     makeRuleSet();
     makeRuleTable();
     makeRow(11, "C", "C", "C", "A", "A");
     makeRow(12, "attr == $param", "attr == $param", "attr == $param", "action();", "action();");
     listener.finishSheet();
     fail("should have failed");
   } catch (DecisionTableParseException e) {
     String badCell = RuleSheetParserUtil.rc2name(12, 1);
     System.err.println(e.getMessage());
     assertTrue(e.getMessage().contains(badCell));
   }
 }
 /** Must not have snippet for attribute */
 @Test
 public void testSnippetForAttribute() {
   try {
     makeRuleSet();
     makeRuleTable();
     makeRow(11, "C", "A", "G");
     makeRow(12, "Foo", "Foo");
     makeRow(13, "attr == $param", "x", "XXX");
     makeRow(15, "1", "show()", "10");
     listener.finishSheet();
     fail("should have failed");
   } catch (DecisionTableParseException e) {
     String badCell = RuleSheetParserUtil.rc2name(13, 3);
     System.err.println(e.getMessage());
     assertTrue(e.getMessage().contains(badCell));
   }
 }
 /** Spurious code snippet. */
 @Test
 public void testSpuriousCodeSnippet() {
   try {
     makeRuleSet();
     makeRuleTable();
     makeRow(11, "C", "C", "A");
     makeRow(12, "Foo", "Foo");
     makeRow(13, "attr == $param", "attr == $param", "action();", "attr > $param");
     makeRow(15, "1", "2", "");
     listener.finishSheet();
     fail("should have failed");
   } catch (DecisionTableParseException e) {
     String badCell = RuleSheetParserUtil.rc2name(13, 4);
     System.err.println(e.getMessage());
     assertTrue(e.getMessage().contains(badCell));
   }
 }
 /** Check correct rendering of string-valued attribute */
 @Test
 public void testRuleAttributeRendering() {
   makeRuleSet();
   makeRuleTable();
   makeRow(11, "C", "A", "G");
   makeRow(12, "Foo", "Foo");
   makeRow(13, "attr == $param", "x");
   makeRow(15, "1", "show()", "foo bar");
   makeRow(16, "2", "list()", "\"10\" group\"");
   listener.finishSheet();
   Package p = listener.getRuleSet();
   DRLOutput dout = new DRLOutput();
   p.renderDRL(dout);
   String drl = dout.getDRL();
   // System.out.println( drl );
   assertTrue(drl.contains("agenda-group \"foo bar\""));
   assertTrue(drl.contains("agenda-group \"10\\\" group\""));
 }
 /** Check correct rendering of package level attributes */
 @Test
 public void testPackageAttributeRendering() {
   makeRuleSet();
   makeAttribute("NO-LOOP", "true");
   makeAttribute("agenda-group", "agroup");
   makeRuleTable();
   makeRow(11, "C", "A", "P");
   makeRow(12, "foo:Foo", "foo");
   makeRow(13, "attr == $param", "x($param)");
   makeRow(15, "1", "1", "100");
   listener.finishSheet();
   Package p = listener.getRuleSet();
   DRLOutput dout = new DRLOutput();
   p.renderDRL(dout);
   String drl = dout.getDRL();
   // System.out.println( drl );
   assertTrue(drl.contains("no-loop true"));
   assertTrue(drl.contains("agenda-group \"agroup\""));
 }
  @Test
  public void testMetadata() {
    makeRuleSet();
    makeRuleTable();
    makeRow(11, "C", "A", "@", "@");
    makeRow(12, "foo: Foo", "foo");
    makeRow(13, "attr == $param", "goaway($param)", "Author($param)", "Version($1-$2)");
    makeRow(15, "1", "1", "J.W.Goethe", "3,14");
    makeRow(16, "2", "2", "", "");
    listener.finishSheet();
    Package p = listener.getRuleSet();
    DRLOutput dout = new DRLOutput();
    p.renderDRL(dout);
    String drl = dout.getDRL();

    assertTrue(drl.contains("@Author(J.W.Goethe)"));
    assertTrue(drl.contains("@Version(3-14)"));
    assertFalse(drl.contains("@Author()"));
    assertFalse(drl.contains("@Version(-)"));
  }
 /** Must have a code snippet in an action. */
 @Test
 public void testMissingCodeSnippetAction() {
   try {
     makeRuleSet();
     makeRuleTable();
     makeRow(11, "C", "A");
     makeRow(12, "foo: Foo", "Bar()");
     makeRow(13, "attr == $param");
     makeRow(15, "1", "1");
     makeRow(16, "2", "2");
     listener.finishSheet();
     Package p = listener.getRuleSet();
     DRLOutput dout = new DRLOutput();
     p.renderDRL(dout);
     String drl = dout.getDRL();
     System.out.println(drl);
     fail("should have failed");
   } catch (DecisionTableParseException e) {
     String badCell = RuleSheetParserUtil.rc2name(13, 2);
     System.err.println(e.getMessage());
     assertTrue(e.getMessage().contains(badCell));
   }
 }
示例#10
0
 /** Duplicate package level attribute */
 @Test
 public void testDuplicatePackageAttribute() {
   try {
     makeRuleSet();
     makeAttribute("agenda-group", "agroup"); // B3, C3
     makeAttribute("agenda-group", "bgroup"); // B3. B4
     makeRuleTable();
     makeRow(11, "C", "A", "P");
     makeRow(12, "Foo", "Foo");
     makeRow(13, "attr == $param", "x");
     makeRow(15, "1", "show()", "10");
     listener.finishSheet();
     Package p = listener.getRuleSet();
     DRLOutput dout = new DRLOutput();
     p.renderDRL(dout);
     String drl = dout.getDRL();
     // System.out.println( drl );
     fail("should have failed");
   } catch (DecisionTableParseException e) {
     System.err.println(e.getMessage());
     assertTrue(e.getMessage().contains("C3, C4"));
   }
 }