blob: 4a4b7602110672b2931fbbdfc69c4009559ae409 [file] [log] [blame]
<!DOCTYPE html>
<style>
#justifySelfBaseline {
justify-self: baseline;
}
#justifySelfFirstBaseline {
justify-self: first baseline;
}
#justifySelfLastBaseline {
justify-self: last baseline;
}
#justifySelfStretch {
justify-self: stretch;
}
#justifySelfStart {
justify-self: start;
}
#justifySelfEnd {
justify-self: end;
}
#justifySelfCenter {
justify-self: center;
}
#justifySelfSelfStart {
justify-self: self-start;
}
#justifySelfSelfEnd {
justify-self: self-end;
}
#justifySelfLeft {
justify-self: left;
}
#justifySelfRight {
justify-self: right;
}
#justifySelfFlexStart {
justify-self: flex-start;
}
#justifySelfFlexEnd {
justify-self: flex-end;
}
#justifySelfEndUnsafe {
justify-self: end unsafe;
}
#justifySelfCenterUnsafe {
justify-self: center unsafe;
}
#justifySelfSelfEndSafe {
justify-self: self-end safe;
}
#justifySelfSelfStartSafe {
justify-self: self-start safe;
}
#justifySelfRightSafe {
justify-self: right safe;
}
#justifySelfLeftUnsafe {
justify-self: left unsafe;
}
#justifySelfFlexStartUnsafe {
justify-self: flex-start unsafe;
}
#justifySelfFlexEndSafe {
justify-self: flex-end safe;
}
</style>
<p>Test that setting and getting justify-self works as expected</p>
<div id="justifySelfBaseline"></div>
<div id="justifySelfFirstBaseline"></div>
<div id="justifySelfLastBaseline"></div>
<div id="justifySelfStretch"></div>
<div id="justifySelfStart"></div>
<div id="justifySelfEnd"></div>
<div id="justifySelfCenter"></div>
<div id="justifySelfSelfStart"></div>
<div id="justifySelfSelfEnd"></div>
<div id="justifySelfLeft"></div>
<div id="justifySelfRight"></div>
<div id="justifySelfFlexStart"></div>
<div id="justifySelfFlexEnd"></div>
<div id="justifySelfEndUnsafe"></div>
<div id="justifySelfCenterUnsafe"></div>
<div id="justifySelfSelfEndSafe"></div>
<div id="justifySelfSelfStartSafe"></div>
<div id="justifySelfRightSafe"></div>
<div id="justifySelfLeftUnsafe"></div>
<div id="justifySelfFlexStartUnsafe"></div>
<div id="justifySelfFlexEndSafe"></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 justifySelfBaseline = document.getElementById("justifySelfBaseline");
checkValues(justifySelfBaseline, "justifySelf", "justify-self", "", "baseline");
var justifySelfFirstBaseline = document.getElementById("justifySelfFirstBaseline");
checkValues(justifySelfFirstBaseline, "justifySelf", "justify-self", "", "baseline");
var justifySelfLastBaseline = document.getElementById("justifySelfLastBaseline");
checkValues(justifySelfLastBaseline, "justifySelf", "justify-self", "", "last baseline");
var justifySelfStretch = document.getElementById("justifySelfStretch");
checkValues(justifySelfStretch, "justifySelf", "justify-self", "", "stretch");
var justifySelfStart = document.getElementById("justifySelfStart");
checkValues(justifySelfStart, "justifySelf", "justify-self", "", "start");
var justifySelfEnd = document.getElementById("justifySelfEnd");
checkValues(justifySelfEnd, "justifySelf", "justify-self", "", "end");
var justifySelfCenter = document.getElementById("justifySelfCenter");
checkValues(justifySelfCenter, "justifySelf", "justify-self", "", "center");
var justifySelfSelfEnd = document.getElementById("justifySelfSelfEnd");
checkValues(justifySelfSelfEnd, "justifySelf", "justify-self", "", "self-end");
var justifySelfSelfStart = document.getElementById("justifySelfSelfStart");
checkValues(justifySelfSelfStart, "justifySelf", "justify-self", "", "self-start");
var justifySelfLeft = document.getElementById("justifySelfLeft");
checkValues(justifySelfLeft, "justifySelf", "justify-self", "", "left");
var justifySelfRight = document.getElementById("justifySelfRight");
checkValues(justifySelfRight, "justifySelf", "justify-self", "", "right");
var justifySelfFlexStart = document.getElementById("justifySelfFlexStart");
checkValues(justifySelfFlexStart, "justifySelf", "justify-self", "", "flex-start");
var justifySelfFlexEnd = document.getElementById("justifySelfFlexEnd");
checkValues(justifySelfFlexEnd, "justifySelf", "justify-self", "", "flex-end");
var justifySelfEndUnsafe = document.getElementById("justifySelfEndUnsafe");
checkValues(justifySelfEndUnsafe, "justifySelf", "justify-self", "", "end unsafe");
var justifySelfCenterUnsafe = document.getElementById("justifySelfCenterUnsafe");
checkValues(justifySelfCenterUnsafe, "justifySelf", "justify-self", "", "center unsafe");
var justifySelfSelfEndSafe = document.getElementById("justifySelfSelfEndSafe");
checkValues(justifySelfSelfEndSafe, "justifySelf", "justify-self", "", "self-end safe");
var justifySelfSelfStartSafe = document.getElementById("justifySelfSelfStartSafe");
checkValues(justifySelfSelfStartSafe, "justifySelf", "justify-self", "", "self-start safe");
var justifySelfRightSafe = document.getElementById("justifySelfRightSafe");
checkValues(justifySelfRightSafe, "justifySelf", "justify-self", "", "right safe");
var justifySelfLeftUnsafe = document.getElementById("justifySelfLeftUnsafe");
checkValues(justifySelfLeftUnsafe, "justifySelf", "justify-self", "", "left unsafe");
var justifySelfFlexStartUnsafe = document.getElementById("justifySelfFlexStartUnsafe");
checkValues(justifySelfFlexStartUnsafe, "justifySelf", "justify-self", "", "flex-start unsafe");
var justifySelfFlexEndSafe = document.getElementById("justifySelfFlexEndSafe");
checkValues(justifySelfFlexEndSafe, "justifySelf", "justify-self", "", "flex-end safe");
}, "Test getting justify-self set through CSS.");
test(function() {
element = document.createElement("div");
document.body.appendChild(element);
checkValues(element, "justifySelf", "justify-self", "", "normal");
}, "Test initial value of justify-self through JS");
test(function() {
container = document.createElement("div");
element = document.createElement("div");
container.appendChild(element);
document.body.appendChild(container);
element.style.justifySelf = "center";
checkValues(element, "justifySelf", "justify-self", "center", "center");
element.style.justifySelf = "unsafe start";
checkValues(element, "justifySelf", "justify-self", "start unsafe", "start unsafe");
element.style.justifySelf = "flex-end safe";
checkValues(element, "justifySelf", "justify-self", "flex-end safe", "flex-end safe");
element.style.justifySelf = "right";
checkValues(element, "justifySelf", "justify-self", "right", "right");
element.style.justifySelf = "center";
checkValues(element, "justifySelf", "justify-self", "center", "center");
element.style.justifySelf = "self-start";
checkValues(element, "justifySelf", "justify-self", "self-start", "self-start");
element.style.justifySelf = "auto";
checkValues(element, "justifySelf", "justify-self", "auto", "normal");
container.style.display = "flex";
element.style.justifySelf = "auto";
checkValues(element, "justifySelf", "justify-self", "auto", "normal");
container.style.display = "grid";
element.style.justifySelf = "auto";
checkValues(element, "justifySelf", "justify-self", "auto", "normal");
element.style.justifySelf = "self-end";
checkValues(element, "justifySelf", "justify-self", "self-end", "self-end");
}, "Test getting and setting justify-self through JS");
test(function() {
document.documentElement.style.justifySelf = "auto";
checkValues(document.documentElement, "justifySelf", "justify-self", "auto", "normal");
}, "Test 'auto' value resolution for the root node");
test(function() {
container = document.createElement("div");
element = document.createElement("div");
container.appendChild(element);
document.body.appendChild(container);
checkBadValues(element, "justifySelf", "justify-self", "unsafe auto");
checkBadValues(element, "justifySelf", "justify-self", "auto safe");
checkBadValues(element, "justifySelf", "justify-self", "auto left");
checkBadValues(element, "justifySelf", "justify-self", "baseline safe");
checkBadValues(element, "justifySelf", "justify-self", "baseline center");
checkBadValues(element, "justifySelf", "justify-self", "stretch unsafe");
checkBadValues(element, "justifySelf", "justify-self", "stretch right");
checkBadValues(element, "justifySelf", "justify-self", "unsafe unsafe");
checkBadValues(element, "justifySelf", "justify-self", "unsafe safe");
checkBadValues(element, "justifySelf", "justify-self", "center start");
checkBadValues(element, "justifySelf", "justify-self", "stretch unsafe");
checkBadValues(element, "justifySelf", "justify-self", "safe stretch");
checkBadValues(element, "justifySelf", "justify-self", "baseline safe");
checkBadValues(element, "justifySelf", "justify-self", "unsafe baseline");
checkBadValues(element, "justifySelf", "justify-self", "unsafe safe left");
checkBadValues(element, "justifySelf", "justify-self", "unsafe left safe");
checkBadValues(element, "justifySelf", "justify-self", "left safe unsafe safe");
checkBadValues(element, "justifySelf", "justify-self", "legacy start");
checkBadValues(element, "justifySelf", "justify-self", "legacy end");
checkBadValues(element, "justifySelf", "justify-self", "legacy right unsafe");
checkBadValues(element, "justifySelf", "justify-self", "legacy auto");
checkBadValues(element, "justifySelf", "justify-self", "legacy stretch");
checkBadValues(element, "justifySelf", "justify-self", "legacy");
checkBadValues(element, "justifySelf", "justify-self", "legacy left right");
}, "Test bad combinations of justify-self");
test(function() {
container.style.display = "";
checkInitialValues(element, "justifySelf", "justify-self", "center", "normal");
}, "Test the value 'initial'");
test(function() {
container.style.display = "grid";
checkInitialValues(element, "justifySelf", "justify-self", "left safe", "normal");
}, "Test the value 'initial' for grid containers");
test(function() {
container.style.display = "flex";
checkInitialValues(element, "justifySelf", "justify-self", "right unsafe", "normal");
}, "Test the value 'initial' for flex containers");
test(function() {
container.style.display = "";
element.style.position = "absolute";
checkInitialValues(element, "justifySelf", "justify-self", "left", "normal");
}, "Test the value 'initial' for positioned elements");
test(function() {
container.style.display = "grid";
element.style.position = "absolute";
checkInitialValues(element, "justifySelf", "justify-self", "right", "normal");
}, "Test the value 'initial' for positioned elements in grid containers");
test(function() {
container.style.display = "flex";
element.style.position = "absolute";
checkInitialValues(element, "justifySelf", "justify-self", "end", "normal");
}, "Test the value 'initial' for positioned elements in grid containers");
test(function() {
checkInheritValues("justifySelf", "justify-self", "end");
checkInheritValues("justifySelf", "justify-self", "left safe");
checkInheritValues("justifySelf", "justify-self", "center unsafe");
}, "Test the value 'inherit'");
</script>