| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <style> | |
| #placeSelfNormal { | |
| place-self: normal; | |
| } | |
| #placeSelfCenterAuto { | |
| place-self: center auto; | |
| } | |
| #placeSelfBaseline { | |
| place-self: baseline; | |
| } | |
| #placeSelfFirstBaseline { | |
| place-self: first baseline; | |
| } | |
| #placeSelfLastBaseline { | |
| place-self: last baseline; | |
| } | |
| #placeSelfStart { | |
| place-self: start; | |
| } | |
| #placeSelfFlexStart { | |
| place-self: flex-start; | |
| } | |
| #placeSelfEnd { | |
| place-self: end; | |
| } | |
| #placeSelfSelfStart { | |
| place-self: self-start; | |
| } | |
| #placeSelfStretch { | |
| place-self: stretch; | |
| } | |
| #placeSelfStartEnd { | |
| place-self: start end; | |
| } | |
| #placeSelfStartSelfEnd { | |
| place-self: start self-end; | |
| } | |
| #placeSelfStartBaseline { | |
| place-self: start baseline; | |
| } | |
| <!-- Invalid CSS cases --> | |
| #placeSelfEmpty { | |
| place-self:; | |
| } | |
| #placeSelfAuto { | |
| place-self: auto; | |
| } | |
| #placeSelfNone { | |
| place-self: none; | |
| } | |
| #placeSelfSafe { | |
| place-self: safe; | |
| } | |
| #placeSelfBaselineSafe { | |
| place-self: baseline safe; | |
| } | |
| #placeSelfStartSafe { | |
| place-self: start safe; | |
| } | |
| #placeSelfStartEndLeft { | |
| place-self: 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-self alignment shorthand is parsed as expected and correctly sets the longhand values.</p> | |
| <div id="log"></div> | |
| <div id="placeSelfNormal"></div> | |
| <div id="placeSelfCenterAuto"></div> | |
| <div id="placeSelfBaseline"></div> | |
| <div id="placeSelfFirstBaseline"></div> | |
| <div id="placeSelfLastBaseline"></div> | |
| <div id="placeSelfStart"></div> | |
| <div id="placeSelfFlexStart"></div> | |
| <div id="placeSelfEnd"></div> | |
| <div id="placeSelfSelfStart"></div> | |
| <div id="placeSelfStretch"></div> | |
| <div id="placeSelfStartEnd"></div> | |
| <div id="placeSelfStartSelfEnd"></div> | |
| <div id="placeSelfStartBaseline"></div> | |
| <div id="placeSelfEmpty"></div> | |
| <div id="placeSelfAuto"></div> | |
| <div id="placeSelfNone"></div> | |
| <div id="placeSelfSafe"></div> | |
| <div id="placeSelfStartSafe"></div> | |
| <div id="placeSelfBaselineSafe"></div> | |
| <div id="placeSelfStartEndLeft"></div> | |
| <script> | |
| function checkPlaceSelfValues(element, value, alignValue, justifyValue) { | |
| var res = value.split(" "); | |
| if (res.length < 2) | |
| res[1] = res[0]; | |
| checkValues(element, "alignSelf", "align-self", res[0], alignValue); | |
| checkValues(element, "justifySelf", "justify-self", res[1], justifyValue); | |
| } | |
| function checkPlaceSelfValuesJS(value, alignValue, justifyValue) | |
| { | |
| element = document.createElement("div"); | |
| document.body.appendChild(element); | |
| element.style.placeSelf = value; | |
| checkValues(element, "placeSelf", "place-self", value, alignValue + ' ' + justifyValue) | |
| checkPlaceSelfValues(element, value, alignValue, justifyValue) | |
| } | |
| function checkPlaceSelfValuesBadJS(value) | |
| { | |
| element.style.placeSelf = ""; | |
| element.style.placeSelf = value; | |
| checkPlaceSelfValues(element, "", "auto", "auto") | |
| } | |
| test(function() { | |
| checkValues(placeSelfNormal, "placeSelf", "place-self", "", "normal"); | |
| checkPlaceSelfValues(placeSelfNormal, "", "normal", "normal"); | |
| }, "Test getting the Computed Value of place-self's longhand properties when setting 'normal' value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfCenterAuto, "placeSelf", "place-self", "", "center auto"); | |
| checkPlaceSelfValues(placeSelfCenterAuto, "", "center", "auto"); | |
| }, "Test getting the Computed Value of place-self's longhand properties when setting 'center auto' value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfBaseline, "placeSelf", "place-self", "", "baseline"); | |
| checkPlaceSelfValues(placeSelfBaseline, "", "baseline", "baseline"); | |
| }, "Test getting the Computed Value of place-self's longhand properties when setting 'baseline' value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfFirstBaseline, "placeSelf", "place-self", "", "baseline"); | |
| checkPlaceSelfValues(placeSelfFirstBaseline, "", "baseline", "baseline"); | |
| }, "Test getting the Computed Value of place-self's longhand properties when setting 'first baseline' value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfLastBaseline, "placeSelf", "place-self", "", "last baseline"); | |
| checkPlaceSelfValues(placeSelfLastBaseline, "", "last baseline", "last baseline"); | |
| }, "Test getting the Computed Value of place-self's longhand properties when setting 'last baseline' value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfStart, "placeSelf", "place-self", "", "start"); | |
| checkPlaceSelfValues(placeSelfStart, "", "start", "start"); | |
| }, "Test getting the Computed Value of place-self's longhand properties when setting 'start' value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfFlexStart, "placeSelf", "place-self", "", "flex-start"); | |
| checkPlaceSelfValues(placeSelfFlexStart, "", "flex-start", "flex-start"); | |
| }, "Test getting the Computed Value of place-self's longhand properties when setting 'flex-start' value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfEnd, "placeSelf", "place-self", "", "end"); | |
| checkPlaceSelfValues(placeSelfEnd, "", "end", "end"); | |
| }, "Test getting the Computed Value of place-self's longhand properties when setting 'end' value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfSelfStart, "placeSelf", "place-self", "", "self-start"); | |
| checkPlaceSelfValues(placeSelfSelfStart, "", "self-start", "self-start"); | |
| }, "Test getting the Computed Value of place-self's longhand properties when setting 'self-start' value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfStretch, "placeSelf", "place-self", "", "stretch"); | |
| checkPlaceSelfValues(placeSelfStretch, "", "stretch", "stretch"); | |
| }, "Test getting the Computed Value of place-self's longhand properties when setting 'stretch' value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfStartEnd, "placeSelf", "place-self", "", "start end"); | |
| checkPlaceSelfValues(placeSelfStartEnd, "", "start", "end"); | |
| }, "Test getting the Computed Value of place-self's longhand properties when setting 'start end' value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfStartSelfEnd, "placeSelf", "place-self", "", "start self-end"); | |
| checkPlaceSelfValues(placeSelfStartSelfEnd, "", "start", "self-end"); | |
| }, "Test getting the Computed Value of place-self's longhand properties when setting 'start self-end' value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfStartBaseline, "placeSelf", "place-self", "", "start baseline"); | |
| checkPlaceSelfValues(placeSelfStartBaseline, "", "start", "baseline"); | |
| }, "Test getting the Computed Value of place-self's longhand properties when setting 'start baseline' value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfEmpty, "placeSelf", "place-self", "", "auto"); | |
| checkPlaceSelfValues(placeSelfEmpty, "", "auto", "auto"); | |
| }, "Test setting '' as incorrect value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfAuto, "placeSelf", "place-self", "", "auto"); | |
| checkPlaceSelfValues(placeSelfAuto, "", "auto", "auto"); | |
| }, "Test setting 'auto' as incorrect value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfNone, "placeSelf", "place-self", "", "auto"); | |
| checkPlaceSelfValues(placeSelfNone, "", "auto", "auto"); | |
| }, "Test setting 'none' as incorrect value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfSafe, "placeSelf", "place-self", "", "auto"); | |
| checkPlaceSelfValues(placeSelfSafe, "", "auto", "auto"); | |
| }, "Test setting 'safe' as incorrect value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfStartSafe, "placeSelf", "place-self", "", "auto"); | |
| checkPlaceSelfValues(placeSelfStartSafe, "", "auto", "auto"); | |
| }, "Test setting 'start safe' as incorrect value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfBaselineSafe, "placeSelf", "place-self", "", "auto"); | |
| checkPlaceSelfValues(placeSelfBaselineSafe, "", "auto", "auto"); | |
| }, "Test setting 'baseline safe' as incorrect value through CSS."); | |
| test(function() { | |
| checkValues(placeSelfStartEndLeft, "placeSelf", "place-self", "", "auto"); | |
| checkPlaceSelfValues(placeSelfStartEndLeft, "", "auto", "auto"); | |
| }, "Test setting 'start end left' as incorrect value through CSS."); | |
| test(function() { | |
| checkPlaceSelfValuesJS("center start", "center", "start"); | |
| checkPlaceSelfValuesJS("self-start end", "self-start", "end"); | |
| checkPlaceSelfValuesJS("normal end", "normal", "end"); | |
| checkPlaceSelfValuesJS("auto right", "auto", "right"); | |
| }, "Test setting values through JS."); | |
| test(function() { | |
| checkPlaceSelfValuesBadJS("space-between"); | |
| checkPlaceSelfValuesBadJS("center safe"); | |
| checkPlaceSelfValuesBadJS("center self-start center"); | |
| checkPlaceSelfValuesBadJS("asrt"); | |
| checkPlaceSelfValuesBadJS("10px"); | |
| checkPlaceSelfValuesBadJS("stretch safe"); | |
| checkPlaceSelfValuesBadJS("self-start start end"); | |
| checkPlaceSelfValuesBadJS(""); | |
| }, "Test setting incorrect values through JS."); | |
| test(function() { | |
| element = document.createElement("div"); | |
| document.body.appendChild(element); | |
| checkValues(element, "placeSelf", "place-self", "", "auto"); | |
| element.style.placeSelf = "center"; | |
| checkPlaceSelfValues(element, "center", "center", "center"); | |
| element.style.placeSelf = "initial"; | |
| checkValues(element, "placeSelf", "place-self", "initial", "auto"); | |
| checkPlaceSelfValues(element, "initial", "auto", "auto"); | |
| }, "Test the 'initial' value of the place-self shorthand and its longhand properties' Computed value"); | |
| test(function() { | |
| document.body.style.placeSelf = "start"; | |
| var anotherElement = document.createElement("div"); | |
| document.body.appendChild(anotherElement); | |
| checkPlaceSelfValues(anotherElement, "", "auto", "auto"); | |
| anotherElement.style.placeSelf = "inherit"; | |
| checkPlaceSelfValues(anotherElement, "inherit", "start", "start"); | |
| }, "Test the 'inherit' value of the place-self shorthand and its longhand properties' Computed value"); | |
| </script> | |
| </body> | |
| </html> |