<!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>
