<!DOCTYPE html>
<style>
#alignContentAuto {
    align-content: auto;
}

#alignContentBaseline {
    align-content: baseline;
}

#alignContentFirstBaseline {
    align-content: first baseline;
}

#alignContentLastBaseline {
    align-content: last baseline;
}

#alignContentSpaceBetween {
    align-content: space-between;
}

#alignContentSpaceAround {
    align-content: space-around;
}

#alignContentSpaceEvenly {
    align-content: space-evenly;
}

#alignContentStretch {
    align-content: stretch;
}

#alignContentStart {
    align-content: start;
}

#alignContentEnd {
    align-content: end;
}

#alignContentCenter {
    align-content: center;
}


#alignContentFlexStart {
    align-content: flex-start;
}

#alignContentFlexEnd {
    align-content: flex-end;
}

#alignContentUnsafeEnd {
    align-content: unsafe end ;
}

#alignContentUnsafeCenter {
    align-content: unsafe center ;
}

#alignContentUnsafeFlexStart {
    align-content: unsafe flex-start;
}

#alignContentSafeFlexEnd {
    align-content: safe flex-end;
}

<!-- Invalid CSS cases -->
#alignContentSpaceBetweenLeft {
    align-content: space-between left;
}

#alignContentSpaceAroundCenter {
    align-content: space-around center;
}

#alignContentSpaceEvenlyRight {
    align-content: space-evenly right;
}

#alignContentStretchStartSafe {
    align-content: stretch start safe;
}

#alignContentSpaceAroundEndUnsafe {
    align-content: space-around end unsafe;
}

#alignContentSpaceEvenlyFlexStartSafe {
    align-content: space-evenly flex-start safe;
}

#alignContentSpaceBetweenSafe {
    align-content: space-between safe;
}

#alignContentSpaceBetweenStretch {
    align-content: space-between stretch;
}

#alignContentSafe {
    align-content: safe;
}

#alignContentRightSafeUnsafe {
    align-content: right safe unsafe;
}

#alignContentCenterLeft {
    align-content: center left;
}
</style>
<p>Test that setting and getting align-content works as expected</p>
<div id="alignContentAuto"></div>
<div id="alignContentBaseline"></div>
<div id="alignContentFirstBaseline"></div>
<div id="alignContentLastBaseline"></div>
<div id="alignContentSpaceBetween"></div>
<div id="alignContentSpaceAround"></div>
<div id="alignContentSpaceEvenly"></div>
<div id="alignContentStretch"></div>
<div id="alignContentStart"></div>
<div id="alignContentEnd"></div>
<div id="alignContentCenter"></div>
<div id="alignContentFlexStart"></div>
<div id="alignContentFlexEnd"></div>
<div id="alignContentUnsafeEnd"></div>
<div id="alignContentUnsafeCenter"></div>
<div id="alignContentSafeSelfEnd"></div>
<div id="alignContentSafeSelfStart"></div>
<div id="alignContentUnsafeFlexStart"></div>
<div id="alignContentSafeFlexEnd"></div>
<div id="alignContentEndUnsafe"></div>
<div id="alignContentCenterUnsafe"></div>
<div id="alignContentFlexStartUnsafe"></div>
<div id="alignContentFlexEndSafe"></div>

