blob: 1b89b91f2587f8deea4405241ac6504dd7089b93 [file] [log] [blame]
<!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 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 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 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 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 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 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 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 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 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 auto");
checkPlaceSelfValues(placeSelfEmpty, "", "auto", "auto");
}, "Test setting '' as incorrect value through CSS.");
test(function() {
checkValues(placeSelfAuto, "placeSelf", "place-self", "", "auto auto");
checkPlaceSelfValues(placeSelfAuto, "", "auto", "auto");
}, "Test setting 'auto' as incorrect value through CSS.");
test(function() {
checkValues(placeSelfNone, "placeSelf", "place-self", "", "auto auto");
checkPlaceSelfValues(placeSelfNone, "", "auto", "auto");
}, "Test setting 'none' as incorrect value through CSS.");
test(function() {
checkValues(placeSelfSafe, "placeSelf", "place-self", "", "auto auto");
checkPlaceSelfValues(placeSelfSafe, "", "auto", "auto");
}, "Test setting 'safe' as incorrect value through CSS.");
test(function() {
checkValues(placeSelfStartSafe, "placeSelf", "place-self", "", "auto auto");
checkPlaceSelfValues(placeSelfStartSafe, "", "auto", "auto");
}, "Test setting 'start safe' as incorrect value through CSS.");
test(function() {
checkValues(placeSelfBaselineSafe, "placeSelf", "place-self", "", "auto auto");
checkPlaceSelfValues(placeSelfBaselineSafe, "", "auto", "auto");
}, "Test setting 'baseline safe' as incorrect value through CSS.");
test(function() {
checkValues(placeSelfStartEndLeft, "placeSelf", "place-self", "", "auto auto");
checkPlaceSelfValues(placeSelfStartEndLeft, "", "auto", "auto");
}, "Test setting 'start end left' as incorrect value through CSS.");
test(function() {
checkPlaceSelfValuesJS("center", "center", "center");
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 auto");
element.style.placeSelf = "center";
checkPlaceSelfValues(element, "center", "center", "center");
element.style.placeSelf = "initial";
checkValues(element, "placeSelf", "place-self", "initial", "auto 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>