<!DOCTYPE html>
<meta charset="utf-8">
<title>Logical properties with <code>var()</code></title>
<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com" />
<link rel="help" href="https://drafts.csswg.org/css-logical-1/#box">
<link rel="help" href="https://drafts.csswg.org/css-variables-1/">
<meta name="assert" content="Checks that logical properties can use the 'var()' notation to reference custom properties.">
<div id="target"></div>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
const target = document.getElementById("target");
const {style} = target;
const computedStyle = getComputedStyle(target);
let title;

function check(property, specifiedExpected, expectedComputed) {
  test(() => {
    const specifiedActual = style.getPropertyValue(property);
    assert_equals(specifiedActual, specifiedExpected, "Specified value");
    const computedActual = computedStyle.getPropertyValue(property);
    assert_equals(computedActual, expectedComputed, "Computed value");
  }, title + " - " + property);
}

{
  title = "Logical longhands with variables";
  style.cssText = "";
  style.setProperty("--one", "1px");
  style.setProperty("--two", "2px");
  style.setProperty("margin-inline-start", "var(--one)");
  style.setProperty("margin-inline-end", "var(--two)");

  check("margin-inline-start", "var(--one)", "1px");
  check("margin-inline-end", "var(--two)", "2px");
  check("margin-inline", "", "1px 2px");
}
{
  title = "Logical shorthand with 1 variable";
  style.cssText = "";
  style.setProperty("--one", "1px");
  style.setProperty("margin-inline", "var(--one)");

  check("margin-inline-start", "", "1px");
  check("margin-inline-end", "", "1px");
  check("margin-inline", "var(--one)", "1px");
}
{
  title = "Logical shorthand with 2 variables";
  style.cssText = "";
  style.setProperty("--one", "1px");
  style.setProperty("--two", "2px");
  style.setProperty("margin-inline", "var(--one) var(--two)");

  check("margin-inline-start", "", "1px");
  check("margin-inline-end", "", "2px");
  check("margin-inline", "var(--one) var(--two)", "1px 2px");
}
{
  title = "Logical shorthand with 1 variable and 1 length";
  style.cssText = "";
  style.setProperty("--one", "1px");
  style.setProperty("margin-inline", "var(--one) 2px");

  check("margin-inline-start", "", "1px");
  check("margin-inline-end", "", "2px");
  check("margin-inline", "var(--one) 2px", "1px 2px");
}
</script>
