<!doctype html>
<meta charset="utf-8">
<title>CSSVariableReferenceValue tests</title>
<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#cssvariablereferencevalue">
<meta name="assert" content="Test CSSVariableReferenceValue constructor and attributes" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../resources/testhelper.js"></script>
<script>
'use strict';

test(() => {
  const result = new CSSVariableReferenceValue('--foo');

  assert_not_equals(result, null,
      'A CSSVariableReferenceValue should be created');
  assert_equals(result.variable, '--foo',
      'Variable member should be same as passed in the constructor');
  assert_equals(result.fallback, null,
      'Fallback member should be null');
}, 'CSSVariableReferenceValue can be constructed with no fallback');

test(() => {
  const result = new CSSVariableReferenceValue('--foo',
      new CSSUnparsedValue('lemon'));

  assert_not_equals(result, null,
      'A CSSVariableReferenceValue should be created');
  assert_equals(result.variable, '--foo',
      'Variable member should be same as passed in the constructor');
  assert_not_equals(result.fallback, null,
      'Fallback member should not be null');
  assert_style_value_equals(result.fallback, new CSSUnparsedValue('lemon'),
      'Fallback member should be as same as passed in the constructor');
}, 'CSSVariableReferenceValue can be constructed with fallback');

test(() => {
  let result = new CSSVariableReferenceValue('--foo');
  result.variable = '--bar';

  assert_equals(result.variable, '--bar',
      'Variable member should be updated to new value');
}, 'CSSVariableReferenceValue.variable can updated to a valid variable name');

</script>
