<!DOCTYPE HTML>
<!--
     Any copyright is dedicated to the Public Domain.
     http://creativecommons.org/publicdomain/zero/1.0/
-->
<html><head>
  <meta charset="utf-8">
  <title>CSS Grid Test: subgrid item using mix of outer/inner line names</title>
  <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
  <link rel="help" href="https://drafts.csswg.org/css-grid-2">
  <link rel="match" href="line-names-004-ref.html">
  <style>
html,body {
  color:black; background-color:white; font:24px/1 monospace; padding:0; margin:0;
}

.grid {
  display: grid;
  grid: auto / [a] 50px 50px 50px 50px [b] 50px 50px [a b];
  padding: 20px 10px;
}

.subgrid {
  display: grid;
  grid-template-columns:  subgrid [x] [b] [] [] [b];
  grid-auto-rows: 10px;
  grid-column: 2 / span 4;
}

x { background: grey; }

  </style>
</head>
<body>

<div class="grid">
  <div class="subgrid">
    <x style="grid-row:1; grid-column: b / b 2"></x>
    <x style="grid-row:2; grid-column: b / b -1"></x>
    <x style="grid-row:3; grid-column: b / b -2"></x>
    <x style="grid-row:4; grid-column: b / span b"></x>
    <x style="grid-row:5; grid-column: b / span b 2"></x>
    <x style="grid-row:6; grid-column: span b / b 2"></x>
    <x style="grid-row:7; grid-column: span b 2 / b 2"></x>
    <x style="grid-row:8; grid-column: b -2 / b"></x>
    <x style="grid-row:9; grid-column: b -3 / b"></x>
    <x style="grid-row:10; grid-column: b / b"></x>
    <x style="grid-row:11; grid-column: b / b 10"></x>
    <x style="grid-row:12; grid-column: span b / b -2"></x>
  </div>
</div>

<script>
  const expectedResults = [
    "subgrid [x] [b] [] [] [b]",
  ];
  [...document.querySelectorAll('.subgrid')].forEach(function(subgrid, i) {
    let actual = window.getComputedStyle(subgrid)['grid-template-columns'];
    let expected = expectedResults[i];
    if (actual != expected) {
      let err = "Unexpected getComputedStyle value for subgrid " + i + " with className '" + subgrid.className + "':" +
      " Actual: \"" + actual + "\", Expected: \"" + expected + "\"";
      document.body.appendChild(document.createTextNode(err));
    }
  });
</script>

</body>
</html>
