public void testParseRgbArgumentsOutOfRange() { // Surprisingly, these are valid according to W3C and should be clamped // to valid values. CssFunctionNode function = createRgbFunctionNode("1", "1", "300"); assertEquals("#0101ff", ColorValueOptimizer.parseRgbArguments(function)); function = createRgbFunctionNode("-10", "1", "1"); assertEquals("#000101", ColorValueOptimizer.parseRgbArguments(function)); }
public void testRunPass() { MutatingVisitController visitController = createMock(MutatingVisitController.class); ColorValueOptimizer pass = new ColorValueOptimizer(visitController); visitController.startVisit(pass); replay(visitController); pass.runPass(); verify(visitController); }
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]]}]"); }
public void testParseRgbArgumentsBadArgs() { CssFunctionNode function = new CssFunctionNode(CssFunctionNode.Function.byName("rgb"), null /* sourceCodeLocation */); List<CssValueNode> values = Lists.newArrayList(); values.add(createNumericNode("0")); CssFunctionArgumentsNode args = new CssFunctionArgumentsNode(values); function.setArguments(args); try { ColorValueOptimizer.parseRgbArguments(function); fail("Too few arguments to rgb function; should have thrown."); } catch (NumberFormatException expected) { // Exception is expected. } }
public void testParseRgbArguments() { CssFunctionNode function = createRgbFunctionNode("0", "15", "255"); assertEquals("#000fff", ColorValueOptimizer.parseRgbArguments(function)); function = createRgbFunctionNode("0%", "50%", "100%"); assertEquals("#0080ff", ColorValueOptimizer.parseRgbArguments(function)); }
public void testShortenHex() { assertEquals("#000", ColorValueOptimizer.shortenHexString("#000000")); assertEquals("#0a2", ColorValueOptimizer.shortenHexString("#00aa22")); }
public void testCanShortenHex() { assertTrue(ColorValueOptimizer.canShortenHexString("#000000")); assertTrue(ColorValueOptimizer.canShortenHexString("#00aa22")); assertFalse(ColorValueOptimizer.canShortenHexString("#000001")); assertFalse(ColorValueOptimizer.canShortenHexString("#000")); }