<!DOCTYPE html>
<sky>
<style>
  div { font-size: 5px; }
  .font-10 { font-size: 10px; }
  .font-12 { font-size: 12px; }
  .font-24 { font-size: 24px; }
</style>
<div id="sandbox"></div>
<script>
import "../resources/third_party/unittest/unittest.dart";
import "../resources/unit.dart";

import "dart:sky";

main() {
  initUnit();

  var sandbox = document.getElementById("sandbox");
  var target = null;

  setUp(() {
    target = document.createElement("div");
    sandbox.appendChild(target);
  });

  tearDown(() {
    target.remove();
  });

  // test("should add multiple classes", () {
  //   target.classList..add("first", "second", "third");
  //   expect(target.classList.toString(), equals("first second third"));
  // });

  test("should add classes in order", () {
    target.classList..add("first")
                    ..add("second");
    expect(target.classList.toString(), equals("first second"));
  });

  test("should remove classes", () {
    target.classList..add("first")
                    ..add("second")
                    ..add("third")
                    ..remove("second");
    expect(target.classList.toString(), equals("first third"));
  });

  // test("should remove multiple classes", () {
  //   target.classList.add("first", "second", "third");
  //   target.classList.remove("first", "third");
  //   expect(target.classList.toString(), equals("second"));
  // });

  test("should clear all classes", () {
    target.classList.add("first");
    target.classList.add("second");
    target.classList.clear();
    expect(target.classList.toString(), equals(""));
    expect(target.hasAttribute("class"), isFalse);
  });

  test("should check for classes", () {
    target.classList..add("first")
                    ..add("second")
                    ..add("third");
    expect(target.classList.contains("first"), isTrue);
    expect(target.classList.contains("second"), isTrue);
    expect(target.classList.contains("third"), isTrue);
    target.classList.remove("second");
    expect(target.classList.contains("first"), isTrue);
    expect(target.classList.contains("second"), isFalse);
    expect(target.classList.contains("third"), isTrue);
  });

  test("should get classes by index", () {
    target.classList..add("first")
                    ..add("second")
                    ..add("third");
    // expect(target.classList[0], equals("first"));
    // expect(target.classList[1], equals("second"));
    // expect(target.classList[2], equals("third"));
    expect(target.classList.item(0), equals("first"));
    expect(target.classList.item(1), equals("second"));
    expect(target.classList.item(2), equals("third"));
  });

  test("should toggle classes", () {
    target.classList..add("first")
                    ..add("second");
    expect(target.classList.toggle("first"), isFalse);
    expect(target.classList.toString(), equals("second"));
    expect(target.classList.toggle("first"), isTrue);
    expect(target.classList.toString(), equals("second first"));
    // expect(target.classList.toggle("second", true), isTrue);
    // expect(target.classList.toString(), equals("second first"));
    // expect(target.classList.toggle("second", true), isTrue);
    // expect(target.classList.toggle("second", false), isFalse);
    // expect(target.classList.toggle("second", false), isFalse);
    // expect(target.classList.toString(), equals("first"));
  });

  test("should dynamically update style", () {
    expect(window.getComputedStyle(target)["font-size"],
           equals("5px"));
    target.classList.add("font-10");
    target.classList.add("font-12");
    expect(window.getComputedStyle(target)["font-size"],
           equals("12px"));
    target.classList.add("font-24");
    expect(window.getComputedStyle(target)["font-size"],
           equals("24px"));
    target.classList.remove("font-12");
    expect(window.getComputedStyle(target)["font-size"],
           equals("24px"));
    target.classList.remove("font-24");
    expect(window.getComputedStyle(target)["font-size"],
           equals("10px"));
    target.classList.remove("font-10");
    expect(window.getComputedStyle(target)["font-size"],
           equals("5px"));
  });
}
</script>
</sky>
