<!DOCTYPE html>
<meta charset="utf-8">
<script src='../resources/testharness.js'></script>
<script src='../resources/testharnessreport.js'></script>
<script src='resources/shadow-dom.js'></script>
<div id='d1'>
  <template data-mode='open'>
    <div id='d1-1'>
      <template data-mode='open'>
        <div id='d1-1-1'></div>
        <slot name='d1-1-s1'></slot>
        <slot name='d1-1-s2'></slot>
        <div id='d1-1-2'></div>
      </template>
      <div id='d1-2'></div>
      <slot id='d1-s0'></slot>
      <slot name='d1-s1' slot='d1-1-s1'></slot>
      <slot name='d1-s2'></slot>
      <div id='d1-3'></div>
      <div id='d1-4' slot='d1-1-s1'></div>
    </div>
  </template>
  <div id='d2' slot='d1-s1'></div>
  <div id='d3' slot='d1-s2'></div>
  <div id='d4' slot='non-existent'></div>
  <div id='d5'></div>
</div>
<script>
'use strict';
convertTemplatesToShadowRootsWithin(d1);
removeWhiteSpaceOnlyTextNodes(d1);
document.body.offsetLeft;

const d1_shadow = d1.shadowRoot;
const d1_1 = d1_shadow.querySelector('#d1-1');
const d1_2 = d1_shadow.querySelector('#d1-2');
const d1_3 = d1_shadow.querySelector('#d1-3');
const d1_4 = d1_shadow.querySelector('#d1-4');
const d1_s0= d1_shadow.querySelector('#d1-s0');
const d1_s1 = d1_shadow.querySelector('[name=d1-s1]');
const d1_s2 = d1_shadow.querySelector('[name=d1-s2]');

const d1_1_shadow = d1_1.shadowRoot;
const d1_1_1 = d1_1_shadow.querySelector('#d1-1-1');
const d1_1_2 = d1_1_shadow.querySelector('#d1-1-2');
const d1_1_s1 = d1_1_shadow.querySelector('[name=d1-1-s1]');
const d1_1_s2 = d1_1_shadow.querySelector('[name=d1-1-s2]');

test(() => {
  assert_equals(d1.assignedSlot, null);
  assert_equals(d2.assignedSlot, d1_s1);
  assert_equals(d3.assignedSlot, d1_s2);
  assert_equals(d4.assignedSlot, null);
  assert_equals(d5.assignedSlot, d1_s0);

  assert_equals(d1_2.assignedSlot, null);
  assert_equals(d1_s0.assignedSlot, null);
  assert_equals(d1_s1.assignedSlot, d1_1_s1);
  assert_equals(d1_s2.assignedSlot, null);
  assert_equals(d1_3.assignedSlot, null);
  assert_equals(d1_4.assignedSlot, d1_1_s1);
}, "assignedSlot");

test(() => {
  assert_array_equals(d1_s0.assignedNodes(), [d5]);
  assert_array_equals(d1_s1.assignedNodes(), [d2]);
  assert_array_equals(d1_s2.assignedNodes(), [d3]);

  assert_array_equals(d1_1_s1.assignedNodes(), [d1_s1, d1_4]);
  assert_array_equals(d1_1_s2.assignedNodes(), []);
}, "assignedNodes");

test(() => {
  assert_array_equals(d1_1_s1.assignedNodes({flatten: false}), [d1_s1, d1_4],
                      "{flatten: false} should not have any effect");
}, "assignedNodes({flatten: false})");

test(() => {
  assert_array_equals(d1_s0.assignedNodes({flatten: true}), [d5]);
  assert_array_equals(d1_s1.assignedNodes({flatten: true}), [d2]);
  assert_array_equals(d1_s2.assignedNodes({flatten: true}), [d3]);

  assert_array_equals(d1_1_s1.assignedNodes({flatten: true}), [d2, d1_4]);
  assert_array_equals(d1_1_s1.assignedNodes({flatten: true}), [d2, d1_4]);
  assert_array_equals(d1_1_s2.assignedNodes({flatten: true}), []);
}, "assignedNodes({flatten: true})");
</script>