<div id="alignContentSpaceBetweenLeft"></div>
<div id="alignContentSpaceAroundCenter"></div>
<div id="alignContentSpaceEvenlyRight"></div>
<div id="alignContentStretchStartSafe"></div>
<div id="alignContentSpaceAroundEndUnsafe"></div>
<div id="alignContentSpaceEvenlyFlexStartSafe"></div>
<div id="alignContentSpaceBetweenSafe"></div>
<div id="alignContentSpaceBetweenStretch"></div>
<div id="alignContentSafe"></div>
<div id="alignContentRightSafeUnsafe"></div>
<div id="alignContentCenterLeft"></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 alignContentAuto = document.getElementById("alignContentAuto");
    checkValues(alignContentAuto, "alignContent", "align-content", "", "normal");
    var alignContentBaseline = document.getElementById("alignContentBaseline");
    checkValues(alignContentBaseline, "alignContent", "align-content", "", "baseline");
    var alignContentLastBaseline = document.getElementById("alignContentFirstBaseline");
    checkValues(alignContentLastBaseline, "alignContent", "align-content", "", "baseline");
    var alignContentLastBaseline = document.getElementById("alignContentLastBaseline");
    checkValues(alignContentLastBaseline, "alignContent", "align-content", "", "last baseline");
    var alignContentSpaceBetween = document.getElementById("alignContentSpaceBetween");
    checkValues(alignContentSpaceBetween, "alignContent", "align-content", "", "space-between");
    var alignContentSpaceAround = document.getElementById("alignContentSpaceAround");
    checkValues(alignContentSpaceAround, "alignContent", "align-content", "", "space-around");
    var alignContentSpaceEvenly = document.getElementById("alignContentSpaceEvenly");
    checkValues(alignContentSpaceEvenly, "alignContent", "align-content", "", "space-evenly");
    var alignContentStretch = document.getElementById("alignContentStretch");
    checkValues(alignContentStretch, "alignContent", "align-content", "", "stretch");
    var alignContentStart = document.getElementById("alignContentStart");
    checkValues(alignContentStart, "alignContent", "align-content", "", "start");
    var alignContentEnd = document.getElementById("alignContentEnd");
    checkValues(alignContentEnd, "alignContent", "align-content", "", "end");
    var alignContentCenter = document.getElementById("alignContentCenter");
    checkValues(alignContentCenter, "alignContent", "align-content", "", "center");
    var alignContentFlexStart = document.getElementById("alignContentFlexStart");
    checkValues(alignContentFlexStart, "alignContent", "align-content", "", "flex-start");
    var alignContentFlexEnd = document.getElementById("alignContentFlexEnd");
    checkValues(alignContentFlexEnd, "alignContent", "align-content", "", "flex-end");
    var alignContentUnsafeEnd = document.getElementById("alignContentUnsafeEnd");
    checkValues(alignContentUnsafeEnd, "alignContent", "align-content", "", "unsafe end");
    var alignContentUnsafeCenter = document.getElementById("alignContentUnsafeCenter");
    checkValues(alignContentUnsafeCenter, "alignContent", "align-content", "", "unsafe center");
    var alignContentUnsafeFlexStart = document.getElementById("alignContentUnsafeFlexStart");
    checkValues(alignContentUnsafeFlexStart, "alignContent", "align-content", "", "unsafe flex-start");
    var alignContentSafeFlexEnd = document.getElementById("alignContentSafeFlexEnd");
    checkValues(alignContentSafeFlexEnd, "alignContent", "align-content", "", "safe flex-end");
}, "Test getting align-content values previously set through CSS.");

test(function() {
    var alignContentEndUnsafe = document.getElementById("alignContentEndUnsafe");
    checkValues(alignContentEndUnsafe, "alignContent", "align-content", "", "normal");
    var alignContentCenterUnsafe = document.getElementById("alignContentCenterUnsafe");
    checkValues(alignContentCenterUnsafe, "alignContent", "align-content", "", "normal");
    var alignContentFlexStartUnsafe = document.getElementById("alignContentFlexStartUnsafe");
    checkValues(alignContentFlexStartUnsafe, "alignContent", "align-content", "", "normal");
    var alignContentFlexEndSafe = document.getElementById("alignContentFlexEndSafe");
    checkValues(alignContentFlexEndSafe, "alignContent", "align-content", "", "normal");
    var alignContentSpaceBetweenLeft = document.getElementById("alignContentSpaceBetweenLeft");
    checkValues(alignContentSpaceBetweenLeft, "alignContent", "align-content", "", "normal");
    var alignContentSpaceAroundCenter = document.getElementById("alignContentSpaceAroundCenter");
    checkValues(alignContentSpaceAroundCenter, "alignContent", "align-content", "", "normal");
    var alignContentSpaceEvenlyRight = document.getElementById("alignContentSpaceEvenlyRight");
    checkValues(alignContentSpaceEvenlyRight, "alignContent", "align-content", "", "normal");
    var alignContentStretchStartSafe = document.getElementById("alignContentStretchStartSafe");
    checkValues(alignContentStretchStartSafe, "alignContent", "align-content", "", "normal");
    var alignContentSpaceAroundEndUnsafe = document.getElementById("alignContentSpaceAroundEndUnsafe");
    checkValues(alignContentSpaceAroundEndUnsafe, "alignContent", "align-content", "", "normal");
    var alignContentSpaceEvenlyFlexStartSafe = document.getElementById("alignContentSpaceEvenlyFlexStartSafe");
    checkValues(alignContentSpaceEvenlyFlexStartSafe, "alignContent", "align-content", "", "normal");
    var alignContentSpaceBetweenSafe = document.getElementById("alignContentSpaceBetweenSafe");
    checkValues(alignContentSpaceBetweenSafe, "alignContent", "align-content", "", "normal");
    var alignContentSpaceBetweenStretch = document.getElementById("alignContentSpaceBetweenStretch");
    checkValues(alignContentSpaceBetweenStretch, "alignContent", "align-content", "", "normal");
    var alignContentSafe = document.getElementById("alignContentSafe");
    checkValues(alignContentSafe, "alignContent", "align-content", "", "normal");
    var alignContentRightSafeUnsafe = document.getElementById("alignContentRightSafeUnsafe");
    checkValues(alignContentRightSafeUnsafe, "alignContent", "align-content", "", "normal");
    var alignContentCenterLeft = document.getElementById("alignContentCenterLeft");
    checkValues(alignContentCenterLeft, "alignContent", "align-content", "", "normal");
}, "Test setting invalid values to align-content through CSS.");

