public void testEnterValueNode() { CssDefinitionNode def = new CssDefinitionNode(new CssLiteralNode("COLOR")); def.getParameters().add(new CssLiteralNode("red")); CssPropertyNode prop1 = new CssPropertyNode("padding", null); CssPropertyValueNode value1 = new CssPropertyValueNode(); BackDoorNodeMutation.addChildToBack(value1, new CssNumericNode("5", "px")); CssPropertyNode prop2 = new CssPropertyNode("color", null); CssPropertyValueNode value2 = new CssPropertyValueNode(); CssConstantReferenceNode ref = new CssConstantReferenceNode("COLOR", null); BackDoorNodeMutation.addChildToBack(value2, ref); CssDeclarationNode decl1 = new CssDeclarationNode(prop1); decl1.setPropertyValue(value1); CssDeclarationNode decl2 = new CssDeclarationNode(prop2); decl2.setPropertyValue(value2); CssRulesetNode ruleset = new CssRulesetNode(); CssSelectorNode sel = new CssSelectorNode("foo", null); ruleset.addSelector(sel); ruleset.addDeclaration(decl1); ruleset.addDeclaration(decl2); CssBlockNode body = new CssBlockNode(false); BackDoorNodeMutation.addChildToBack(body, ruleset); CssRootNode root = new CssRootNode(body); CssTree tree = new CssTree(null, root); ConstantDefinitions constantDefinitions = new ConstantDefinitions(); constantDefinitions.addConstantDefinition(def); ReplaceConstantReferences pass = new ReplaceConstantReferences( tree, constantDefinitions, true /* removeDefs */, new DummyErrorManager(), true /* allowUndefinedConstants */); pass.runPass(); assertEquals(tree.getRoot().getBody().toString(), "[[foo]{[padding:[5px], color:[red]]}]"); }
public void testEnterValueNode2() { CssPropertyNode prop = new CssPropertyNode("color", null); CssPropertyValueNode value = new CssPropertyValueNode(); BackDoorNodeMutation.addChildToBack(value, new CssHexColorNode("#123344", null)); CssDeclarationNode decl = new CssDeclarationNode(prop); decl.setPropertyValue(value); CssRulesetNode ruleset = new CssRulesetNode(); CssSelectorNode sel = new CssSelectorNode("foo", null); ruleset.addSelector(sel); ruleset.addDeclaration(decl); CssBlockNode body = new CssBlockNode(false); BackDoorNodeMutation.addChildToBack(body, ruleset); CssRootNode root = new CssRootNode(body); CssTree tree = new CssTree(null, root); ColorValueOptimizer pass = new ColorValueOptimizer(tree.getMutatingVisitController()); pass.runPass(); assertEquals(tree.getRoot().getBody().toString(), "[[foo]{[color:[#123344]]}]"); }