// Copyright (c) 2017, 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 T y
 * @description Checks that [y] returns the y coordinate of this point.
 * @author ngl@unipro.ru
 */
import "dart:math";
import "../../../Utils/expect.dart";

main() {
  var p = new Point(3.0, 5.0);
  Expect.equals(5, p.y);
  p = new Point(3.0, 4.5);
  Expect.equals(4.5, p.y);
  p = new Point(3.0, double.infinity);
  Expect.equals(double.infinity, p.y);
  p = new Point(3.0, double.negativeInfinity);
  Expect.equals(double.negativeInfinity, p.y);
  p = new Point(3.0, double.minPositive);
  Expect.equals(double.minPositive, p.y);
  p = new Point(3.0, -double.minPositive);
  Expect.equals(-double.minPositive, p.y);
  p = new Point(3.0, double.maxFinite);
  Expect.equals(double.maxFinite, p.y);
  p = new Point(3.0, -double.maxFinite);
  Expect.equals(-double.maxFinite, p.y);
  p = new Point(3.0, double.nan);
  Expect.notEquals(double.nan, p.y);
}
