mirror of
https://github.com/servo/servo.git
synced 2025-06-27 02:23:41 +01:00
96 lines
4 KiB
JavaScript
96 lines
4 KiB
JavaScript
'use strict';
|
|
|
|
(function() {
|
|
|
|
function assert_initial(property, initial) {
|
|
let initialDesc = initial;
|
|
if (Array.isArray(initial))
|
|
initialDesc = '[' + initial.map(e => "'" + e + "'").join(' or ') + ']';
|
|
|
|
test(() => {
|
|
const target = document.getElementById('target');
|
|
assert_true(property in getComputedStyle(target), property + " doesn't seem to be supported in the computed style");
|
|
target.style[property] = 'initial';
|
|
if (Array.isArray(initial)) {
|
|
assert_in_array(getComputedStyle(target)[property], initial);
|
|
} else {
|
|
assert_equals(getComputedStyle(target)[property], initial);
|
|
}
|
|
target.style[property] = '';
|
|
}, 'Property ' + property + ' has initial value ' + initialDesc);
|
|
}
|
|
|
|
/**
|
|
* Create tests that a CSS property inherits and has the given initial value.
|
|
*
|
|
* The current document must have an element #target within element #container.
|
|
*
|
|
* @param {string} property The name of the CSS property being tested.
|
|
* @param {string|array} initial The computed value for 'initial' or a list
|
|
* of acceptable computed value serializations.
|
|
* @param {string} other An arbitrary value for the property that
|
|
* round trips and is distinct from the initial
|
|
* value.
|
|
*/
|
|
function assert_inherited(property, initial, other) {
|
|
if (initial)
|
|
assert_initial(property, initial);
|
|
|
|
test(() => {
|
|
const container = document.getElementById('container');
|
|
const target = document.getElementById('target');
|
|
assert_true(property in getComputedStyle(target), property + " doesn't seem to be supported in the computed style");
|
|
container.style[property] = 'initial';
|
|
target.style[property] = 'unset';
|
|
assert_not_equals(getComputedStyle(container)[property], other);
|
|
assert_not_equals(getComputedStyle(target)[property], other);
|
|
container.style[property] = other;
|
|
assert_equals(getComputedStyle(container)[property], other);
|
|
assert_equals(getComputedStyle(target)[property], other);
|
|
target.style[property] = 'initial';
|
|
assert_equals(getComputedStyle(container)[property], other);
|
|
assert_not_equals(getComputedStyle(target)[property], other);
|
|
target.style[property] = 'inherit';
|
|
assert_equals(getComputedStyle(target)[property], other);
|
|
container.style[property] = '';
|
|
target.style[property] = '';
|
|
}, 'Property ' + property + ' inherits');
|
|
}
|
|
|
|
/**
|
|
* Create tests that a CSS property does not inherit, and that it has the
|
|
* given initial value.
|
|
*
|
|
* The current document must have an element #target within element #container.
|
|
*
|
|
* @param {string} property The name of the CSS property being tested.
|
|
* @param {string|array} initial The computed value for 'initial' or a list
|
|
* of acceptable computed value serializations.
|
|
* @param {string} other An arbitrary value for the property that
|
|
* round trips and is distinct from the initial
|
|
* value.
|
|
*/
|
|
function assert_not_inherited(property, initial, other) {
|
|
assert_initial(property, initial);
|
|
|
|
test(() => {
|
|
const container = document.getElementById('container');
|
|
const target = document.getElementById('target');
|
|
assert_true(property in getComputedStyle(target));
|
|
container.style[property] = 'initial';
|
|
target.style[property] = 'unset';
|
|
assert_not_equals(getComputedStyle(container)[property], other);
|
|
assert_not_equals(getComputedStyle(target)[property], other);
|
|
container.style[property] = other;
|
|
assert_equals(getComputedStyle(container)[property], other);
|
|
assert_not_equals(getComputedStyle(target)[property], other);
|
|
target.style[property] = 'inherit';
|
|
assert_equals(getComputedStyle(target)[property], other);
|
|
container.style[property] = '';
|
|
target.style[property] = '';
|
|
}, 'Property ' + property + ' does not inherit');
|
|
}
|
|
|
|
window.assert_inherited = assert_inherited;
|
|
window.assert_not_inherited = assert_not_inherited;
|
|
})();
|