<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Grid Layout Test: Grid Track Sizing Algorithm Flexible Tracks and Gutters</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-grid/#gutters">
<link rel="help" href="https://drafts.csswg.org/css-grid/#algo-find-fr-size">
<meta name="assert" content="This test checks that the size of flexible tracks is properly computed when you have gaps (with and without spanning items).">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
.grid {
  position: relative;
  display: grid;
  grid-gap: 10px 20px;
  font: 10px/1 Ahem;
  margin: 50px;
}

.fixedSize {
  width: 200px;
  height: 100px;
}

.contentBasedSize {
  float: left;
  height: auto;
}

.grid div:nth-child(1) { background: magenta; }
.grid div:nth-child(2) { background: cyan; }
.grid div:nth-child(3) { background: yellow; }
.grid div:nth-child(4) { background: lime; }
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<script type="text/javascript">
  setup({ explicit_done: true });
</script>
<body onload="document.fonts.ready.then(() => { checkLayout('.grid'); })">

<div id="log"></div>

<div class="grid fixedSize" style="grid: 50px 1fr / 100px 1fr;">
  <div data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="50"></div>
  <div data-offset-x="120" data-offset-y="0" data-expected-width="80" data-expected-height="50"></div>
  <div data-offset-x="0" data-offset-y="60" data-expected-width="100" data-expected-height="40"></div>
  <div data-offset-x="120" data-offset-y="60" data-expected-width="80" data-expected-height="40"></div>
</div>

<div class="grid fixedSize" style="grid: 50px 1fr / 100px 1fr;">
  <div style="grid-column: span 2;"
    data-offset-x="0" data-offset-y="0" data-expected-width="200" data-expected-height="50"></div>
  <div data-offset-x="0" data-offset-y="60" data-expected-width="100" data-expected-height="40"></div>
  <div data-offset-x="120" data-offset-y="60" data-expected-width="80" data-expected-height="40"></div>
</div>

<div class="grid fixedSize" style="grid: 50px 1fr / 100px 1fr;">
  <div style="grid-column: 1; grid-row: 1;"
    data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="50"></div>
  <div style="grid-column: 2; grid-row: 1;"
    data-offset-x="120" data-offset-y="0" data-expected-width="80" data-expected-height="50"></div>
  <div style="grid-column: span 2;"
    data-offset-x="0" data-offset-y="60" data-expected-width="200" data-expected-height="40"></div>
</div>

<div class="grid fixedSize" style="grid: 50px 1fr / 100px 1fr;">
  <div style="grid-row: span 2;"
    data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="100"></div>
  <div data-offset-x="120" data-offset-y="0" data-expected-width="80" data-expected-height="50"></div>
  <div data-offset-x="120" data-offset-y="60" data-expected-width="80" data-expected-height="40"></div>
</div>

<div class="grid fixedSize" style="grid: 50px 1fr / 100px 1fr;">
  <div style="grid-column: 1; grid-row: 1;"
    data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="50"></div>
  <div style="grid-column: 1; grid-row: 2;"
    data-offset-x="0" data-offset-y="60" data-expected-width="100" data-expected-height="40"></div>
  <div style="grid-row: span 2;"
    data-offset-x="120" data-offset-y="0" data-expected-width="80" data-expected-height="100"></div>
</div>

<div class="grid fixedSize" style="grid: 50px 1fr / 100px 1fr;">
  <div style="grid-row: span 2; grid-column: span 2;"
    data-offset-x="0" data-offset-y="0" data-expected-width="200" data-expected-height="100"></div>
</div>

<div class="grid contentBasedSize" style="grid: 50px 1fr / 100px 1fr;">
  <div data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="50"></div>
  <div data-offset-x="120" data-offset-y="0" data-expected-width="80" data-expected-height="50">XXXXXXXX</div>
  <div data-offset-x="0" data-offset-y="60" data-expected-width="100" data-expected-height="40">X<br>X<br>X<br>X</div>
  <div data-offset-x="120" data-offset-y="60" data-expected-width="80" data-expected-height="40"></div>
</div>

<div class="grid contentBasedSize" style="grid: 50px 1fr / 100px 1fr;">
  <div data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="50"></div>
  <div data-offset-x="120" data-offset-y="0" data-expected-width="80" data-expected-height="50"></div>
  <div data-offset-x="0" data-offset-y="60" data-expected-width="100" data-expected-height="40"></div>
  <div data-offset-x="120" data-offset-y="60" data-expected-width="80" data-expected-height="40">XXXXXXXX<br>X<br>X<br>X</div>
</div>

