blob: 052e3f54f05c26211a84d6a1a5ecf557096f733d [file] [log] [blame]
<!DOCTYPE html>
<style>
#alignItemsBaseline {
align-items: baseline;
}
#alignItemsFirstBaseline {
align-items: first baseline;
}
#alignItemsLastBaseline {
align-items: last baseline;
}
#alignItemsStretch {
align-items: stretch;
}
#alignItemsNormal {
align-items: normal;
}
#alignItemsStart {
align-items: start;
}
#alignItemsEnd {
align-items: end;
}
#alignItemsCenter {
align-items: center;
}
#alignItemsSelfStart {
align-items: self-start;
}
#alignItemsSelfEnd {
align-items: self-end;
}
#alignItemsFlexStart {
align-items: flex-start;
}
#alignItemsFlexEnd {
align-items: flex-end;
}
#alignItemsUnsafeEnd {
align-items: unsafe end ;
}
#alignItemsUnsafeCenter {
align-items: unsafe center ;
}
#alignItemsSafeSelfEnd {
align-items: safe self-end;
}
#alignItemsSafeSelfStart {
align-items: safe self-start;
}
#alignItemsUnsafeFlexStart {
align-items: unsafe flex-start;
}
#alignItemsSafeFlexEnd {
align-items: safe flex-end;
}
</style>
<p>Test that setting and getting align-items works as expected</p>
<div id="alignItemsBaseline"></div>
<div id="alignItemsFirstBaseline"></div>
<div id="alignItemsLastBaseline"></div>
<div id="alignItemsStretch"></div>
<div id="alignItemsNormal"></div>
<div id="alignItemsStart"></div>
<div id="alignItemsEnd"></div>
<div id="alignItemsCenter"></div>
<div id="alignItemsSelfStart"></div>
<div id="alignItemsSelfEnd"></div>
<div id="alignItemsFlexStart"></div>
<div id="alignItemsFlexEnd"></div>
<div id="alignItemsUnsafeEnd"></div>
<div id="alignItemsUnsafeCenter"></div>
<div id="alignItemsSafeSelfEnd"></div>
<div id="alignItemsSafeSelfStart"></div>
<div id="alignItemsUnsafeFlexStart"></div>
<div id="alignItemsSafeFlexEnd"></div>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="resources/alignment-parsing-utils-th.js"></script>
<script>
test(function() {
var alignItemsBaseline = document.getElementById("alignItemsBaseline");
checkValues(alignItemsBaseline, "alignItems", "align-items", "", "baseline");
var alignItemsFirstBaseline = document.getElementById("alignItemsFirstBaseline");
checkValues(alignItemsFirstBaseline, "alignItems", "align-items", "", "baseline");
var alignItemsLastBaseline = document.getElementById("alignItemsLastBaseline");
checkValues(alignItemsLastBaseline, "alignItems", "align-items", "", "last baseline");
var alignItemsStretch = document.getElementById("alignItemsStretch");
checkValues(alignItemsStretch, "alignItems", "align-items", "", "stretch");
var alignItemsNormal = document.getElementById("alignItemsNormal");
checkValues(alignItemsNormal, "alignItems", "align-items", "", "normal");
var alignItemsStart = document.getElementById("alignItemsStart");
checkValues(alignItemsStart, "alignItems", "align-items", "", "start");
var alignItemsEnd = document.getElementById("alignItemsEnd");
checkValues(alignItemsEnd, "alignItems", "align-items", "", "end");
var alignItemsCenter = document.getElementById("alignItemsCenter");
checkValues(alignItemsCenter, "alignItems", "align-items", "", "center");
var alignItemsSelfEnd = document.getElementById("alignItemsSelfEnd");
checkValues(alignItemsSelfEnd, "alignItems", "align-items", "", "self-end");
var alignItemsSelfStart = document.getElementById("alignItemsSelfStart");
checkValues(alignItemsSelfStart, "alignItems", "align-items", "", "self-start");
var alignItemsFlexStart = document.getElementById("alignItemsFlexStart");
checkValues(alignItemsFlexStart, "alignItems", "align-items", "", "flex-start");
var alignItemsFlexEnd = document.getElementById("alignItemsFlexEnd");
checkValues(alignItemsFlexEnd, "alignItems", "align-items", "", "flex-end");
var alignItemsUnsafeEnd = document.getElementById("alignItemsUnsafeEnd");
checkValues(alignItemsUnsafeEnd, "alignItems", "align-items", "", "unsafe end");
var alignItemsUnsafeCenter = document.getElementById("alignItemsUnsafeCenter");
checkValues(alignItemsUnsafeCenter, "alignItems", "align-items", "", "unsafe center");
var alignItemsSafeSelfEnd = document.getElementById("alignItemsSafeSelfEnd");
checkValues(alignItemsSafeSelfEnd, "alignItems", "align-items", "", "safe self-end");
var alignItemsSafeSelfStart = document.getElementById("alignItemsSafeSelfStart");
checkValues(alignItemsSafeSelfStart, "alignItems", "align-items", "", "safe self-start");
var alignItemsUnsafeFlexStart = document.getElementById("alignItemsUnsafeFlexStart");
checkValues(alignItemsUnsafeFlexStart, "alignItems", "align-items", "", "unsafe flex-start");
var alignItemsSafeFlexEnd = document.getElementById("alignItemsSafeFlexEnd");
checkValues(alignItemsSafeFlexEnd, "alignItems", "align-items", "", "safe flex-end");
}, "Test getting align-items set through CSS.");
test(function() {
element = document.createElement("div");
document.body.appendChild(element);
checkValues(element, "alignItems", "align-items", "", "normal");
}, "Test initial value of align-items through JS");
test(function() {
element = document.createElement("div");
document.body.appendChild(element);
element.style.alignItems = "center";
checkValues(element, "alignItems", "align-items", "center", "center");
element.style.alignItems = "unsafe start";
checkValues(element, "alignItems", "align-items", "unsafe start", "unsafe start");
element.style.alignItems = "safe flex-end";
checkValues(element, "alignItems", "align-items", "safe flex-end", "safe flex-end");
element.style.alignItems = "center";
checkValues(element, "alignItems", "align-items", "center", "center");
element.style.alignItems = "self-start";
checkValues(element, "alignItems", "align-items", "self-start", "self-start");
element.style.alignItems = "normal";
checkValues(element, "alignItems", "align-items", "normal", "normal");
// The 'auto' value is not valid for the align-items property.
element.style.alignItems = "";
element.style.alignItems = "auto";
checkValues(element, "alignItems", "align-items", "", "normal");
element.style.display = "flex";
element.style.alignItems = "auto";
checkValues(element, "alignItems", "align-items", "", "normal");
element.style.display = "grid";
element.style.alignItems = "auto";
checkValues(element, "alignItems", "align-items", "", "normal");
element.style.alignItems = "self-end";
checkValues(element, "alignItems", "align-items", "self-end", "self-end");
}, "Test getting and setting align-items through JS");
test(function() {
element = document.createElement("div");
document.body.appendChild(element);
checkBadValues(element, "alignItems", "align-items", "auto");
checkBadValues(element, "alignItems", "align-items", "left");
checkBadValues(element, "alignItems", "align-items", "right");
checkBadValues(element, "alignItems", "align-items", "unsafe auto");
checkBadValues(element, "alignItems", "align-items", "auto safe");
checkBadValues(element, "alignItems", "align-items", "auto left");
checkBadValues(element, "alignItems", "align-items", "safe left");
checkBadValues(element, "alignItems", "align-items", "unsafe right");
checkBadValues(element, "alignItems", "align-items", "unsafe normal");
checkBadValues(element, "alignItems", "align-items", "normal stretch");
checkBadValues(element, "alignItems", "align-items", "baseline normal");
checkBadValues(element, "alignItems", "align-items", "baseline safe");
checkBadValues(element, "alignItems", "align-items", "baseline center");
checkBadValues(element, "alignItems", "align-items", "first baseline center");
checkBadValues(element, "alignItems", "align-items", "last baseline center");
checkBadValues(element, "alignItems", "align-items", "baseline last");
checkBadValues(element, "alignItems", "align-items", "baseline first");
checkBadValues(element, "alignItems", "align-items", "stretch unsafe");
checkBadValues(element, "alignItems", "align-items", "stretch right");
checkBadValues(element, "alignItems", "align-items", "unsafe unsafe");
checkBadValues(element, "alignItems", "align-items", "unsafe safe");
checkBadValues(element, "alignItems", "align-items", "center start");
checkBadValues(element, "alignItems", "align-items", "stretch unsafe");
checkBadValues(element, "alignItems", "align-items", "safe stretch");
checkBadValues(element, "alignItems", "align-items", "baseline safe");
checkBadValues(element, "alignItems", "align-items", "unsafe baseline");
checkBadValues(element, "alignItems", "align-items", "unsafe safe left");
checkBadValues(element, "alignItems", "align-items", "unsafe left safe");
checkBadValues(element, "alignItems", "align-items", "left safe unsafe safe");
checkBadValues(element, "alignItems", "align-items", "legacy start");
checkBadValues(element, "alignItems", "align-items", "legacy end");
checkBadValues(element, "alignItems", "align-items", "legacy right unsafe");
checkBadValues(element, "alignItems", "align-items", "legacy auto");
checkBadValues(element, "alignItems", "align-items", "legacy stretch");
checkBadValues(element, "alignItems", "align-items", "legacy");
checkBadValues(element, "alignItems", "align-items", "legacy left right");
checkBadValues(element, "alignItems", "align-items", "start safe");
checkBadValues(element, "alignItems", "align-items", "end unsafe");
}, "Test bad combinations of align-items");
test(function() {
element.style.display = "";
checkInitialValues(element, "alignItems", "align-items", "center", "normal");
}, "Test the value 'initial'");
test(function() {
element.style.display = "grid";
checkInitialValues(element, "alignItems", "align-items", "safe start", "normal");
}, "Test the value 'initial' for grid containers");
test(function() {
element.style.display = "flex";
checkInitialValues(element, "alignItems", "align-items", "unsafe end", "normal");
}, "Test the value 'initial' for flex containers");
test(function() {
checkInheritValues("alignItems", "align-items", "end");
checkInheritValues("alignItems", "align-items", "safe start");
checkInheritValues("alignItems", "align-items", "unsafe center");
}, "Test the value 'inherit'");
</script>