| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <style> | |
| #placeItemsNormal { | |
| place-items: normal; | |
| } | |
| #placeItemsBaseline { | |
| place-items: baseline; | |
| } | |
| #placeItemsFirstBaseline { | |
| place-items: first baseline; | |
| } | |
| #placeItemsLastBaseline { | |
| place-items: last baseline; | |
| } | |
| #placeItemsStart { | |
| place-items: start; | |
| } | |
| #placeItemsFlexStart { | |
| place-items: flex-start; | |
| } | |
| #placeItemsEnd { | |
| place-items: end; | |
| } | |
| #placeItemsSelfStart { | |
| place-items: self-start; | |
| } | |
| #placeItemsStretch { | |
| place-items: stretch; | |
| } | |
| #placeItemsStartEnd { | |
| place-items: start end; | |
| } | |
| #placeItemsStartSelfEnd { | |
| place-items: start self-end; | |
| } | |
| #placeItemsStartBaseline { | |
| place-items: start baseline; | |
| } | |
| <!-- Invalid CSS cases --> | |
| #placeItemsEmpty { | |
| place-items:; | |
| } | |
| #placeItemsAuto { | |
| place-items: auto; | |
| } | |
| #placeItemsCenterAuto { | |
| place-items: center auto; | |
| } | |
| #placeItemsNone { | |
| place-items: none; | |
| } | |
| #placeItemsSafe { | |
| place-items: safe; | |
| } | |
| #placeItemsStartSafe { | |
| place-items: start safe; | |
| } | |
| #placeItemsBaselineSafe { | |
| place-items: baseline safe; | |
| } | |
| #placeItemsStartEndLeft { | |
| place-items: start end left; | |
| } | |
| </style> | |
| <script src="../resources/testharness.js"></script> | |
| <script src="../resources/testharnessreport.js"></script> | |
| <script src="resources/alignment-parsing-utils-th.js"></script> | |
| </head> | |
| <body> | |
| <p>Test to verify that the new place-items alignment shorthand is parsed as expected and correctly sets the longhand values.</p> | |
| <div id="log"></div> | |
| <div id="placeItemsNormal"></div> | |
| <div id="placeItemsBaseline"></div> | |
| <div id="placeItemsFirstBaseline"></div> | |
| <div id="placeItemsLastBaseline"></div> | |
| <div id="placeItemsStart"></div> | |
| <div id="placeItemsFlexStart"></div> | |
| <div id="placeItemsEnd"></div> | |
| <div id="placeItemsSelfStart"></div> | |
| <div id="placeItemsStretch"></div> | |
| <div id="placeItemsStartEnd"></div> | |
| <div id="placeItemsStartSelfEnd"></div> | |
| <div id="placeItemsStartBaseline"></div> | |
| <div id="placeItemsEmpty"></div> | |
| <div id="placeItemsAuto"></div> | |
| <div id="placeItemsCenterAuto"></div> | |
| <div id="placeItemsNone"></div> | |
| <div id="placeItemsSafe"></div> | |
| <div id="placeItemsStartSafe"></div> | |
| <div id="placeItemsBaselineSafe"></div> | |
| <div id="placeItemsStartEndLeft"></div> | |
| <script> | |
| function checkPlaceItemsValues(element, value, alignValue, justifyValue) { | |
| var res = value.split(" "); | |
| if (res.length < 2) | |
| res[1] = res[0]; | |
| checkValues(element, "alignItems", "align-items", res[0], alignValue); | |
| checkValues(element, "justifyItems", "justify-items", res[1], justifyValue); | |
| } | |
| function checkPlaceItemsValuesJS(value, alignValue, justifyValue) | |
| { | |
| element = document.createElement("div"); | |
| document.body.appendChild(element); | |
| element.style.placeItems = value; | |
| checkValues(element, "placeItems", "place-items", value, alignValue + ' ' + justifyValue) | |
| checkPlaceItemsValues(element, value, alignValue, justifyValue) | |
| } | |
| function checkPlaceItemsValuesBadJS(value) | |
| { | |
| element.style.placeItems = ""; | |
| element.style.placeItems = value; | |
| checkPlaceItemsValues(element, "", "normal", "normal") | |
| } | |
| test(function() { | |
| checkValues(placeItemsNormal, "placeItems", "place-items", "", "normal"); | |
| checkPlaceItemsValues(placeItemsNormal, "", "normal", "normal"); | |
| }, "Test getting the Computed Value of place-items's longhand properties when setting 'normal' value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsBaseline, "placeItems", "place-items", "", "baseline"); | |
| checkPlaceItemsValues(placeItemsBaseline, "", "baseline", "baseline"); | |
| }, "Test getting the Computed Value of place-items's longhand properties when setting 'baseline' value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsFirstBaseline, "placeItems", "place-items", "", "baseline"); | |
| checkPlaceItemsValues(placeItemsFirstBaseline, "", "baseline", "baseline"); | |
| }, "Test getting the Computed Value of place-items's longhand properties when setting 'first baseline' value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsLastBaseline, "placeItems", "place-items", "", "last baseline"); | |
| checkPlaceItemsValues(placeItemsLastBaseline, "", "last baseline", "last baseline"); | |
| }, "Test getting the Computed Value of place-items's longhand properties when setting 'last baseline' value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsStart, "placeItems", "place-items", "", "start"); | |
| checkPlaceItemsValues(placeItemsStart, "", "start", "start"); | |
| }, "Test getting the Computed Value of place-items's longhand properties when setting 'start' value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsFlexStart, "placeItems", "place-items", "", "flex-start"); | |
| checkPlaceItemsValues(placeItemsFlexStart, "", "flex-start", "flex-start"); | |
| }, "Test getting the Computed Value of place-items's longhand properties when setting 'flex-start' value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsEnd, "placeItems", "place-items", "", "end"); | |
| checkPlaceItemsValues(placeItemsEnd, "", "end", "end"); | |
| }, "Test getting the Computed Value of place-items's longhand properties when setting 'end' value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsSelfStart, "placeItems", "place-items", "", "self-start"); | |
| checkPlaceItemsValues(placeItemsSelfStart, "", "self-start", "self-start"); | |
| }, "Test getting the Computed Value of place-items's longhand properties when setting 'self-start' value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsStretch, "placeItems", "place-items", "", "stretch"); | |
| checkPlaceItemsValues(placeItemsStretch, "", "stretch", "stretch"); | |
| }, "Test getting the Computed Value of place-items's longhand properties when setting 'stretch' value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsStartEnd, "placeItems", "place-items", "", "start end"); | |
| checkPlaceItemsValues(placeItemsStartEnd, "", "start", "end"); | |
| }, "Test getting the Computed Value of place-items's longhand properties when setting 'start end' value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsStartSelfEnd, "placeItems", "place-items", "", "start self-end"); | |
| checkPlaceItemsValues(placeItemsStartSelfEnd, "", "start", "self-end"); | |
| }, "Test getting the Computed Value of place-items's longhand properties when setting 'start self-end' value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsStartBaseline, "placeItems", "place-items", "", "start baseline"); | |
| checkPlaceItemsValues(placeItemsStartBaseline, "", "start", "baseline"); | |
| }, "Test getting the Computed Value of place-items's longhand properties when setting 'start baseline' value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsAuto, "placeItems", "place-items", "", "normal"); | |
| checkPlaceItemsValues(placeItemsAuto, "", "normal", "normal"); | |
| }, "Test setting 'auto' as incorrect value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsCenterAuto, "placeItems", "place-items", "", "normal"); | |
| checkPlaceItemsValues(placeItemsCenterAuto, "", "normal", "normal"); | |
| }, "Test setting 'center auto' as incorrect value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsNone, "placeItems", "place-items", "", "normal"); | |
| checkPlaceItemsValues(placeItemsNone, "", "normal", "normal"); | |
| }, "Test setting 'none' as incorrect value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsSafe, "placeItems", "place-items", "", "normal"); | |
| checkPlaceItemsValues(placeItemsSafe, "", "normal", "normal"); | |
| }, "Test setting 'safe' as incorrect value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsStartSafe, "placeItems", "place-items", "", "normal"); | |
| checkPlaceItemsValues(placeItemsStartSafe, "", "normal", "normal"); | |
| }, "Test setting 'start safe' as incorrect value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsBaselineSafe, "placeItems", "place-items", "", "normal"); | |
| checkPlaceItemsValues(placeItemsBaselineSafe, "", "normal", "normal"); | |
| }, "Test setting 'baseline safe' as incorrect value through CSS."); | |
| test(function() { | |
| checkValues(placeItemsStartEndLeft, "placeItems", "place-items", "", "normal"); | |
| checkPlaceItemsValues(placeItemsStartEndLeft, "", "normal", "normal"); | |
| }, "Test setting 'start end left' as incorrect value through CSS."); | |
| test(function() { | |
| checkPlaceItemsValuesJS("center start", "center", "start"); | |
| checkPlaceItemsValuesJS("self-start end", "self-start", "end"); | |
| checkPlaceItemsValuesJS("normal end", "normal", "end"); | |
| }, "Test setting values through JS."); | |
| test(function() { | |
| checkPlaceItemsValuesBadJS("auto"); | |
| checkPlaceItemsValuesBadJS("auto normal"); | |
| checkPlaceItemsValuesBadJS("center auto"); | |
| checkPlaceItemsValuesBadJS("legacy"); | |
| checkPlaceItemsValuesBadJS("left legacy"); | |
| checkPlaceItemsValuesBadJS("space-between"); | |
| checkPlaceItemsValuesBadJS("center safe"); | |
| checkPlaceItemsValuesBadJS("center self-start center"); | |
| checkPlaceItemsValuesBadJS("asrt", "normal"); | |
| checkPlaceItemsValuesBadJS("auto", "normal"); | |
| checkPlaceItemsValuesBadJS("10px", "normal"); | |
| checkPlaceItemsValuesBadJS("stretch safe"); | |
| checkPlaceItemsValuesBadJS("self-start start end"); | |
| checkPlaceItemsValuesBadJS(""); | |
| }, "Test setting incorrect values through JS."); | |
| test(function() { | |
| element = document.createElement("div"); | |
| document.body.appendChild(element); | |
| checkValues(element, "placeItems", "place-items", "", "normal"); | |
| element.style.placeItems = "center"; | |
| checkPlaceItemsValues(element, "center", "center", "center"); | |
| element.style.placeItems = "initial"; | |
| checkValues(element, "placeItems", "place-items", "initial", "normal"); | |
| checkPlaceItemsValues(element, "initial", "normal", "normal"); | |
| }, "Test the 'initial' value of the place-items shorthand and its longhand properties' Computed value"); | |
| test(function() { | |
| document.body.style.placeItems = "start"; | |
| var anotherElement = document.createElement("div"); | |
| document.body.appendChild(anotherElement); | |
| checkPlaceItemsValues(anotherElement, "", "normal", "normal"); | |
| anotherElement.style.placeItems = "inherit"; | |
| checkPlaceItemsValues(anotherElement, "inherit", "start", "start"); | |
| }, "Test the 'inherit' value of the place-items shorthand and its longhand properties' Computed value"); | |
| </script> | |
| </body> | |
| </html> |