<div class="grid contentBasedSize" style="grid: 50px 1fr / 100px 1fr;">
  <div style="grid-column: span 2;"
    data-offset-x="0" data-offset-y="0" data-expected-width="200" data-expected-height="50"></div>
  <div data-offset-x="0" data-offset-y="60" data-expected-width="100" data-expected-height="40">X<br>X<br>X<br>X</div>
  <div data-offset-x="120" data-offset-y="60" data-expected-width="80" data-expected-height="40">XXXXXXXX</div>
</div>

<div class="grid contentBasedSize" style="grid: 50px 1fr / 100px 1fr;">
  <div style="grid-column: span 2;"
    data-offset-x="0" data-offset-y="0" data-expected-width="200" data-expected-height="50">XXXXXXXXXXXXXXXXXXXX</div>
  <div data-offset-x="0" data-offset-y="60" data-expected-width="100" data-expected-height="40">X<br>X<br>X<br>X</div>
  <div data-offset-x="120" data-offset-y="60" data-expected-width="80" data-expected-height="40"></div>
</div>

<div class="grid contentBasedSize" style="grid: 50px 1fr / 100px 1fr;">
  <div style="grid-column: 1; grid-row: 1;"
    data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="50"></div>
  <div style="grid-column: 2; grid-row: 1;"
    data-offset-x="120" data-offset-y="0" data-expected-width="80" data-expected-height="50">XXXXXXXX</div>
  <div style="grid-column: span 2;"
    data-offset-x="0" data-offset-y="60" data-expected-width="200" data-expected-height="40">X<br>X<br>X<br>X</div>
</div>

<div class="grid contentBasedSize" style="grid: 50px 1fr / 100px 1fr;">
  <div style="grid-column: 1; grid-row: 1;"
    data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="50"></div>
  <div style="grid-column: 2; grid-row: 1;"
    data-offset-x="120" data-offset-y="0" data-expected-width="80" data-expected-height="50"></div>
  <div style="grid-column: span 2;"
    data-offset-x="0" data-offset-y="60" data-expected-width="200" data-expected-height="40">XXXXXXXXXXXXXXXXXXXX<br>X<br>X<br>X</div>
</div>

<div class="grid contentBasedSize" style="grid: 50px 1fr / 100px 1fr;">
  <div style="grid-row: span 2;"
    data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="100"></div>
  <div data-offset-x="120" data-offset-y="0" data-expected-width="80" data-expected-height="50">XXXXXXXX</div>
  <div data-offset-x="120" data-offset-y="60" data-expected-width="80" data-expected-height="40">X<br>X<br>X<br>X</div>
</div>

<div class="grid contentBasedSize" style="grid: 50px 1fr / 100px 1fr;">
  <div style="grid-row: span 2;"
    data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="100">X<br>X<br>X<br>X<br>X<br>X<br>X<br>X<br>X<br>X</div>
  <div data-offset-x="120" data-offset-y="0" data-expected-width="80" data-expected-height="50">XXXXXXXX</div>
  <div data-offset-x="120" data-offset-y="60" data-expected-width="80" data-expected-height="40"></div>
</div>

<div class="grid contentBasedSize" style="grid: 50px 1fr / 100px 1fr;">
  <div style="grid-column: 1; grid-row: 1;"
    data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="50"></div>
  <div style="grid-column: 1; grid-row: 2;"
    data-offset-x="0" data-offset-y="60" data-expected-width="100" data-expected-height="40">X<br>X<br>X<br>X</div>
  <div style="grid-row: span 2;"
    data-offset-x="120" data-offset-y="0" data-expected-width="80" data-expected-height="100">XXXXXXXX</div>
</div>

<div class="grid contentBasedSize" style="grid: 50px 1fr / 100px 1fr;">
  <div style="grid-column: 1; grid-row: 1;"
    data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="50"></div>
  <div style="grid-column: 1; grid-row: 2;"
    data-offset-x="0" data-offset-y="60" data-expected-width="100" data-expected-height="40"></div>
  <div style="grid-row: span 2;"
    data-offset-x="120" data-offset-y="0" data-expected-width="80" data-expected-height="100">XXXXXXXX<br>X<br>X<br>X<br>X<br>X<br>X<br>X<br>X<br>X</div>
</div>

<div class="grid contentBasedSize" style="grid: 50px 1fr / 100px 1fr;">
  <div style="grid-row: span 2; grid-column: span 2;"
       data-offset-x="0" data-offset-y="0" data-expected-width="200" data-expected-height="100">
XXXXXXXXXXXXXXXXXXXX<br>X<br>X<br>X<br>X<br>X<br>X<br>X<br>X<br>X</div>
</div>
