<!DOCTYPE html>
<html class=reftest-wait>
<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#layout-invalidation">
<link rel="match" href="style-map-ref.html">
<meta name="assert" content="This test checks that properties are correctly given to the layout function." />

<style>
.test {
  background: red;
  margin: 10px;
  width: 100px;

  /* Properties under test. */
  --foo:bar;
  margin-left: 2px;
}

@supports (display: layout(test)) {
  .test {
    background: green;
  }

  .test-0 { display: layout(test-0); }
  .test-1 { display: layout(test-1); }
  .test-2 { display: layout(test-2); }
  .test-3 { display: layout(test-3); }
}
</style>
<script src="/common/reftest-wait.js"></script>
<script src="/common/worklet-reftest.js"></script>

<div class="test test-0"></div>
<div class="test test-1"></div>
<div class="test test-2"></div>
<div class="test test-3"></div>

<script>
const tmpl = (test, idx) => {
  return `
    registerLayout('test-${idx}', class {
      static get inputProperties() { return ['${test.property}']; }

      async intrinsicSizes() {}
      async layout(children, edges, constraints, styleMap) {
        const value = styleMap.get('${test.property}');
        const result = '[' + value.constructor.name + '=' + value.toString() + ']';
        if (result != '${test.expected}')
          return {autoBlockSize: 0};

        const size = Array.from(styleMap.keys()).length;
        if (size != 1)
          return {autoBlockSize: 0};

        return {autoBlockSize: 100};
      }
    });
  `;
}

const tests = [
  {property: '--bar', expected: '[CSSUnparsedValue=]'},
  {property: '--foo', expected: '[CSSUnparsedValue=bar]'},
  {property: 'empty-cells', expected: '[CSSKeywordValue=show]'},
  {property: 'margin-left', expected: '[CSSUnitValue=2px]'},
];

const workletSource = tests.map(tmpl).join('\n');

importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, workletSource);
</script>
</html>
