<!DOCTYPE html>
<html>
<body>
<script src="../../resources/js-test.js"></script>
<p>This test checks <a href="http://dev.w3.org/html5/spec/Overview.html#bidirectional-text">the default rules for direction and unicode-bidi CSS properties</a>.</p>
<div id="container"></div>
<div id="console"></div>
<script>

var container = document.getElementById('container');

function styleOf(name, attributes) {
    var element = document.createElement(name);
    for (var name in attributes) {
        var value = attributes[name];
        element.setAttribute(name, value);
    }
    container.appendChild(element);
    return getComputedStyle(element);
}

var tests = [
    // FIXME: Below should be `isolate-override`.
    ['div', {}, 'ltr', 'normal'],
    ['div', {'dir': 'ltr'}, 'ltr', 'isolate'],
    ['div', {'dir': 'rtl'}, 'rtl', 'isolate'],
    ['div', {'dir': 'auto'}, 'ltr', 'isolate'],
    // FIXME: Below should be `isolate-override`.
    ['div', {'dir': ''}, 'ltr', 'normal'],

    ['span', {}, 'ltr', 'normal'],
    ['span', {'dir': 'ltr'}, 'ltr', 'isolate'],
    ['span', {'dir': 'rtl'}, 'rtl', 'isolate'],
    ['span', {'dir': 'auto'}, 'ltr', 'isolate'],
    ['span', {'dir': ''}, 'ltr', 'normal'],

    ['bdi', {}, 'ltr', 'isolate'],
    ['bdi', {'dir': 'ltr'}, 'ltr', 'isolate'],
    ['bdi', {'dir': 'rtl'}, 'rtl', 'isolate'],
    ['bdi', {'dir': 'auto'}, 'ltr', 'isolate'],
    ['bdi', {'dir': ''}, 'ltr', 'isolate'],

    ['output', {}, 'ltr', 'isolate'],
    ['output', {'dir': 'ltr'}, 'ltr', 'isolate'],
    ['output', {'dir': 'rtl'}, 'rtl', 'isolate'],
    ['output', {'dir': 'auto'}, 'ltr', 'isolate'],
    ['output', {'dir': ''}, 'ltr', 'isolate'],

    // https://html.spec.whatwg.org/multipage/rendering.html#bidi-rendering
    ['bdo', {}, 'ltr', 'isolate-override'],
    ['bdo', {'dir': 'ltr'}, 'ltr', 'isolate-override'],
    ['bdo', {'dir': 'rtl'}, 'rtl', 'isolate-override'],
    // FIXME: Below should be `isolate-override`.
    ['bdo', {'dir': 'auto'}, 'ltr', 'isolate'],
    ['bdo', {'dir': ''}, 'ltr', 'isolate-override'],

    ['textarea', {}, 'ltr', 'normal'],
    ['textarea', {'dir': 'ltr'}, 'ltr', 'isolate'],
    ['textarea', {'dir': 'rtl'}, 'rtl', 'isolate'],
    ['textarea', {'dir': 'auto'}, 'ltr', 'plaintext'],
    ['textarea', {'dir': ''}, 'ltr', 'normal'],

    // FIXME: Below should be `isolate`.
    ['pre', {}, 'ltr', 'normal'],
    ['pre', {'dir': 'ltr'}, 'ltr', 'isolate'],
    ['pre', {'dir': 'rtl'}, 'rtl', 'isolate'],
    ['pre', {'dir': 'auto'}, 'ltr', 'plaintext'],
    // FIXME: Below should be `isolate`.
    ['pre', {'dir': ''}, 'ltr', 'normal'],
].forEach(function (test) {
    shouldBe('styleOf("' + test[0] + '", ' + JSON.stringify(test[1]) + ').direction', '"' + test[2] + '"');
    container.innerHTML = '';
    shouldBe('styleOf("' + test[0] + '", ' + JSON.stringify(test[1]) + ').unicodeBidi', '"' + test[3] + '"');
    container.innerHTML = '';
});

</script>
</body>
</html>
