<!DOCTYPE html>
<title>CSS Box Alignment: place-self shorthand - multiple values specified</title>
<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com" />
<link rel="help" href="http://www.w3.org/TR/css3-align/#place-self-property" />
<meta name="assert" content="Check that setting two values to place-self sets the first one to 'align-self' and the second one to 'justify-self'." />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/css-align/resources/alignment-parsing-utils.js"></script>
<div id="log"></div>
<script>
    let classes = Object.assign({"Auto":"auto", "Normal":"normal", "Stretch":"stretch"}, selfPositionClasses,
                                baselineClasses, overflowClasses);
    for (var key1 in classes) {
        let alignValue = classes[key1];
        let classes2 = Object.assign({"Left":"left", "Right":"right"}, classes);
        for (var key2 in classes2) {
            let justifyValue = classes2[key2];
            test(function() {
                checkPlaceShorhandLonghands("place-self", "align-self", "justify-self", alignValue, justifyValue);
            }, "Checking place-self: " + alignValue + " " + justifyValue);
        }
    }
</script>
