<!DOCTYPE html><!-- webkit-test-runner [ experimental:CSSCustomPropertiesAndValuesEnabled=true ] -->
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>

<style>
  #test1 {
    font-size: 10px;
    --my-custom-prop: 10em;
    width: var(--my-custom-prop);
  }
  #test2 {
    font-size: 10px;
    --my-custom-prop: 10ex;
    width: var(--my-custom-prop);
  }
  #test3 {
    --my-custom-prop: 10px;
    font-size: calc(var(--my-custom-prop) + 10px);
    width: calc(var(--my-custom-prop) + 10em);
  }
</style>
<div>
  <div id="test1"><p>test</p></div>
  <div id="test2"><p>test</p></div>
  <div id="test3"><p>test</p></div>
</div>
<script>

function test_prop(id, prop, expected) {
  assert_equals(window.getComputedStyle(document.getElementById(id)).getPropertyValue(prop).trim(), expected);
}

test(function() {
  CSS.registerProperty({
    name: '--my-custom-prop',
    syntax: '<length>',
    inherits: true,
    initialValue: '0px'
  })
}, "Registration is successful");
test(function() {
  test_prop('test1', '--my-custom-prop', '100px');
  test_prop('test1', 'width', '100px');
}, "Test 1");
test(function() {
  const floatA = parseFloat(window.getComputedStyle(document.getElementById('test2')).getPropertyValue('--my-custom-prop').trim().replace(/px/gi, ''));
  const floatB = parseFloat(window.getComputedStyle(document.getElementById('test2')).getPropertyValue('width').trim().replace(/px/gi, ''));
  assert_true(Math.abs(floatA - 44.8) < 0.1);
  assert_true(Math.abs(floatB - 44.8) < 0.1);
}, "Test 2");
test(function() {
  test_prop('test3', '--my-custom-prop', '10px');
  test_prop('test3', 'font-size', '20px');
  test_prop('test3', 'width', '210px');
}, "Test 3");
</script>
