blob: 4e8e9846542baca21f457c7d8afbd5bab30bf683 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<style>
#placeContentNormal {
place-content: normal;
}
#placeContentStart {
place-content: start;
}
#placeContentFlexStart {
place-content: flex-start;
}
#placeContentEnd {
place-content: end;
}
#placeContentSpaceBetween {
place-content: space-between;
}
#placeContentStretch {
place-content: stretch;
}
#placeContentStartEnd {
place-content: start end;
}
#placeContentStartSpaceEvenly {
place-content: start space-evenly;
}
#placeContentBaselineStart {
place-content: baseline start;
}
<!-- Invalid CSS cases -->
#placeContentEmpty {
place-content:;
}
#placeContentAuto {
place-content: auto;
}
#placeContentNone {
place-content: none;
}
#placeContentSafe {
place-content: safe;
}
#placeContentStartSafe {
place-content: start safe;
}
#placeContentBaselineSafe {
place-content: baseline safe;
}
#placeContentStartEndLeft {
place-content: start end left;
}
#placeContentBaseline {
place-content: baseline;
}
#placeContentStartBaseline {
place-content: start baseline;
}
</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-content alignment shorthand is parsed as expected and correctly sets the longhand values.</p>
<div id="log"></div>
<div id="placeContentNormal"></div>
<div id="placeContentStart"></div>
<div id="placeContentFlexStart"></div>
<div id="placeContentEnd"></div>
<div id="placeContentSpaceBetween"></div>
<div id="placeContentStretch"></div>
<div id="placeContentStartEnd"></div>
<div id="placeContentStartSpaceEvenly"></div>
<div id="placeContentBaselineStart"></div>
<div id="placeContentEmpty"></div>
<div id="placeContentAuto"></div>
<div id="placeContentNone"></div>
<div id="placeContentSafe"></div>
<div id="placeContentStartSafe"></div>
<div id="placeContentBaselineSafe"></div>
<div id="placeContentStartEndLeft"></div>
<div id="placeContentBaseline"></div>
<div id="placeContentStartBaseline"></div>
<script>
function checkPlaceContentValues(element, value, alignValue, justifyValue)
{
var res = value.split(" ");
if (res.length < 2)
res[1] = res[0];
checkValues(element, "alignContent", "align-content", res[0], alignValue);
checkValues(element, "justifyContent", "justify-content", res[1], justifyValue);
}
function checkPlaceContentValuesJS(value, alignValue, justifyValue)
{
element = document.createElement("div");
document.body.appendChild(element);
element.style.placeContent = value;
checkValues(element, "placeContent", "place-content", value, alignValue + ' ' + justifyValue)
checkPlaceContentValues(element, value, alignValue, justifyValue)
}
function checkPlaceContentValuesBadJS(value)
{
element.style.placeContent = "";
element.style.placeContent = value;
checkPlaceContentValues(element, "", "normal", "normal")
}
function checkPlaceContentInitialValue()
{
element = document.createElement("div");
document.body.appendChild(element);
checkValues(element, "placeContent", "place-content", "", "normal normal");
element.style.placeContent = "center";
checkPlaceContentValues(element, "center", "center", "center");
element.style.placeContent = "initial";
checkValues(element, "placeContent", "place-content", "initial", "normal normal");
checkPlaceContentValues(element, "initial", "normal", "normal");
}
function checkPlaceContentInheritValue()
{
document.body.style.placeContent = "start";
var anotherElement = document.createElement("div");
document.body.appendChild(anotherElement);
checkPlaceContentValues(anotherElement, "", "normal", "normal");
anotherElement.style.placeContent = "inherit";
checkPlaceContentValues(anotherElement, "inherit", "start", "start");
}
test(function() {
checkValues(placeContentNormal, "placeContent", "place-content", "", "normal normal");
checkPlaceContentValues(placeContentNormal, "", "normal", "normal");
}, "Test getting the Computed Value of place-content's longhand properties when setting 'normal' value through CSS.");
test(function() {
checkValues(placeContentStart, "placeContent", "place-content", "", "start start");
checkPlaceContentValues(placeContentStart, "", "start", "start");
}, "Test getting the Computed Value of place-content's longhand properties when setting 'start' value through CSS.");
test(function() {
checkValues(placeContentFlexStart, "placeContent", "place-content", "", "flex-start flex-start");
checkPlaceContentValues(placeContentFlexStart, "", "flex-start", "flex-start");
}, "Test getting the Computed Value of place-content's longhand properties when setting 'flex-start' value through CSS.");
test(function() {
checkValues(placeContentEnd, "placeContent", "place-content", "", "end end");
checkPlaceContentValues(placeContentEnd, "", "end", "end");
}, "Test getting the Computed Value of place-content's longhand properties when setting 'end' value through CSS.");
test(function() {
checkValues(placeContentSpaceBetween, "placeContent", "place-content", "", "space-between space-between");
checkPlaceContentValues(placeContentSpaceBetween, "", "space-between", "space-between");
}, "Test getting the Computed Value of place-content's longhand properties when setting 'space-between' value through CSS.");
test(function() {
checkValues(placeContentStretch, "placeContent", "place-content", "", "stretch stretch");
checkPlaceContentValues(placeContentStretch, "", "stretch", "stretch");
}, "Test getting the Computed Value of place-content's longhand properties when setting 'stretch' value through CSS.");
test(function() {
checkValues(placeContentStartEnd, "placeContent", "place-content", "", "start end");
checkPlaceContentValues(placeContentStartEnd, "", "start", "end");
}, "Test getting the Computed Value of place-content's longhand properties when setting 'start end' value through CSS.");
test(function() {
checkValues(placeContentStartSpaceEvenly, "placeContent", "place-content", "", "start space-evenly");
checkPlaceContentValues(placeContentStartSpaceEvenly, "", "start", "space-evenly");
}, "Test getting the Computed Value of place-content's longhand properties when setting 'start space-evenly' value through CSS.");
test(function() {
checkValues(placeContentBaselineStart, "placeContent", "place-content", "", "baseline start");
checkPlaceContentValues(placeContentBaselineStart, "", "baseline", "start");
}, "Test getting the Computed Value of place-content's longhand properties when setting 'baseline start' value through CSS.");
test(function() {
checkValues(placeContentAuto, "placeContent", "place-content", "", "normal normal");
checkPlaceContentValues(placeContentAuto, "", "normal", "normal");
}, "Test setting '' as incorrect value through CSS.");
test(function() {
checkValues(placeContentAuto, "placeContent", "place-content", "", "normal normal");
checkPlaceContentValues(placeContentAuto, "", "normal", "normal");
}, "Test setting 'auto' as incorrect value through CSS.");
test(function() {
checkValues(placeContentNone, "placeContent", "place-content", "", "normal normal");
checkPlaceContentValues(placeContentNone, "", "normal", "normal");
}, "Test setting 'none' as incorrect value through CSS.");
test(function() {
checkValues(placeContentSafe, "placeContent", "place-content", "", "normal normal");
checkPlaceContentValues(placeContentSafe, "", "normal", "normal");
}, "Test setting 'safe' as incorrect value through CSS.");
test(function() {
checkValues(placeContentStartSafe, "placeContent", "place-content", "", "normal normal");
checkPlaceContentValues(placeContentStartSafe, "", "normal", "normal");
}, "Test setting 'start safe' as incorrect value through CSS.");
test(function() {
checkValues(placeContentBaseline, "placeContent", "place-content", "", "normal normal");
checkPlaceContentValues(placeContentBaseline, "", "normal", "normal");
}, "Test setting 'baseline' as incorrect value through CSS.");
test(function() {
checkValues(placeContentBaselineSafe, "placeContent", "place-content", "", "normal normal");
checkPlaceContentValues(placeContentBaselineSafe, "", "normal", "normal");
}, "Test setting 'baseline safe' as incorrect value through CSS.");
test(function() {
checkValues(placeContentStartBaseline, "placeContent", "place-content", "", "normal normal");
checkPlaceContentValues(placeContentStartBaseline, "", "normal", "normal");
}, "Test setting 'start baseline' as incorrect value through CSS.");
test(function() {
checkValues(placeContentStartEndLeft, "placeContent", "place-content", "", "normal normal");
checkPlaceContentValues(placeContentStartEndLeft, "", "normal", "normal");
}, "Test setting 'start end left' as incorrect value through CSS.");
test(function() {
checkPlaceContentValuesJS("center", "center", "center");
checkPlaceContentValuesJS("center start", "center", "start");
checkPlaceContentValuesJS("space-between end", "space-between", "end");
checkPlaceContentValuesJS("normal end", "normal", "end");
}, "Test setting values through JS.");
test(function() {
checkPlaceContentValuesBadJS("center safe", "normal", "normal");
checkPlaceContentValuesBadJS("center space-between center", "normal", "normal");
checkPlaceContentValuesBadJS("asrt", "normal", "normal");
checkPlaceContentValuesBadJS("auto", "normal", "normal");
checkPlaceContentValuesBadJS("10px", "normal", "normal");
checkPlaceContentValuesBadJS("stretch safe", "normal", "normal");
checkPlaceContentValuesBadJS("space-between start end", "normal", "normal");
checkPlaceContentValuesBadJS("", "normal", "normal");
}, "Test setting incorrect values through JS.");
test(function() {
checkPlaceContentInitialValue();
}, "Test the 'initial' value of the place-content shorthand and its longhand properties' Computed value");
test(function() {
checkPlaceContentInheritValue();
}, "Test the 'inherit' value of the place-content shorthand and its longhand properties' Computed value");
</script>
</body>
</html>