// 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 EventTarget get target
 * A reference to the target to which the event was originally dispatched.
 * @description Checks expected target during different phases.
 */
import "dart:html";
import "../../../Utils/expect.dart";

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

    Element.clickEvent.forElement(body, useCapture: true).listen((e) {
      Expect.identical(div, e.target);
      asyncEnd();
    });

    Element.clickEvent.forElement(body).listen((e) {
      Expect.identical(div, e.target);
      asyncEnd();
    });

    Element.clickEvent.forElement(div).listen((e) {
      Expect.identical(div, e.target);
      asyncEnd();
    });

    asyncMultiStart(3);
    div.dispatchEvent(new MouseEvent('click'));
  } else {
    Expect.fail("Body is null");
  }
}
