| // 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"); |
| } |