<script>
import "../resources/third_party/unittest/unittest.dart";
import "../resources/unit.dart";

import "dart:sky";

class MyEvent extends Event {
  MyEvent() : super("awesome", bubbles: true);

  bool get isCustom => true;
}

void main() {
  initUnit();

  test("should be able to dispatch", () {
    var event = new MyEvent();
    expect(event.isCustom, isTrue);
    expect(event.type, equals("awesome"));
    expect(event.bubbles, isTrue);
    expect(event.cancelable, isFalse);
    expect(event.isCustom, isTrue);

    bool gotEvent = false;
    var element = document.createElement("div");
    element.addEventListener("awesome", (e) {
      expect(e, equals(event));
      expect(event.isCustom, isTrue);
      gotEvent = true;
    });
    element.dispatchEvent(event);
    expect(gotEvent, isTrue);
  });
}
</script>
