| // Copyright (c) 2011, 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. |
| |
| import "package:expect/expect.dart"; |
| |
| // Dart test program for testing NaN and Infinity. |
| |
| void main() { |
| // Sanity tests. |
| Expect.isFalse(1.5.isNaN); |
| Expect.isFalse(1.5.isInfinite); |
| Expect.isTrue(1.5.isFinite); |
| Expect.isFalse(1.5.isNegative); |
| Expect.isTrue((-1.5).isNegative); |
| Expect.isFalse(0.0.isNegative); |
| Expect.isTrue((-0.0).isNegative); |
| Expect.isTrue((-0.0).isFinite); |
| |
| Expect.isFalse(1.isNaN); |
| Expect.isFalse(1.isInfinite); |
| Expect.isTrue(1.isFinite); |
| Expect.isFalse(1.isNegative); |
| Expect.isTrue((-1).isNegative); |
| |
| // Test that predicates give the correct result. |
| Expect.isTrue(double.nan.isNaN); |
| Expect.isFalse(double.nan.isInfinite); |
| Expect.isFalse(double.nan.isFinite); |
| Expect.isFalse(double.nan.isNegative); |
| Expect.isFalse((-double.nan).isNegative); |
| |
| Expect.isFalse(double.infinity.isNaN); |
| Expect.isTrue(double.infinity.isInfinite); |
| Expect.isFalse(double.infinity.isFinite); |
| Expect.isFalse(double.infinity.isNegative); |
| Expect.isTrue((-double.infinity).isNegative); |
| |
| Expect.isFalse(double.negativeInfinity.isNaN); |
| Expect.isTrue(double.negativeInfinity.isInfinite); |
| Expect.isFalse(double.negativeInfinity.isFinite); |
| Expect.isTrue(double.negativeInfinity.isNegative); |
| Expect.isFalse((-double.negativeInfinity).isNegative); |
| |
| // Test toString. |
| Expect.equals("NaN", double.nan.toString()); |
| Expect.equals("Infinity", double.infinity.toString()); |
| Expect.equals("-Infinity", double.negativeInfinity.toString()); |
| |
| // Test identities. |
| Expect.isTrue(identical(double.nan, double.nan)); // //# 01: ok |
| Expect.isTrue(identical(double.infinity, double.infinity)); |
| Expect.isTrue(identical(double.negativeInfinity, double.negativeInfinity)); |
| Expect.isFalse(identical(double.nan, double.infinity)); |
| Expect.isFalse(identical(double.nan, double.negativeInfinity)); |
| Expect.isFalse(identical(double.infinity, double.negativeInfinity)); |
| Expect.isFalse(identical(double.nan, -double.nan)); |
| Expect.isTrue(identical(double.infinity, -double.negativeInfinity)); |
| Expect.isTrue(identical(double.negativeInfinity, -double.infinity)); |
| |
| // Test equalities |
| Expect.isTrue(double.infinity == double.infinity); |
| Expect.isTrue(double.negativeInfinity == double.negativeInfinity); |
| Expect.isFalse(double.infinity == double.negativeInfinity); |
| Expect.isFalse(double.negativeInfinity == double.infinity); |
| Expect.isFalse(double.nan == double.nan); |
| Expect.isFalse(double.nan == double.infinity); |
| Expect.isFalse(double.nan == double.negativeInfinity); |
| Expect.isFalse(double.infinity == double.nan); |
| Expect.isFalse(double.negativeInfinity == double.nan); |
| |
| // Test relational order. |
| Expect.isFalse(double.nan < double.nan); |
| Expect.isFalse(double.nan < double.infinity); |
| Expect.isFalse(double.nan < double.negativeInfinity); |
| Expect.isFalse(double.nan > double.nan); |
| Expect.isFalse(double.nan > double.infinity); |
| Expect.isFalse(double.nan > double.negativeInfinity); |
| Expect.isFalse(double.infinity < double.nan); |
| Expect.isFalse(double.negativeInfinity < double.nan); |
| Expect.isFalse(double.infinity > double.nan); |
| Expect.isFalse(double.negativeInfinity > double.nan); |
| Expect.isTrue(double.infinity > double.negativeInfinity); |
| Expect.isFalse(double.infinity < double.negativeInfinity); |
| |
| // NaN is contagious. |
| Expect.isTrue((3.0 * double.nan).isNaN); |
| Expect.isTrue((3.0 + double.nan).isNaN); |
| Expect.isTrue((-double.nan).isNaN); |
| } |