Skip to content

Commit

Permalink
BZ983963 - Cannot build project with rule template
Browse files Browse the repository at this point in the history
  • Loading branch information
manstis committed Aug 28, 2013
1 parent a6bf19f commit a11ddd5
Show file tree
Hide file tree
Showing 3 changed files with 120 additions and 95 deletions.
Expand Up @@ -75,9 +75,9 @@ private void parseTemplate(final InputStream templateStream) {
inHeader = true;
} else if (line.startsWith("template")) {
inTemplate = true;
inHeader = false;
String quotedName = line.substring(8).trim();
quotedName = quotedName.substring(1, quotedName
.length() - 1);
quotedName = quotedName.substring(1, quotedName.length() - 1);
template = new RuleTemplate(quotedName, this);
addTemplate(template);

Expand Down
Expand Up @@ -9,159 +9,172 @@
import static org.junit.Assert.*;

public class DefaultTemplateContainerTest {

@Test
public void testParseTemplate() {
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());
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<String, RuleTemplate> templates = t.getTemplates();
assertEquals( 1, templates.size() );
RuleTemplate template = templates.get( "template1" );
assertNotNull( template );
List<TemplateColumn> columns = template.getColumns();
assertEquals( 1, columns.size() );
TemplateColumn column = (TemplateColumn) columns.get( 0 );
assertEquals( "name", column.getName() );
String contents = template.getContents();
assertTrue( contents.startsWith( "rule \"How cool is @{name} @{row.rowNumber}\"" ) );
assertTrue( contents.endsWith( "then\nend\n" ) );
}

@Test
public void testParseTemplateNoPackage() {
InputStream is = DefaultTemplateContainerTest.class.getResourceAsStream( "/templates/test_template_no_package.drl" );
DefaultTemplateContainer t = new DefaultTemplateContainer( is );
assertEquals( "",
t.getHeader() );
assertEquals( 1,
t.getColumns().length );
assertEquals( "name",
t.getColumns()[ 0 ].getName() );
Map<String, RuleTemplate> templates = t.getTemplates();
assertEquals(1, templates.size());
RuleTemplate template = templates.get("template1");
assertNotNull(template);
assertEquals( 1,
templates.size() );
RuleTemplate template = templates.get( "template1" );
assertNotNull( template );
List<TemplateColumn> columns = template.getColumns();
assertEquals(1, columns.size());
TemplateColumn column = (TemplateColumn) columns.get(0);
assertEquals("name", column.getName());
assertEquals( 1, columns.size() );
TemplateColumn column = (TemplateColumn) columns.get( 0 );
assertEquals( "name", column.getName() );
String contents = template.getContents();
assertTrue(contents
.startsWith("rule \"How cool is @{name} @{row.rowNumber}\""));
assertTrue(contents.endsWith("then\nend\n"));
assertTrue( contents.startsWith( "rule \"Rule_@{row.rowNumber}\"" ) );
assertTrue( contents.endsWith( "then\nend\n" ) );
}

@Test
public void testParseTemplateConditions() {
InputStream is = DefaultTemplateContainerTest.class
.getResourceAsStream("/templates/test_template_conditions.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());
InputStream is = DefaultTemplateContainerTest.class.getResourceAsStream( "/templates/test_template_conditions.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<String, RuleTemplate> templates = t.getTemplates();
assertEquals(1, templates.size());
RuleTemplate template = (RuleTemplate) templates.get("template1");
assertNotNull(template);
assertEquals( 1, templates.size() );
RuleTemplate template = (RuleTemplate) templates.get( "template1" );
assertNotNull( template );
List<TemplateColumn> columns = template.getColumns();
assertEquals(1, columns.size());
TemplateColumn templateColumn = (TemplateColumn) columns.get(0);
assertEquals("name", templateColumn.getName());
assertEquals("== \"name1\"", templateColumn.getCondition());
assertEquals( 1, columns.size() );
TemplateColumn templateColumn = (TemplateColumn) columns.get( 0 );
assertEquals( "name", templateColumn.getName() );
assertEquals( "== \"name1\"", templateColumn.getCondition() );
String contents = template.getContents();
assertTrue(contents
.startsWith("rule \"How cool is @{name} @{row.rowNumber}\""));
assertTrue(contents.endsWith("then\nend\n"));
assertTrue( contents.startsWith( "rule \"How cool is @{name} @{row.rowNumber}\"" ) );
assertTrue( contents.endsWith( "then\nend\n" ) );
}

@Test
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());
InputStream is = DefaultTemplateContainerTest.class.getResourceAsStream( "/templates/test_template_invalid1.drl" );
new DefaultTemplateContainer( is );
fail( "DecisionTableParseException expected" );
} catch ( DecisionTableParseException expected ) {
assertEquals( "Missing header", expected.getMessage() );
}
}

