blob: 31ecf4908a496cc55d0f2a2e6784d7fffd98cb6d [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// testharness.js and testharnessreport.js need to be included first
// Properties should be given in camelCase format
function convert_to_dashes(property) {
return property.replace(/[A-Z]/g, function(letter) {
return "-" + letter.toLowerCase();
}).replace('webkit', '-webkit');
}
function assert_valid_value(property, value, serializedValue, quirksModeOnly) {
if (arguments.length < 4)
quirksModeOnly = false;
if (arguments.length < 3)
serializedValue = value;
stringifiedValue = JSON.stringify(value);
dashedProperty = convert_to_dashes(property);
test(function(){
assert_equals(!quirksModeOnly, CSS.supports(dashedProperty, value));
}, "CSS.supports('" + dashedProperty + "', " + stringifiedValue + ") should return " + !quirksModeOnly);
test(function(){
var div = document.createElement('div');
div.style[property] = value;
assert_not_equals(div.style[property], "");
}, "e.style['" + property + "'] = " + stringifiedValue + " should set the value");
test(function(){
var div = document.createElement('div');
div.style[property] = value;
var readValue = div.style[property];
assert_equals(readValue, serializedValue);
div.style[property] = readValue;
assert_equals(div.style[property], readValue);
}, "Serialization should round-trip after setting e.style['" + property + "'] = " + stringifiedValue);
}
function assert_invalid_value(property, value) {
stringifiedValue = JSON.stringify(value);
dashedProperty = convert_to_dashes(property);
test(function(){
assert_false(CSS.supports(dashedProperty, value));
}, "CSS.supports('" + dashedProperty + "', " + stringifiedValue + ") should return false");
test(function(){
var div = document.createElement('div');
div.style[property] = value;
assert_equals(div.style[property], "");
}, "e.style['" + property + "'] = " + stringifiedValue + " should not set the value");
}