" {print 'blah blahblahblah' |escapeHtml|insertWordBreaks:8}\n";
List<StandaloneNode> nodes = parseTemplateBody(templateBody);
assertEquals(4, nodes.size());
PrintNode pn0 = (PrintNode) nodes.get(0);
assertEquals(SyntaxVersion.V2, pn0.getSyntaxVersion());
assertEquals("$boo.foo", pn0.getExprText());
assertEquals(0, pn0.getChildren().size());
assertEquals("FOO", pn0.genBasePlaceholderName());
assertEquals("{$boo.foo}", pn0.toSourceString());
assertTrue(pn0.getExprUnion().getExpr().getChild(0) instanceof DataRefNode);
PrintNode pn1 = (PrintNode) nodes.get(1);
assertTrue(pn0.genSamenessKey().equals(pn1.genSamenessKey()));
assertTrue(pn1.getExprUnion().getExpr().getChild(0) instanceof DataRefNode);
PrintNode pn2 = (PrintNode) nodes.get(2);
assertEquals(SyntaxVersion.V2, pn2.getSyntaxVersion());
assertEquals("$goo + 1", pn2.getExprText());
assertEquals(1, pn2.getChildren().size());
PrintDirectiveNode pn2d0 = pn2.getChild(0);
assertEquals(SyntaxVersion.V1, pn2d0.getSyntaxVersion());
assertEquals("|noAutoescape", pn2d0.getName());
assertEquals("XXX", pn2.genBasePlaceholderName());
assertTrue(pn2.getExprUnion().getExpr().getChild(0) instanceof PlusOpNode);
PrintNode pn3 = (PrintNode) nodes.get(3);
assertEquals(SyntaxVersion.V2, pn3.getSyntaxVersion());
assertEquals("'blah blahblahblah'", pn3.getExprText());
assertEquals(2, pn3.getChildren().size());
PrintDirectiveNode pn3d0 = pn3.getChild(0);
assertEquals(SyntaxVersion.V2, pn3d0.getSyntaxVersion());
assertEquals("|escapeHtml", pn3d0.getName());
PrintDirectiveNode pn3d1 = pn3.getChild(1);
assertEquals(SyntaxVersion.V2, pn3d1.getSyntaxVersion());
assertEquals("|insertWordBreaks", pn3d1.getName());
assertEquals(8, ((IntegerNode) pn3d1.getArgs().get(0).getChild(0)).getValue());
assertEquals("XXX", pn3.genBasePlaceholderName());
assertTrue(pn3.getExprUnion().getExpr().getChild(0) instanceof StringNode);
assertFalse(pn0.genSamenessKey().equals(pn2.genSamenessKey()));
assertFalse(pn3.genSamenessKey().equals(pn0.genSamenessKey()));
}