<!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-multi-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;
    display: layout(test);
  }
}
</style>
<script src="/common/reftest-wait.js"></script>
<script src="/common/worklet-reftest.js"></script>

<div class="test"></div>

<script id="code" type="text/worklet">
registerLayout('test', class {
  static get inputProperties() {
    return [ '--bar', '--foo', 'empty-cells', 'margin-left'];
  }

  async intrinsicSizes() {}
  async layout(children, edges, constraints, styleMap) {
    const expected = [
      {property: '--bar', value: '[CSSUnparsedValue=]'},
      {property: '--foo', value: '[CSSUnparsedValue= bar]'},
      {property: 'empty-cells', value: '[CSSKeywordValue=show]'},
      {property: 'margin-left', value: '[CSSUnitValue=2px]'},
    ];

    const actual = Array.from(styleMap.keys()).sort().map((property) => {
      const valueObject = styleMap.get(property);
      const value = '[' + valueObject.constructor.name + '=' + valueObject.toString() + ']';
      return {property, value};
    });

    if (expected.length != actual.length)
      return {autoBlockSize: 0};

    for (let i = 0; i < expected.length; i++) {
      if (expected[i].property != actual[i].property)
        return {autoBlockSize: 0};

      if (expected[i].value != actual[i].value)
        return {autoBlockSize: 0};
    }

    return {autoBlockSize: 100};
  }
});
</script>

<script>
importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent);
</script>
</html>
