aboutsummaryrefslogtreecommitdiffstats
path: root/tests/wpt/css-tests/css-values-3_dev/xhtml1/support/properties.js
diff options
context:
space:
mode:
Diffstat (limited to 'tests/wpt/css-tests/css-values-3_dev/xhtml1/support/properties.js')
-rw-r--r--tests/wpt/css-tests/css-values-3_dev/xhtml1/support/properties.js449
1 files changed, 0 insertions, 449 deletions
diff --git a/tests/wpt/css-tests/css-values-3_dev/xhtml1/support/properties.js b/tests/wpt/css-tests/css-values-3_dev/xhtml1/support/properties.js
deleted file mode 100644
index 01fb6e7336f..00000000000
--- a/tests/wpt/css-tests/css-values-3_dev/xhtml1/support/properties.js
+++ /dev/null
@@ -1,449 +0,0 @@
-(function(root){
-
-/*
- * General Value Types definition
- * they return an object of arrays of type { <name>: [<start-value>, <end-value>], ... }
- */
-var values = {
- 'length' : function() {
- // http://www.w3.org/TR/css3-values/#lengths
- return {
- // CSS Values and Module Level 3
- // ch: ['1ch', '10ch'],
- // rem: ['1rem', '10rem'],
- // vw: ['1vw', '10vw'],
- // vh: ['1vh', '10vh'],
- // vmin: ['1vmin', '10vmin'],
- // vmax: ['1vmax', '10vmax'],
- // CSS Values and Module Level 2
- pt: ['1pt', '10pt'],
- pc: ['1pc', '10pc'],
- px: ['1px', '10px'],
- // CSS Values and Module Level 1
- em: ['1em', '10em'],
- ex: ['1ex', '10ex'],
- mm: ['1mm', '10mm'],
- cm: ['1cm', '10cm'],
- 'in': ['1in', '10in']
- };
- },
- 'length-em': function() {
- return {
- em: ['1.1em', '1.5em']
- };
- },
- 'percentage': function() {
- // http://www.w3.org/TR/css3-values/#percentages
- return {
- '%': ['33%', '80%']
- };
- },
- 'color': function() {
- // http://www.w3.org/TR/css3-values/#colors
- // http://www.w3.org/TR/css3-color/
- return {
- rgba: ['rgba(100,100,100,1)', 'rgba(10,10,10,0.4)']
- };
- },
- 'rectangle': function() {
- // http://www.w3.org/TR/CSS2/visufx.html#value-def-shape
- return {
- rectangle: ['rect(10px,10px,10px,10px)', 'rect(15px,15px,5px,5px)']
- };
- },
- 'font-weight': function() {
- // http://www.w3.org/TR/css3-fonts/#font-weight-prop
- return {
- keyword: ["normal", "bold"],
- numeric: ["100", "900"]
- };
- },
- 'number': function() {
- // http://www.w3.org/TR/css3-values/#number
- return {
- integer: ["1", "10"],
- decimal: ["1.1", "9.55"]
- };
- },
- 'number[0,1]': function() {
- // http://www.w3.org/TR/css3-values/#number
- // applies to [0,1]-ranged properties like opacity
- return {
- "zero-to-one": ["0.2", "0.9"]
- };
- },
- 'integer': function() {
- // http://www.w3.org/TR/css3-values/#integer
- return {
- integer: ["1", "10"]
- };
- },
- 'shadow': function() {
- // http://www.w3.org/TR/css-text-decor-3/#text-shadow-property
- return {
- shadow: ['rgba(0,0,0,0.1) 5px 6px 7px', 'rgba(10,10,10,0.9) 5px 6px 7px']
- };
- },
- 'visibility': function() {
- // http://www.w3.org/TR/CSS2/visufx.html#visibility
- return {
- keyword: ['visible', 'hidden', {discrete: true}]
- };
- },
- 'auto': function(property) {
- var types = properties[property] || unspecified_properties[property];
- var val = values[types[0]](property);
- var key = Object.keys(val).shift();
- return {
- to: [val[key][1], 'auto'],
- from: ['auto', val[key][1]]
- };
- },
- // types reqired for non-specified properties
- 'border-radius': function() {
- return {
- px: ['1px', '10px'],
- "px-px": ['1px 3px', '10px 13px']
- };
- },
- 'image' : function() {
- var prefix = getValueVendorPrefix('background-image', 'linear-gradient(top, hsl(0, 80%, 70%), #bada55)');
- return {
- // Chrome implements this
- url: ['url(support/one.gif)', 'url(support/two.gif)'],
- data: ['url(data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=)', 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==)'],
- // A hunch, as from the spec:
- // http://www.w3.org/TR/css3-transitions/#animatable-types
- // gradient: interpolated via the positions and colors of each stop. They must have the same type (radial or linear) and same number of stops in order to be animated. Note: [CSS3-IMAGES] may extend this definition.
- gradient: [prefix + 'linear-gradient(top, hsl(0, 80%, 70%), #bada55)', prefix + 'linear-gradient(top, #bada55, hsl(0, 80%, 70%))']
- };
- },
- 'background-size': function() {
- return {
- keyword: ['cover', 'contain']
- };
- },
- 'box-shadow': function() {
- // http://www.w3.org/TR/css3-background/#ltshadowgt
- return {
- shadow: ['60px -16px teal', '60px -16px red']
- };
- },
- 'vertical': function() {
- return {
- keyword: ['top', 'bottom']
- };
- },
- 'horizontal': function() {
- return {
- keyword: ['left', 'right']
- };
- },
- 'font-stretch': function() {
- return {
- keyword: ['condensed', 'expanded']
- };
- },
- 'transform': function() {
- return {
- rotate: ['rotate(10deg)', 'rotate(20deg)']
- };
- },
- 'position': function() {
- return {
- 'static to absolute': ['static', 'absolute', {discrete: true}],
- 'relative to absolute': ['relative', 'absolute', {discrete: true}],
- 'absolute to fixed': ['absolute', 'fixed', {discrete: true}]
- };
- },
- 'display': function() {
- return {
- 'static to absolute': ['none', 'block', {discrete: true}],
- 'block to inline-block': ['block', 'inline-block', {discrete: true}]
- };
- }
-};
-
-/*
- * Property to Type table
- * (as stated in specification)
- */
-var properties = {
- 'background-color': ['color'],
- 'background-position': ['length', 'percentage'],
-
- 'border-top-width': ['length'],
- 'border-right-width': ['length'],
- 'border-bottom-width': ['length'],
- 'border-left-width': ['length'],
-
- 'border-top-color': ['color'],
- 'border-right-color': ['color'],
- 'border-bottom-color': ['color'],
- 'border-left-color': ['color'],
-
- 'padding-bottom': ['length'],
- 'padding-left': ['length'],
- 'padding-right': ['length'],
- 'padding-top': ['length'],
-
- 'margin-bottom': ['length'],
- 'margin-left': ['length'],
- 'margin-right': ['length'],
- 'margin-top': ['length'],
-
- 'height': ['length', 'percentage'],
- 'width': ['length', 'percentage'],
- 'min-height': ['length', 'percentage'],
- 'min-width': ['length', 'percentage'],
- 'max-height': ['length', 'percentage'],
- 'max-width': ['length', 'percentage'],
-
- 'top': ['length', 'percentage'],
- 'right': ['length', 'percentage'],
- 'bottom': ['length', 'percentage'],
- 'left': ['length', 'percentage'],
-
- 'color': ['color'],
- 'font-size': ['length', 'percentage'],
- 'font-weight': ['font-weight'],
- 'line-height': ['number', 'length', 'percentage'],
- 'letter-spacing': ['length'],
- // Note: percentage is Level3 and not implemented anywhere yet
- // https://drafts.csswg.org/css3-text/#word-spacing
- 'word-spacing': ['length', 'percentage'],
- 'text-indent': ['length', 'percentage'],
- 'text-shadow': ['shadow'],
-
- 'outline-color': ['color'],
- // outline-offset <integer> used to be an error in the spec
- 'outline-offset': ['length'],
- 'outline-width': ['length'],
-
- 'clip': ['rectangle'],
- // Note: doesn't seem implemented anywhere
- 'crop': ['rectangle'],
-
- 'vertical-align': ['length', 'percentage'],
- 'opacity': ['number[0,1]'],
- 'visibility': ['visibility'],
- 'z-index': ['integer']
-};
-
-/*
- * Property to auto-value mapping
- * (lazily taken from http://www.siliconbaytraining.com/pages/csspv.html)
- */
-var properties_auto = [
- 'margin-top',
- 'margin-right',
- 'margin-bottom',
- 'margin-left',
- 'height',
- 'width',
- 'clip',
- 'marker-offset',
- 'top',
- 'right',
- 'left',
- 'bottom',
- 'z-index'
-];
-
-/*
- * Property to Type table
- * (missing value-types of specified properties)
- */
-var missing_properties = {
- 'margin-bottom': ['percentage'],
- 'margin-left': ['percentage'],
- 'margin-right': ['percentage'],
- 'margin-top': ['percentage'],
- 'padding-bottom': ['percentage'],
- 'padding-left': ['percentage'],
- 'padding-right': ['percentage'],
- 'padding-top': ['percentage'],
- 'vertical-align': ['vertical']
-};
-
-/*
- * Property to Type table
- * (properties that haven't been specified but implemented)
- */
-var unspecified_properties = {
- // http://oli.jp/2010/css-animatable-properties/
- 'border-top-left-radius': ['border-radius'],
- 'border-top-right-radius': ['border-radius'],
- 'border-bottom-left-radius': ['border-radius'],
- 'border-bottom-right-radius': ['border-radius'],
- 'background-image': ['image'],
- 'background-size': ['background-size'],
- // https://drafts.csswg.org/css3-background/#the-box-shadow
- // Animatable: yes, except between inner and outer shadows (Transition to/from an absent shadow is a transition to/from ‘0 0 transparent’ or ‘0 0 transparent inset’, as appropriate.)
- 'box-shadow': ['box-shadow'],
- 'font-size-adjust': ['number'],
- 'font-stretch': ['font-stretch'],
- 'marker-offset': ['length'],
- 'text-decoration-color': ['color'],
- 'column-count': ['integer'],
- 'column-gap': ['length'],
- 'column-rule-color': ['color'],
- 'column-rule-width': ['length'],
- 'column-width': ['length'],
- 'transform': ['transform'],
- 'transform-origin': ['horizontal'],
- 'zoom': ['number'],
- 'outline-radius-topleft': ['length', 'percentage'],
- 'outline-radius-topright': ['length', 'percentage'],
- 'outline-radius-bottomright': ['length', 'percentage'],
- 'outline-radius-bottomleft': ['length', 'percentage'],
- 'display': ['display'],
- 'position': ['position']
-};
-
-/*
- * additional styles required to actually render
- * (different browsers expect different environment)
- */
-var additional_styles = {
- // all browsers
- 'border-top-width': {'border-top-style' : 'solid'},
- 'border-right-width': {'border-right-style' : 'solid'},
- 'border-bottom-width': {'border-bottom-style' : 'solid'},
- 'border-left-width': {'border-left-style' : 'solid'},
- 'top': {'position': 'absolute'},
- 'right': {'position': 'absolute'},
- 'bottom': {'position': 'absolute'},
- 'left': {'position': 'absolute'},
- 'z-index': {'position': 'absolute'},
- 'outline-offset': {'outline-style': 'solid'},
- 'outline-width': {'outline-style': 'solid'},
- 'word-spacing': {'width': '100px', 'height': '100px'},
- // unspecified properties
- 'column-rule-width': {'column-rule-style': 'solid'},
- 'position': {'width': '50px', 'height': '50px', top: '10px', left: '50px'}
-};
-
-/*
- * additional styles required *on the parent* to actually render
- * (different browsers expect different environment)
- */
-var parent_styles = {
- 'border-top-width': {'border-top-style' : 'solid'},
- 'border-right-width': {'border-right-style' : 'solid'},
- 'border-bottom-width': {'border-bottom-style' : 'solid'},
- 'border-left-width': {'border-left-style' : 'solid'},
- 'height': {'width': '100px', 'height': '100px'},
- 'min-height': {'width': '100px', 'height': '100px'},
- 'max-height': {'width': '100px', 'height': '100px'},
- 'width': {'width': '100px', 'height': '100px'},
- 'min-width': {'width': '100px', 'height': '100px'},
- 'max-width': {'width': '100px', 'height': '100px'},
- // unspecified properties
- 'position': {'position': 'relative', 'width': '100px', 'height': '100px'},
- // inheritance tests
- 'top': {'width': '100px', 'height': '100px', 'position': 'relative'},
- 'right': {'width': '100px', 'height': '100px', 'position': 'relative'},
- 'bottom': {'width': '100px', 'height': '100px', 'position': 'relative'},
- 'left': {'width': '100px', 'height': '100px', 'position': 'relative'}
-};
-
-
-function assemble(props) {
- var tests = [];
-
- // assemble tests
- for (var property in props) {
- props[property].forEach(function(type) {
- var _values = values[type](property);
- Object.keys(_values).forEach(function(unit) {
- var data = {
- name: property + ' ' + type + '(' + unit + ')',
- property: property,
- valueType : type,
- unit : unit,
- parentStyle: extend({}, parent_styles[property] || {}),
- from: extend({}, additional_styles[property] || {}),
- to: {}
- };
-
- data.from[property] = _values[unit][0];
- data.to[property] = _values[unit][1];
- data.flags = _values[unit][2] || {};
-
- tests.push(data);
- });
- });
- }
-
- return tests;
-}
-
-root.getPropertyTests = function() {
- return assemble(properties);
-};
-
-root.getMissingPropertyTests = function() {
- return assemble(missing_properties);
-};
-
-root.getUnspecifiedPropertyTests = function() {
- return assemble(unspecified_properties);
-};
-
-root.getFontSizeRelativePropertyTests = function() {
- var accepted = {};
-
- for (var key in properties) {
- if (!Object.prototype.hasOwnProperty.call(properties, key) || key === "font-size") {
- continue;
- }
-
- if (properties[key].indexOf('length') > -1) {
- accepted[key] = ['length-em'];
- }
- }
-
- return assemble(accepted);
-};
-
-root.getAutoPropertyTests = function() {
- var accepted = {};
-
- for (var i = 0, key; key = properties_auto[i]; i++) {
- accepted[key] = ['auto'];
- }
-
- return assemble(accepted);
-};
-
-root.filterPropertyTests = function(tests, names) {
- var allowed = {};
- var accepted = [];
-
- if (typeof names === "string") {
- names = [names];
- }
-
- if (!(names instanceof RegExp)) {
- names.forEach(function(name) {
- allowed[name] = true;
- });
- }
-
- tests.forEach(function(test) {
- if (names instanceof RegExp) {
- if (!test.name.match(names)) {
- return;
- }
- } else if (!allowed[test.name]) {
- return;
- }
-
- accepted.push(test);
- });
-
- return accepted;
-};
-
-})(window);