@Test
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());
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() );
}
}

@Test
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());
InputStream is = DefaultTemplateContainerTest.class.getResourceAsStream( "/templates/test_template_invalid3.drl" );
new DefaultTemplateContainer( is );
fail( "DecisionTableParseException expected" );
} catch ( DecisionTableParseException expected ) {
assertEquals( "Missing templates", expected.getMessage() );
}
}

@Test
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());
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() );
}
}

@Test
public void testNullInputStream() {
try {
new DefaultTemplateContainer((InputStream) null);
fail("NullPointerException expected");
} catch (NullPointerException expected) {
new DefaultTemplateContainer( (InputStream) null );
fail( "NullPointerException expected" );
} catch ( NullPointerException expected ) {
}
}

@Test
public void testInvalidTemplatePath() {
try {
new DefaultTemplateContainer("invalid path");
fail("NullPointerException expected");
} catch (NullPointerException expected) {
new DefaultTemplateContainer( "invalid path" );
fail( "NullPointerException expected" );
} catch ( NullPointerException expected ) {
}
}

@Test
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());
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());
assertEquals(columnList[1], t.getColumn("last_name"));
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() );
assertEquals( columnList[ 1 ], t.getColumn( "last_name" ) );
Map<String, RuleTemplate> templates = t.getTemplates();
assertEquals(2, templates.size());
assertEquals( 2, templates.size() );

RuleTemplate template = (RuleTemplate) templates.get("template1");
assertNotNull(template);
RuleTemplate template = (RuleTemplate) templates.get( "template1" );
assertNotNull( template );
List<TemplateColumn> columns = template.getColumns();
assertEquals(1, columns.size());
TemplateColumn column = (TemplateColumn) columns.get(0);
assertEquals("first_name", column.getName());
assertEquals( 1, columns.size() );
TemplateColumn column = (TemplateColumn) columns.get( 0 );
assertEquals( "first_name", column.getName() );

String contents = template.getContents();
assertTrue(contents
.startsWith("rule \"How cool is @{first_name} @{row.rowNumber}\""));
assertTrue(contents.endsWith("then\nend\n"));
assertTrue( contents.startsWith( "rule \"How cool is @{first_name} @{row.rowNumber}\"" ) );
assertTrue( contents.endsWith( "then\nend\n" ) );

template = (RuleTemplate) templates.get("template2");
assertNotNull(template);
template = (RuleTemplate) templates.get( "template2" );
assertNotNull( template );
columns = template.getColumns();
assertEquals(2, columns.size());
column = (TemplateColumn) columns.get(0);
assertEquals("first_name", column.getName());
TemplateColumn column2 = (TemplateColumn) columns.get(1);
assertEquals("last_name", column2.getName());
assertEquals( 2, columns.size() );
column = (TemplateColumn) columns.get( 0 );
assertEquals( "first_name", column.getName() );
TemplateColumn column2 = (TemplateColumn) columns.get( 1 );
assertEquals( "last_name", column2.getName() );
contents = template.getContents();
assertTrue(contents
.startsWith("rule \"How uncool is @{first_name} @{row.rowNumber}\""));
assertTrue(contents.endsWith("then\nend\n"));


assertTrue( contents.startsWith( "rule \"How uncool is @{first_name} @{row.rowNumber}\"" ) );
assertTrue( contents.endsWith( "then\nend\n" ) );
}

}
@@ -0,0 +1,12 @@
template header
name

template "template1"
name
rule "Rule_@{row.rowNumber}"
when
User( name == "@{name}" )
then
end
end template

0 comments on commit a11ddd5

Please sign in to comment.