test(function() {
    element = document.createElement("div");
    document.body.appendChild(element);
    checkValues(element, "alignContent", "align-content", "", "normal");
}, "Test initial value of align-content through JS");

test(function() {
    element = document.createElement("div");
    document.body.appendChild(element);
    element.style.alignContent = "center";
    checkValues(element, "alignContent", "align-content",  "center", "center");

    element.style.alignContent = "unsafe start";
    checkValues(element, "alignContent", "align-content",  "unsafe start", "unsafe start");

    element.style.alignContent = "safe flex-end";
    checkValues(element, "alignContent", "align-content",  "safe flex-end", "safe flex-end");

    element.style.alignContent = "unsafe end";
    checkValues(element, "alignContent", "align-content",  "unsafe end", "unsafe end");

    element.style.alignContent = "first baseline";
    checkValues(element, "alignContent", "align-content",  "baseline", "baseline");

    element.style.alignContent = "last baseline";
    checkValues(element, "alignContent", "align-content",  "last baseline", "last baseline");

    element.style.alignContent = "normal";
    checkValues(element, "alignContent", "align-content",  "normal", "normal");

    element.style.display = "flex";
    element.style.alignContent = "normal";
    checkValues(element, "alignContent", "align-content",  "normal", "normal");

    element.style.display = "grid";
    element.style.alignContent = "normal";
    checkValues(element, "alignContent", "align-content",  "normal", "normal");

    element.style.alignContent = "flex-end";
    checkValues(element, "alignContent", "align-content",  "flex-end", "flex-end");
}, "Test getting and setting align-content through JS");

test(function() {
    element = document.createElement("div");
    document.body.appendChild(element);

    checkBadValues(element, "alignContent", "align-content",  "left");
    checkBadValues(element, "alignContent", "align-content",  "right");
    checkBadValues(element, "alignContent", "align-content",  "auto");
    checkBadValues(element, "alignContent", "align-content",  "unsafe auto");
    checkBadValues(element, "alignContent", "align-content",  "auto safe");
    checkBadValues(element, "alignContent", "align-content",  "auto left");
    checkBadValues(element, "alignContent", "align-content",  "safe left");
    checkBadValues(element, "alignContent", "align-content",  "unsafe right");
    checkBadValues(element, "alignContent", "align-content",  "baseline safe");
    checkBadValues(element, "alignContent", "align-content",  "last-baseline center");
    checkBadValues(element, "alignContent", "align-content",  "unsafe unsafe");
    checkBadValues(element, "alignContent", "align-content",  "unsafe safe");
    checkBadValues(element, "alignContent", "align-content",  "center start");
    checkBadValues(element, "alignContent", "align-content",  "baseline safe");
    checkBadValues(element, "alignContent", "align-content",  "unsafe baseline");
    checkBadValues(element, "alignContent", "align-content",  "unsafe safe left");
    checkBadValues(element, "alignContent", "align-content",  "unsafe left safe");
    checkBadValues(element, "alignContent", "align-content",  "left safe unsafe safe");
    checkBadValues(element, "alignContent", "align-content",  "start right space-between");
    checkBadValues(element, "alignContent", "align-content",  "safe stretch");
    checkBadValues(element, "alignContent", "align-content",  "normal space-between");
    checkBadValues(element, "alignContent", "align-content",  "stretch normal");
    checkBadValues(element, "alignContent", "align-content",  "stretch center");
    checkBadValues(element, "alignContent", "align-content",  "space-between right safe");
    checkBadValues(element, "alignContent", "align-content",  "normal safe");
    checkBadValues(element, "alignContent", "align-content",  "space-around stretch");
    checkBadValues(element, "alignContent", "align-content",  "end space-between start");
    checkBadValues(element, "alignContent", "align-content",  "right safe left");
    checkBadValues(element, "alignContent", "align-content",  "unsafe");
    checkBadValues(element, "alignContent", "align-content",  "safe");
    checkBadValues(element, "alignContent", "align-content",  "start safe");
    checkBadValues(element, "alignContent", "align-content",  "end unsafe");
}, "Test bad combinations of align-content");

test(function() {
    element.style.display = "";
    checkInitialValues(element, "alignContent", "align-content", "center", "normal");
}, "Test the value 'initial'");

test(function() {
    element.style.display = "grid";
    checkInitialValues(element, "alignContent", "align-content", "safe start", "normal");
}, "Test the value 'initial' for grid containers");

test(function() {
    element.style.display = "flex";
    checkInitialValues(element, "alignContent", "align-content", "unsafe end", "normal");
}, "Test the value 'initial' for flex containers");

test(function() {
    checkInheritValues("alignContent", "align-content", "end");
    checkInheritValues("alignContent", "align-content", "safe start");
    checkInheritValues("alignContent", "align-content", "unsafe center");
}, "Test the value 'inherit'");
</script>
