blob: 852f331803bb11e31ea9d216ddb5538fba506c7f [file] [log] [blame]
description("Test the parsing of the mix-blend-mode property.");
function jsWrapperClass(node)
{
if (!node)
return "[null]";
var string = Object.prototype.toString.apply(node);
return string.substr(8, string.length - 9);
}
function shouldBeType(expression, className, prototypeName, constructorName)
{
if (!prototypeName)
prototypeName = className + "Prototype";
if (!constructorName)
constructorName = className + "Constructor";
shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
shouldBe("jsWrapperClass(" + expression + ".constructor)", "'" + constructorName + "'");
}
// These have to be global for the test helpers to see them.
var stylesheet, cssRule, declaration, blendModeRule, subRule;
var styleElement = document.createElement("style");
document.head.appendChild(styleElement);
stylesheet = styleElement.sheet;
function testBlendModeRule(description, rule, expectedLength, expectedValue, expectedTypes, expectedTexts)
{
debug("");
debug(description + " : " + rule);
stylesheet.insertRule("body { mix-blend-mode: " + rule + "; }", 0);
cssRule = stylesheet.cssRules.item(0);
shouldBe("cssRule.type", "1");
declaration = cssRule.style;
shouldBe("declaration.length", "1");
shouldBe("declaration.getPropertyValue('mix-blend-mode')", "'" + expectedValue + "'");
blendModeRule = declaration.getPropertyCSSValue('mix-blend-mode');
shouldBeType("blendModeRule", "CSSPrimitiveValue");
}
var blendmodes = ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "plus-darker"];
for(x in blendmodes)
testBlendModeRule("Basic reference", blendmodes[x], 1, blendmodes[x]);
successfullyParsed = true;