[jboss-svn-commits] JBL Code SVN: r9125 - in labs/jbossrules/trunk/drools-decisiontables/src: test/java/org/drools/decisiontable/parser and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Jan 30 06:13:11 EST 2007
Author: stevearoonie
Date: 2007-01-30 06:13:11 -0500 (Tue, 30 Jan 2007)
New Revision: 9125
Added:
labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_complex.drl
labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_invalid1.drl
labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_invalid2.drl
labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_invalid3.drl
labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_invalid4.drl
Modified:
labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/DefaultTemplateContainer.java
labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/DefaultTemplateContainerTest.java
Log:
Expand on validation for Template Container parsing and improve test
Modified: labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/DefaultTemplateContainer.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/DefaultTemplateContainer.java 2007-01-30 10:54:43 UTC (rev 9124)
+++ labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/parser/DefaultTemplateContainer.java 2007-01-30 11:13:11 UTC (rev 9125)
@@ -32,15 +32,24 @@
private Map templates = new HashMap();
public DefaultTemplateContainer(final String template) {
- final InputStream templateStream = this.getClass().getResourceAsStream(
- template);
- parseTemplate(templateStream);
+ this(DefaultTemplateContainer.class.getResourceAsStream(template));
}
public DefaultTemplateContainer(final InputStream templateStream) {
parseTemplate(templateStream);
+ validateTemplate();
}
+ private void validateTemplate() {
+ if (columns.size() == 0) {
+ throw new DecisionTableParseException("Missing header columns");
+ }
+ if (templates.size() == 0) {
+ throw new DecisionTableParseException("Missing templates");
+ }
+
+ }
+
private void parseTemplate(final InputStream templateStream) {
try {
final ColumnFactory cf = new ColumnFactory();
@@ -66,6 +75,10 @@
addTemplate(template);
} else if (line.startsWith("package")) {
+ if (inHeader == false) {
+ throw new DecisionTableParseException(
+ "Missing header");
+ }
inHeader = false;
header.append(line).append("\n");
} else if (inHeader) {
@@ -88,12 +101,16 @@
}
}
+ if (inTemplate) {
+ throw new DecisionTableParseException("Missing end template");
+ }
this.header = header.toString();
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
- closeStream(templateStream);
+ if (templateStream != null)
+ closeStream(templateStream);
}
}
@@ -101,7 +118,9 @@
templates.put(template.getName(), template);
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.drools.decisiontable.parser.TemplateContainer#getTemplates()
*/
public Map getTemplates() {
@@ -112,14 +131,18 @@
columns.add(c);
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.drools.decisiontable.parser.TemplateContainer#getColumns()
*/
public Column[] getColumns() {
return (Column[]) columns.toArray(new Column[columns.size()]);
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.drools.decisiontable.parser.TemplateContainer#getHeader()
*/
public String getHeader() {
Modified: labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/DefaultTemplateContainerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/DefaultTemplateContainerTest.java 2007-01-30 10:54:43 UTC (rev 9124)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/DefaultTemplateContainerTest.java 2007-01-30 11:13:11 UTC (rev 9125)
@@ -8,9 +8,12 @@
public class DefaultTemplateContainerTest extends TestCase {
public void testParseTemplate() {
- InputStream is = DefaultTemplateContainerTest.class.getResourceAsStream("/templates/test_template_simple.drl");
+ InputStream is = DefaultTemplateContainerTest.class
+ .getResourceAsStream("/templates/test_template_simple.drl");
DefaultTemplateContainer t = new DefaultTemplateContainer(is);
assertEquals("package This_is_a_ruleset;\n", t.getHeader());
+ assertEquals(1, t.getColumns().length);
+ assertEquals("name", t.getColumns()[0].getName());
Map templates = t.getTemplates();
assertEquals(1, templates.size());
RuleTemplate template = (RuleTemplate) templates.get("template1");
@@ -19,7 +22,105 @@
assertEquals(1, columns.size());
assertEquals("name", columns.get(0));
String contents = template.getContents();
- assertTrue(contents.startsWith("rule \"How cool is $name$ $row.rowNumber$\""));
+ assertTrue(contents
+ .startsWith("rule \"How cool is $name$ $row.rowNumber$\""));
assertTrue(contents.endsWith("then\nend\n"));
}
+
+ public void testParseTemplateNoHeader() {
+ try {
+ InputStream is = DefaultTemplateContainerTest.class
+ .getResourceAsStream("/templates/test_template_invalid1.drl");
+ new DefaultTemplateContainer(is);
+ fail("DecisionTableParseException expected");
+ } catch (DecisionTableParseException expected) {
+ assertEquals("Missing header", expected.getMessage());
+ }
+ }
+
+ public void testParseTemplateNoHeaderColumns() {
+ try {
+ InputStream is = DefaultTemplateContainerTest.class
+ .getResourceAsStream("/templates/test_template_invalid2.drl");
+ new DefaultTemplateContainer(is);
+ fail("DecisionTableParseException expected");
+ } catch (DecisionTableParseException expected) {
+ assertEquals("Missing header columns", expected.getMessage());
+ }
+ }
+
+ public void testParseTemplateNoTemplates() {
+ try {
+ InputStream is = DefaultTemplateContainerTest.class
+ .getResourceAsStream("/templates/test_template_invalid3.drl");
+ new DefaultTemplateContainer(is);
+ fail("DecisionTableParseException expected");
+ } catch (DecisionTableParseException expected) {
+ assertEquals("Missing templates", expected.getMessage());
+ }
+ }
+ public void testParseTemplateNoEndTemplate() {
+ try {
+ InputStream is = DefaultTemplateContainerTest.class
+ .getResourceAsStream("/templates/test_template_invalid4.drl");
+ new DefaultTemplateContainer(is);
+ fail("DecisionTableParseException expected");
+ } catch (DecisionTableParseException expected) {
+ assertEquals("Missing end template", expected.getMessage());
+ }
+ }
+
+ public void testNullInputStream() {
+ try {
+ new DefaultTemplateContainer((InputStream) null);
+ fail("NullPointerException expected");
+ } catch (NullPointerException expected) {
+ }
+ }
+
+ public void testInvalidTemplatePath() {
+ try {
+ new DefaultTemplateContainer("invalid path");
+ fail("NullPointerException expected");
+ } catch (NullPointerException expected) {
+ }
+ }
+
+ public void testParseComplexTemplate() {
+ InputStream is = DefaultTemplateContainerTest.class
+ .getResourceAsStream("/templates/test_template_complex.drl");
+ DefaultTemplateContainer t = new DefaultTemplateContainer(is);
+ assertEquals("package This_is_a_ruleset;\n", t.getHeader());
+ Column[] columnList = t.getColumns();
+ assertEquals(5, columnList.length);
+ assertEquals("first_name", columnList[0].getName());
+ assertEquals("last_name", columnList[1].getName());
+ assertEquals("age", columnList[2].getName());
+ assertEquals("city", columnList[3].getName());
+ assertEquals("phone", columnList[4].getName());
+ Map templates = t.getTemplates();
+ assertEquals(2, templates.size());
+
+ RuleTemplate template = (RuleTemplate) templates.get("template1");
+ assertNotNull(template);
+ List columns = template.getColumns();
+ assertEquals(1, columns.size());
+ assertEquals("first_name", columns.get(0));
+ String contents = template.getContents();
+ assertTrue(contents
+ .startsWith("rule \"How cool is $first_name$ $row.rowNumber$\""));
+ assertTrue(contents.endsWith("then\nend\n"));
+
+ template = (RuleTemplate) templates.get("template2");
+ assertNotNull(template);
+ columns = template.getColumns();
+ assertEquals(2, columns.size());
+ assertEquals("first_name", columns.get(0));
+ assertEquals("last_name", columns.get(1));
+ contents = template.getContents();
+ assertTrue(contents
+ .startsWith("rule \"How uncool is $first_name$ $row.rowNumber$\""));
+ assertTrue(contents.endsWith("then\nend\n"));
+
+ }
}
Added: labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_complex.drl
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_complex.drl (rev 0)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_complex.drl 2007-01-30 11:13:11 UTC (rev 9125)
@@ -0,0 +1,27 @@
+template header
+first_name
+last_name
+age
+city
+phone
+
+package This_is_a_ruleset;
+
+template "template1"
+first_name
+rule "How cool is $first_name$ $row.rowNumber$"
+ when
+ user.getName().equals("$first_name$")
+ then
+end
+end template
+
+template "template2"
+first_name
+last_name
+rule "How uncool is $first_name$ $row.rowNumber$"
+ when
+ user.getFirstName().equals("$first_name$")
+ then
+end
+end template
Added: labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_invalid1.drl
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_invalid1.drl (rev 0)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_invalid1.drl 2007-01-30 11:13:11 UTC (rev 9125)
@@ -0,0 +1,11 @@
+package This_is_a_ruleset;
+
+template "template1"
+name
+rule "How cool is $name$ $row.rowNumber$"
+ when
+ user.getName().equals("$name$")
+ then
+end
+end template
+
Added: labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_invalid2.drl
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_invalid2.drl (rev 0)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_invalid2.drl 2007-01-30 11:13:11 UTC (rev 9125)
@@ -0,0 +1,13 @@
+template header
+
+package This_is_a_ruleset;
+
+template "template1"
+name
+rule "How cool is $name$ $row.rowNumber$"
+ when
+ user.getName().equals("$name$")
+ then
+end
+end template
+
Added: labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_invalid3.drl
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_invalid3.drl (rev 0)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_invalid3.drl 2007-01-30 11:13:11 UTC (rev 9125)
@@ -0,0 +1,13 @@
+template header
+name
+
+package This_is_a_ruleset;
+
+name
+rule "How cool is $name$ $row.rowNumber$"
+ when
+ user.getName().equals("$name$")
+ then
+end
+end template
+
Added: labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_invalid4.drl
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_invalid4.drl (rev 0)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/resources/templates/test_template_invalid4.drl 2007-01-30 11:13:11 UTC (rev 9125)
@@ -0,0 +1,14 @@
+template header
+name
+
+package This_is_a_ruleset;
+
+template "template1"
+name
+rule "How cool is $name$ $row.rowNumber$"
+ when
+ user.getName().equals("$name$")
+ then
+end
+
+
More information about the jboss-svn-commits
mailing list