// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'dart:html';

import 'package:expect/minitest.dart';

bool isChecked(Element e) => (e as CheckboxInputElement).checked!;
bool isUnchecked(Element e) => !(e as CheckboxInputElement).checked!;

// Test that List<Element> implements List<T>
main() {
  Element insertTestDiv() {
    Element element = new Element.tag('div');
    element.innerHtml = r"""
<div id='allChecked'>
<input type="checkbox" name="c1" value="1" checked="yes">
<input type="checkbox" name="c2" value="2" checked="yes">
<input type="checkbox" name="c3" value="3" checked="yes">
<input type="checkbox" name="c4" value="4" checked="yes">
</div>
<div id='someChecked'>
<input type="checkbox" name="s1" value="1" checked="yes">
<input type="checkbox" name="s2" value="2">
<input type="checkbox" name="s3" value="3" checked="yes">
<input type="checkbox" name="s4" value="4">
</div>
<div id='noneChecked'>
<input type="checkbox" name="n1" value="1">
<input type="checkbox" name="n2" value="2">
<input type="checkbox" name="n3" value="3">
<input type="checkbox" name="n4" value="4">
</div>
<div id='emptyDiv'></div>
""";
    document.body!.append(element);
    return element;
  }

  test('IsList', () {
    Element root = insertTestDiv();

    List<Element> eachChecked = document.querySelector('#allChecked')!.children;

    expect(eachChecked is List, isTrue);

    root.remove();
  });
  test('Every', () {
    Element root = insertTestDiv();

    List<Element> eachChecked = document.querySelector('#allChecked')!.children;

    List<Element> someChecked =
        document.querySelector('#someChecked')!.children;

    List<Element> noneChecked =
        document.querySelector('#noneChecked')!.children;

    expect(eachChecked.length, 4);
    expect(someChecked.length, 4);
    expect(noneChecked.length, 4);

    expect(eachChecked.every(isChecked), isTrue);
    expect(eachChecked.every(isUnchecked), isFalse);
    expect(someChecked.every(isChecked), isFalse);
    expect(someChecked.every(isUnchecked), isFalse);
    expect(noneChecked.every(isChecked), isFalse);
    expect(noneChecked.every(isUnchecked), isTrue);

    root.remove();
  });
  test('Some', () {
    Element root = insertTestDiv();

    List<Element> eachChecked = document.querySelector('#allChecked')!.children;

    List<Element> someChecked =
        document.querySelector('#someChecked')!.children;

    List<Element> noneChecked =
        document.querySelector('#noneChecked')!.children;

    expect(eachChecked.length, 4);
    expect(someChecked.length, 4);
    expect(noneChecked.length, 4);

    expect(eachChecked.any(isChecked), isTrue);
    expect(eachChecked.any(isUnchecked), isFalse);
    expect(someChecked.any(isChecked), isTrue);
    expect(someChecked.any(isUnchecked), isTrue);
    expect(noneChecked.any(isChecked), isFalse);
    expect(noneChecked.any(isUnchecked), isTrue);

    root.remove();
  });
  test('Filter', () {
    Element root = insertTestDiv();

    List<Element> eachChecked = document.querySelector('#allChecked')!.children;

    List<Element> someChecked =
        document.querySelector('#someChecked')!.children;

    List<Element> noneChecked =
        document.querySelector('#noneChecked')!.children;

    expect(eachChecked.length, 4);
    expect(someChecked.length, 4);
    expect(noneChecked.length, 4);

    expect(eachChecked.where(isChecked).length, 4);
    expect(eachChecked.where(isUnchecked).length, 0);
    expect(someChecked.where(isChecked).length, 2);
    expect(someChecked.where(isUnchecked).length, 2);
    expect(noneChecked.where(isChecked).length, 0);
    expect(noneChecked.where(isUnchecked).length, 4);

    root.remove();
  });
  test('IsEmpty', () {
    Element root = insertTestDiv();

    List<Element> someChecked =
        document.querySelector('#someChecked')!.children;

    List<Element> emptyDiv = document.querySelector('#emptyDiv')!.children;

    expect(someChecked.length, 4);
    expect(emptyDiv.length, 0);

    expect(someChecked.isEmpty, isFalse);
    expect(emptyDiv.isEmpty, isTrue);

    root.remove();
  });

  int countWithForEach(collection, predicate) {
    int count = 0;
    collection.forEach((element) {
      if (predicate(element)) count++;
    });
    return count;
  }

  test('ForEach', () {
    Element root = insertTestDiv();

    List<Element> eachChecked = document.querySelector('#allChecked')!.children;

    List<Element> someChecked =
        document.querySelector('#someChecked')!.children;

    List<Element> noneChecked =
        document.querySelector('#noneChecked')!.children;

    expect(eachChecked.length, 4);
    expect(someChecked.length, 4);
    expect(noneChecked.length, 4);

    expect(countWithForEach(eachChecked, isChecked), 4);
    expect(countWithForEach(eachChecked, isUnchecked), 0);
    expect(countWithForEach(someChecked, isChecked), 2);
    expect(countWithForEach(someChecked, isUnchecked), 2);
    expect(countWithForEach(noneChecked, isChecked), 0);
    expect(countWithForEach(noneChecked, isUnchecked), 4);

    root.remove();
  });

  int countWithForLoop(collection, predicate) {
    int count = 0;
    for (var element in collection) {
      if (predicate(element)) count++;
    }
    return count;
  }

  test('ForLoop', () {
    // Uses iterator.
    Element root = insertTestDiv();

    List<Element> eachChecked = document.querySelector('#allChecked')!.children;

    List<Element> someChecked =
        document.querySelector('#someChecked')!.children;

    List<Element> noneChecked =
        document.querySelector('#noneChecked')!.children;

    expect(eachChecked.length, 4);
    expect(someChecked.length, 4);
    expect(noneChecked.length, 4);

    expect(countWithForLoop(eachChecked, isChecked), 4);
    expect(countWithForLoop(eachChecked, isUnchecked), 0);
    expect(countWithForLoop(someChecked, isChecked), 2);
    expect(countWithForLoop(someChecked, isUnchecked), 2);
    expect(countWithForLoop(noneChecked, isChecked), 0);
    expect(countWithForLoop(noneChecked, isUnchecked), 4);

    root.remove();
  });
  test('Last', () {
    Element root = insertTestDiv();

    List<Element> someChecked =
        document.querySelector('#someChecked')!.children;

    expect(someChecked.length, 4);

    expect(someChecked.last, equals(someChecked[3]));

    root.remove();
  });
  test('IndexOf', () {
    Element root = insertTestDiv();

    List<Element> someChecked =
        document.querySelector('#someChecked')!.children;

    List<Element> noneChecked =
        document.querySelector('#noneChecked')!.children;

    expect(someChecked.length, 4);
    expect(noneChecked.length, 4);

    expect(someChecked.indexOf(someChecked[0], 0), 0);
    expect(someChecked.indexOf(someChecked[1], 0), 1);
    expect(someChecked.indexOf(someChecked[2], 0), 2);
    expect(someChecked.indexOf(someChecked[3], 0), 3);

    expect(someChecked.indexOf(someChecked[0], 1), -1);
    expect(someChecked.indexOf(someChecked[1], 2), -1);
    expect(someChecked.indexOf(someChecked[2], 3), -1);
    expect(someChecked.indexOf(someChecked[3], 4), -1);

    expect(someChecked.indexOf(noneChecked[0], 0), -1);
    expect(noneChecked.indexOf(someChecked[0], 0), -1);
    expect(someChecked.indexOf(noneChecked[1], 0), -1);
    expect(noneChecked.indexOf(someChecked[1], 0), -1);

    root.remove();
  });
  test('LastIndexOf', () {
    Element root = insertTestDiv();

    List<Element> someChecked =
        document.querySelector('#someChecked')!.children;

    List<Element> noneChecked =
        document.querySelector('#noneChecked')!.children;

    expect(someChecked.length, 4);
    expect(noneChecked.length, 4);

    expect(someChecked.lastIndexOf(someChecked[0], 3), 0);
    expect(someChecked.lastIndexOf(someChecked[1], 3), 1);
    expect(someChecked.lastIndexOf(someChecked[2], 3), 2);
    expect(someChecked.lastIndexOf(someChecked[3], 3), 3);

    expect(someChecked.lastIndexOf(someChecked[0], -1), -1);
    expect(someChecked.lastIndexOf(someChecked[1], 0), -1);
    expect(someChecked.lastIndexOf(someChecked[2], 1), -1);
    expect(someChecked.lastIndexOf(someChecked[3], 2), -1);

    expect(someChecked.lastIndexOf(noneChecked[0], 3), -1);
    expect(noneChecked.lastIndexOf(someChecked[0], 3), -1);
    expect(someChecked.lastIndexOf(noneChecked[1], 3), -1);
    expect(noneChecked.lastIndexOf(someChecked[1], 3), -1);

    root.remove();
  });
}
