use of com.google.template.soy.soytree.SoyNode.StandaloneNode in project closure-templates by google.
the class SoyTreeUtilsTest method testCloneListWithNewIds.
@Test
public final void testCloneListWithNewIds() throws Exception {
SoyFileNode soyFile = SoyFileSetParserBuilder.forFileContents(SOY_SOURCE_FOR_TESTING_CLONING).parse().fileSet().getChild(0);
TemplateNode template = soyFile.getChild(0);
int numChildren = template.numChildren();
List<StandaloneNode> clones = SoyTreeUtils.cloneListWithNewIds(template.getChildren(), soyFile.getParent().getNodeIdGenerator());
assertThat(clones).hasSize(numChildren);
for (int i = 0; i < numChildren; i++) {
StandaloneNode clone = clones.get(i);
StandaloneNode child = template.getChild(i);
assertFalse(clone.getId() == child.getId());
assertEquals(child.toSourceString(), clone.toSourceString());
}
}
use of com.google.template.soy.soytree.SoyNode.StandaloneNode in project closure-templates by google.
the class TemplateParserTest method testParseCallStmtWithPhname.
@SuppressWarnings({ "ConstantConditions" })
@Test
public void testParseCallStmtWithPhname() throws Exception {
String templateBody = "{@param animals:?}\n" + "{msg desc=\"...\"}\n" + " {call .booTemplate_ phname=\"booTemplate_\" /}\n" + " {call .booTemplate_ phname=\"booTemplate_\" /}\n" + " {delcall MySecretFeature.zooTemplate data=\"$animals\" phname=\"secret_zoo\"}\n" + " {param zoo: 0 /}\n" + " {/delcall}\n" + "{/msg}";
List<StandaloneNode> nodes = ((MsgFallbackGroupNode) parseTemplateContent(templateBody, FAIL).getChild(0)).getChild(0).getChildren();
assertEquals(3, nodes.size());
CallBasicNode cn0 = (CallBasicNode) ((MsgPlaceholderNode) nodes.get(0)).getChild(0);
assertEquals("BOO_TEMPLATE", cn0.genBasePhName());
assertEquals("brittle.test.ns.booTemplate_", cn0.getCalleeName());
assertEquals(".booTemplate_", cn0.getSourceCalleeName());
assertEquals(false, cn0.isPassingData());
assertEquals(false, cn0.isPassingAllData());
assertEquals(null, cn0.getDataExpr());
assertEquals(0, cn0.numChildren());
CallBasicNode cn1 = (CallBasicNode) ((MsgPlaceholderNode) nodes.get(1)).getChild(0);
CallDelegateNode cn2 = (CallDelegateNode) ((MsgPlaceholderNode) nodes.get(2)).getChild(0);
assertEquals("SECRET_ZOO", cn2.genBasePhName());
assertEquals("MySecretFeature.zooTemplate", cn2.getDelCalleeName());
assertEquals(true, cn2.isPassingData());
assertEquals(false, cn2.isPassingAllData());
assertTrue(cn2.getDataExpr().getRoot() != null);
assertEquals("$animals", cn2.getDataExpr().toSourceString());
assertEquals(1, cn2.numChildren());
// CallNodes are never same
assertFalse(cn0.genSamenessKey().equals(cn1.genSamenessKey()));
assertFalse(cn2.genSamenessKey().equals(cn0.genSamenessKey()));
}
use of com.google.template.soy.soytree.SoyNode.StandaloneNode in project closure-templates by google.
the class TemplateParserTest method testParseRawText.
// -----------------------------------------------------------------------------------------------
// Tests for recognition and parse results.
@Test
public void testParseRawText() throws Exception {
String templateBody = " {sp} aaa bbb \n" + " ccc {lb}{rb} ddd {\\n}\n" + " eee <br>\n" + " fff\n" + " {literal}ggg\n" + "hhh }{ {/literal} \n" + " \u2222\uEEEE\u9EC4\u607A\n";
List<StandaloneNode> nodes = parseTemplateContent(templateBody, FAIL).getChildren();
assertEquals(1, nodes.size());
RawTextNode rtn = (RawTextNode) nodes.get(0);
assertEquals(" aaa bbb ccc {} ddd \neee <br>fffggg\nhhh }{ \u2222\uEEEE\u9EC4\u607A", rtn.getRawText());
assertEquals(" aaa bbb ccc {lb}{rb} ddd {\\n}eee <br>fffggg{\\n}hhh {rb}{lb} \u2222\uEEEE\u9EC4\u607A", rtn.toSourceString());
}
use of com.google.template.soy.soytree.SoyNode.StandaloneNode in project closure-templates by google.
the class TemplateParserTest method testParseSwitchStmt.
@Test
public void testParseSwitchStmt() throws Exception {
String templateBody = "{@param boo: ?}{@param foo : ?}{@param moo : ?}\n" + " {switch $boo} {case 0}Blah\n" + " {case $foo.goo}\n" + " Bleh\n" + " {case -1, 1, $moo}\n" + " Bluh\n" + " {default}\n" + " Bloh\n" + " {/switch}\n";
List<StandaloneNode> nodes = parseTemplateContent(templateBody, FAIL).getChildren();
assertEquals(1, nodes.size());
SwitchNode sn = (SwitchNode) nodes.get(0);
assertEquals("$boo", sn.getExpr().toSourceString());
assertTrue(sn.getExpr().getRoot() instanceof VarRefNode);
assertEquals(4, sn.numChildren());
SwitchCaseNode scn0 = (SwitchCaseNode) sn.getChild(0);
assertEquals(1, scn0.getExprList().size());
assertTrue(scn0.getExprList().get(0).getRoot() instanceof IntegerNode);
assertEquals(0, ((IntegerNode) scn0.getExprList().get(0).getRoot()).getValue());
SwitchCaseNode scn1 = (SwitchCaseNode) sn.getChild(1);
assertEquals(1, scn1.getExprList().size());
assertTrue(scn1.getExprList().get(0).getRoot() instanceof FieldAccessNode);
assertEquals("$foo.goo", scn1.getExprList().get(0).getRoot().toSourceString());
SwitchCaseNode scn2 = (SwitchCaseNode) sn.getChild(2);
assertEquals(3, scn2.getExprList().size());
assertTrue(scn2.getExprList().get(0).getRoot() instanceof IntegerNode);
assertTrue(scn2.getExprList().get(1).getRoot() instanceof IntegerNode);
assertTrue(scn2.getExprList().get(2).getRoot() instanceof VarRefNode);
assertEquals("-1", scn2.getExprList().get(0).getRoot().toSourceString());
assertEquals("1", scn2.getExprList().get(1).getRoot().toSourceString());
assertEquals("$moo", scn2.getExprList().get(2).getRoot().toSourceString());
assertEquals("Bluh", ((RawTextNode) scn2.getChild(0)).getRawText());
assertEquals("Bloh", ((RawTextNode) ((SwitchDefaultNode) sn.getChild(3)).getChild(0)).getRawText());
assertEquals("{switch $boo}{case 0}Blah{case $foo.goo}Bleh{case -1, 1, $moo}Bluh{default}Bloh{/switch}", sn.toSourceString());
}
use of com.google.template.soy.soytree.SoyNode.StandaloneNode in project closure-templates by google.
the class TemplateParserTest method testParseMsgHtmlTagWithPhname.
@Test
public void testParseMsgHtmlTagWithPhname() throws Exception {
String templateBody = "{@param learnMoreUrl :?}\n" + " {msg desc=\"\"}\n" + " <a href=\"{$learnMoreUrl}\" phname=\"beginLearnMoreLink\">\n" + " Learn more\n" + " </A phname=\"end_LearnMore_LINK\">\n" + " <br phname=\"breakTag\" /><br phname=\"breakTag\" />" + "<br phname=\"break_tag\" />\n" + " {/msg}\n";
List<StandaloneNode> nodes = parseTemplateContent(templateBody, FAIL).getChildren();
assertEquals(1, nodes.size());
MsgNode mn0 = ((MsgFallbackGroupNode) nodes.get(0)).getChild(0);
assertEquals(6, mn0.numChildren());
MsgPlaceholderNode mpn0 = (MsgPlaceholderNode) mn0.getChild(0);
MsgHtmlTagNode mhtn0 = (MsgHtmlTagNode) mpn0.getChild(0);
assertEquals("a", mhtn0.getLcTagName());
assertEquals("BEGIN_LEARN_MORE_LINK", mhtn0.genBasePhName());
assertEquals("<a href=\"{$learnMoreUrl}\" phname=\"beginLearnMoreLink\">", mhtn0.toSourceString());
MsgPlaceholderNode mpn2 = (MsgPlaceholderNode) mn0.getChild(2);
MsgHtmlTagNode mhtn2 = (MsgHtmlTagNode) mpn2.getChild(0);
assertEquals("/a", mhtn2.getLcTagName());
assertEquals("END_LEARN_MORE_LINK", mhtn2.genBasePhName());
assertEquals("</A phname=\"end_LearnMore_LINK\">", mhtn2.toSourceString());
MsgPlaceholderNode mpn3 = (MsgPlaceholderNode) mn0.getChild(3);
MsgHtmlTagNode mhtn3 = (MsgHtmlTagNode) mpn3.getChild(0);
assertEquals("br", mhtn3.getLcTagName());
assertEquals("BREAK_TAG", mhtn3.genBasePhName());
assertEquals("<br phname=\"breakTag\"/>", mhtn3.toSourceString());
MsgPlaceholderNode mpn4 = (MsgPlaceholderNode) mn0.getChild(4);
MsgHtmlTagNode mhtn4 = (MsgHtmlTagNode) mpn4.getChild(0);
MsgPlaceholderNode mpn5 = (MsgPlaceholderNode) mn0.getChild(5);
MsgHtmlTagNode mhtn5 = (MsgHtmlTagNode) mpn5.getChild(0);
assertEquals("br", mhtn5.getLcTagName());
assertEquals("BREAK_TAG", mhtn5.genBasePhName());
assertEquals("<br phname=\"break_tag\"/>", mhtn5.toSourceString());
assertFalse(mhtn0.genSamenessKey().equals(mhtn2.genSamenessKey()));
assertFalse(mhtn0.genSamenessKey().equals(mhtn3.genSamenessKey()));
assertTrue(mhtn3.genSamenessKey().equals(mhtn4.genSamenessKey()));
assertFalse(mhtn3.genSamenessKey().equals(mhtn5.genSamenessKey()));
}
Aggregations