#library('ElementListTest');
#import('../../pkg/unittest/unittest.dart');
#import('../../pkg/unittest/html_config.dart');
#import('dart:html');

// 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.nodes.add(element);
    return element;
  }

  useHtmlConfiguration();

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

    List<Element> eachChecked =
        document.query('#allChecked').elements;

    expect(eachChecked, isList);

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

    List<Element> eachChecked =
        document.query('#allChecked').elements;

    List<Element> someChecked =
        document.query('#someChecked').elements;

    List<Element> noneChecked =
        document.query('#noneChecked').elements;

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

    expect(eachChecked.every((x) => x.checked), isTrue);
    expect(eachChecked.every((x) => !x.checked), isFalse);
    expect(someChecked.every((x) => x.checked), isFalse);
    expect(someChecked.every((x) => !x.checked), isFalse);
    expect(noneChecked.every((x) => x.checked), isFalse);
    expect(noneChecked.every((x) => !x.checked), isTrue);

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

    List<Element> eachChecked =
        document.query('#allChecked').elements;

    List<Element> someChecked =
        document.query('#someChecked').elements;

    List<Element> noneChecked =
        document.query('#noneChecked').elements;

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

    expect(eachChecked.some((x) => x.checked), isTrue);
    expect(eachChecked.some((x) => !x.checked), isFalse);
    expect(someChecked.some((x) => x.checked), isTrue);
    expect(someChecked.some((x) => !x.checked), isTrue);
    expect(noneChecked.some((x) => x.checked), isFalse);
    expect(noneChecked.some((x) => !x.checked), isTrue);

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

    List<Element> eachChecked =
        document.query('#allChecked').elements;

    List<Element> someChecked =
        document.query('#someChecked').elements;

    List<Element> noneChecked =
        document.query('#noneChecked').elements;

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

    expect(eachChecked.filter((x) => x.checked).length, 4);
    expect(eachChecked.filter((x) => !x.checked).length, 0);
    expect(someChecked.filter((x) => x.checked).length, 2);
    expect(someChecked.filter((x) => !x.checked).length, 2);
    expect(noneChecked.filter((x) => x.checked).length, 0);
    expect(noneChecked.filter((x) => !x.checked).length, 4);

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

    List<Element> someChecked =
        document.query('#someChecked').elements;

    List<Element> emptyDiv =
        document.query('#emptyDiv').elements;

    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.query('#allChecked').elements;

    List<Element> someChecked =
        document.query('#someChecked').elements;

    List<Element> noneChecked =
        document.query('#noneChecked').elements;

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

    expect(countWithForEach(eachChecked, (x) => x.checked), 4);
    expect(countWithForEach(eachChecked, (x) => !x.checked), 0);
    expect(countWithForEach(someChecked, (x) => x.checked), 2);
    expect(countWithForEach(someChecked, (x) => !x.checked), 2);
    expect(countWithForEach(noneChecked, (x) => x.checked), 0);
    expect(countWithForEach(noneChecked, (x) => !x.checked), 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.query('#allChecked').elements;

    List<Element> someChecked =
        document.query('#someChecked').elements;

    List<Element> noneChecked =
        document.query('#noneChecked').elements;

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

    expect(countWithForLoop(eachChecked, (x) => x.checked), 4);
    expect(countWithForLoop(eachChecked, (x) => !x.checked), 0);
    expect(countWithForLoop(someChecked, (x) => x.checked), 2);
    expect(countWithForLoop(someChecked, (x) => !x.checked), 2);
    expect(countWithForLoop(noneChecked, (x) => x.checked), 0);
    expect(countWithForLoop(noneChecked, (x) => !x.checked), 4);

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

    List<Element> someChecked =
        document.query('#someChecked').elements;

    expect(someChecked.length, 4);

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

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

    List<Element> someChecked =
        document.query('#someChecked').elements;

    List<Element> noneChecked =
        document.query('#noneChecked').elements;

    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.query('#someChecked').elements;

    List<Element> noneChecked =
        document.query('#noneChecked').elements;

    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();
  });
}
