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