// TODO(oana): Added a task in tracker for fixing these dependencies and
  // making the mocking of objects easier.
  public void testEnterArgumentNode() {
    CssDefinitionNode def = new CssDefinitionNode(new CssLiteralNode("COLOR"));

    MutatingVisitController visitController = createMock(MutatingVisitController.class);
    CssTree tree = createMock(CssTree.class);
    expect(tree.getMutatingVisitController()).andReturn(visitController).anyTimes();
    ConstantDefinitions definitions = EasyMock.createMock(ConstantDefinitions.class);
    expect(definitions.getConstantDefinition("COLOR")).andReturn(def).anyTimes();
    replay(definitions);
    replay(tree);

    ReplaceConstantReferences pass =
        new ReplaceConstantReferences(
            tree,
            definitions,
            true /* removeDefs */,
            new DummyErrorManager(),
            true /* allowUndefinedConstants */);

    Capture<List<CssNode>> tempList = new Capture<List<CssNode>>();
    visitController.replaceCurrentBlockChildWith(capture(tempList), eq(true));
    replay(visitController);

    CssConstantReferenceNode node = new CssConstantReferenceNode("COLOR", null);
    pass.enterArgumentNode(node);
    verify(visitController);
    assertEquals(1, tempList.getValue().size());
    assertEquals(CssCompositeValueNode.class, tempList.getValue().get(0).getClass());
  }
  public void testRunPass() {
    MutatingVisitController visitController = createMock(MutatingVisitController.class);
    CssTree tree = createMock(CssTree.class);
    expect(tree.getMutatingVisitController()).andReturn(visitController).anyTimes();
    // We need to have this replayed because in the constructor of
    // ReplaceConstantReferences pass we need tree.getMutatingVisitController().
    replay(tree);

    ReplaceConstantReferences pass =
        new ReplaceConstantReferences(
            tree,
            new ConstantDefinitions(),
            true /* removeDefs */,
            new DummyErrorManager(),
            true /* allowUndefinedConstants */);
    visitController.startVisit(pass);
    replay(visitController);

    pass.runPass();
    verify(visitController);
  }
예제 #3
0
  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]]}]");
  }