// Copyright (c) 2014, 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.

/// @assertion Event(String type, {bool canBubble: true, bool cancelable: true})
/// @description Checks that event of custom type can be constructed and that
/// canBubble and cancelable are true by default.

import "dart:html";
import "../../../Utils/expect.dart";

main() {
  var ev = new Event('whatever');
  var body = document.body;
  if (body != null) {
    var div = new DivElement();
    body.append(div);

    asyncStart();
    // wait for bubbling
    body.on['whatever'].listen((e) {
      Expect.isTrue(e.cancelable);
      asyncEnd();
    });

    div.dispatchEvent(ev); // initiate on inner div
  } else {
    Expect.fail("Body is null");
  }
}
