/*
 * 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 bool operator ==(other)
 * A Point is only equal to another Point with the same coordinates.
 * This point is equal to other if, and only if, other is a Point with x equal
 * to other.x and y equal to other.y.
 * @description Checks that Point with a coordinate equal to NaN is not equal
 * to itself.
 * @author kaigorodov
 */
import "dart:math";
import "../../../Utils/expect.dart";

main() {
  Point point = new Point(0, double.nan);
  Expect.isFalse(point == point);
  point = new Point(double.nan, 0);
  Expect.isFalse(point == point);
  point = new Point(double.nan, double.nan);
  Expect.isFalse(point == point);
}
