chromium/third_party/blink/web_tests/external/wpt/css/css-layout-api/edges/support/edges.js

import {areArraysEqual} from '/common/arrays.js';

function parseNumber(value) {
  const num = parseInt(value.toString());
  if (isNaN(num)) return 0;
  return num;
}

registerLayout('test', class {
  static get inputProperties() {
    return [
      '--edges-inline-start-expected',
      '--edges-inline-end-expected',
      '--edges-block-start-expected',
      '--edges-block-end-expected',
    ];
  }

  async intrinsicSizes() {}
  async layout(children, edges, constraints, styleMap) {
    const actual = this.constructor.inputProperties.map(
      prop => parseNumber(styleMap.get(prop))
    );

    const expected = [
      edges.inlineStart,
      edges.inlineEnd,
      edges.blockStart,
      edges.blockEnd,
    ];

    if (!areArraysEqual(expected, actual)) {
      return {autoBlockSize: 0, childFragments: []};
    }

    return {autoBlockSize: 100, childFragment: []};
  }
});