| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 // We temporarily test both the new math library and the old Math | 5 // We temporarily test both the new math library and the old Math |
| 6 // class. This can easily be simplified once we get rid of the Math | 6 // class. This can easily be simplified once we get rid of the Math |
| 7 // class entirely. | 7 // class entirely. |
| 8 library math_test; | 8 library math_test; |
| 9 |
| 9 import "package:expect/expect.dart"; | 10 import "package:expect/expect.dart"; |
| 10 import 'dart:math' as math; | 11 import 'dart:math' as math; |
| 11 | 12 |
| 12 class MathLibraryTest { | 13 class MathLibraryTest { |
| 13 static void testConstants() { | 14 static void testConstants() { |
| 14 // Source for mathematical constants is Wolfram Alpha. | 15 // Source for mathematical constants is Wolfram Alpha. |
| 15 Expect.equals(2.7182818284590452353602874713526624977572470936999595749669, | 16 Expect.equals( |
| 16 math.E); | 17 2.7182818284590452353602874713526624977572470936999595749669, math.E); |
| 17 Expect.equals(2.3025850929940456840179914546843642076011014886287729760333, | 18 Expect.equals(2.3025850929940456840179914546843642076011014886287729760333, |
| 18 math.LN10); | 19 math.LN10); |
| 19 Expect.equals(0.6931471805599453094172321214581765680755001343602552541206, | 20 Expect.equals( |
| 20 math.LN2); | 21 0.6931471805599453094172321214581765680755001343602552541206, math.LN2); |
| 21 Expect.equals(1.4426950408889634073599246810018921374266459541529859341354, | 22 Expect.equals(1.4426950408889634073599246810018921374266459541529859341354, |
| 22 math.LOG2E); | 23 math.LOG2E); |
| 23 Expect.equals(0.4342944819032518276511289189166050822943970058036665661144, | 24 Expect.equals(0.4342944819032518276511289189166050822943970058036665661144, |
| 24 math.LOG10E); | 25 math.LOG10E); |
| 25 Expect.equals(3.1415926535897932384626433832795028841971693993751058209749, | 26 Expect.equals( |
| 26 math.PI); | 27 3.1415926535897932384626433832795028841971693993751058209749, math.PI); |
| 27 Expect.equals(0.7071067811865475244008443621048490392848359376884740365883, | 28 Expect.equals(0.7071067811865475244008443621048490392848359376884740365883, |
| 28 math.SQRT1_2); | 29 math.SQRT1_2); |
| 29 Expect.equals(1.4142135623730950488016887242096980785696718753769480731766, | 30 Expect.equals(1.4142135623730950488016887242096980785696718753769480731766, |
| 30 math.SQRT2); | 31 math.SQRT2); |
| 31 } | 32 } |
| 32 | 33 |
| 33 static checkClose(double a, double b, EPSILON) { | 34 static checkClose(double a, double b, EPSILON) { |
| 34 Expect.equals(true, a - EPSILON <= b); | 35 Expect.equals(true, a - EPSILON <= b); |
| 35 Expect.equals(true, b <= a + EPSILON); | 36 Expect.equals(true, b <= a + EPSILON); |
| 36 } | 37 } |
| 37 | 38 |
| 38 static void testSin() { | 39 static void testSin() { |
| 39 // Given the imprecision of PI we can't expect better results than this. | 40 // Given the imprecision of PI we can't expect better results than this. |
| 40 final double EPSILON = 1e-15; | 41 final double EPSILON = 1e-15; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 65 } | 66 } |
| 66 | 67 |
| 67 static void testAsin() { | 68 static void testAsin() { |
| 68 // Given the imprecision of PI we can't expect better results than this. | 69 // Given the imprecision of PI we can't expect better results than this. |
| 69 final double EPSILON = 1e-15; | 70 final double EPSILON = 1e-15; |
| 70 checkClose(0.0, math.asin(0.0), EPSILON); | 71 checkClose(0.0, math.asin(0.0), EPSILON); |
| 71 checkClose(math.PI / 2.0, math.asin(1.0), EPSILON); | 72 checkClose(math.PI / 2.0, math.asin(1.0), EPSILON); |
| 72 checkClose(-math.PI / 2.0, math.asin(-1.0), EPSILON); | 73 checkClose(-math.PI / 2.0, math.asin(-1.0), EPSILON); |
| 73 } | 74 } |
| 74 | 75 |
| 75 | |
| 76 static void testAcos() { | 76 static void testAcos() { |
| 77 // Given the imprecision of PI we can't expect better results than this. | 77 // Given the imprecision of PI we can't expect better results than this. |
| 78 final double EPSILON = 1e-15; | 78 final double EPSILON = 1e-15; |
| 79 checkClose(0.0, math.acos(1.0), EPSILON); | 79 checkClose(0.0, math.acos(1.0), EPSILON); |
| 80 checkClose(math.PI, math.acos(-1.0), EPSILON); | 80 checkClose(math.PI, math.acos(-1.0), EPSILON); |
| 81 checkClose(math.PI / 2.0, math.acos(0.0), EPSILON); | 81 checkClose(math.PI / 2.0, math.acos(0.0), EPSILON); |
| 82 } | 82 } |
| 83 | 83 |
| 84 static void testAtan() { | 84 static void testAtan() { |
| 85 // Given the imprecision of PI we can't expect better results than this. | 85 // Given the imprecision of PI we can't expect better results than this. |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 Expect.equals(true, limitLow <= b); | 124 Expect.equals(true, limitLow <= b); |
| 125 Expect.equals(true, b <= limitHigh); | 125 Expect.equals(true, b <= limitHigh); |
| 126 } | 126 } |
| 127 | 127 |
| 128 static void testSqrt() { | 128 static void testSqrt() { |
| 129 checkVeryClose(2.0, math.sqrt(4.0)); | 129 checkVeryClose(2.0, math.sqrt(4.0)); |
| 130 checkVeryClose(math.SQRT2, math.sqrt(2.0)); | 130 checkVeryClose(math.SQRT2, math.sqrt(2.0)); |
| 131 checkVeryClose(math.SQRT1_2, math.sqrt(0.5)); | 131 checkVeryClose(math.SQRT1_2, math.sqrt(0.5)); |
| 132 checkVeryClose(1e50, math.sqrt(1e100)); | 132 checkVeryClose(1e50, math.sqrt(1e100)); |
| 133 checkVeryClose(1.1111111061110855443054405046358901279277111935183977e56, | 133 checkVeryClose(1.1111111061110855443054405046358901279277111935183977e56, |
| 134 math.sqrt(12345678901234e99)); | 134 math.sqrt(12345678901234e99)); |
| 135 } | 135 } |
| 136 | 136 |
| 137 static void testExp() { | 137 static void testExp() { |
| 138 checkVeryClose(math.E, math.exp(1.0)); | 138 checkVeryClose(math.E, math.exp(1.0)); |
| 139 final EPSILON = 1e-15; | 139 final EPSILON = 1e-15; |
| 140 checkClose(10.0, math.exp(math.LN10), EPSILON); | 140 checkClose(10.0, math.exp(math.LN10), EPSILON); |
| 141 checkClose(2.0, math.exp(math.LN2), EPSILON); | 141 checkClose(2.0, math.exp(math.LN2), EPSILON); |
| 142 } | 142 } |
| 143 | 143 |
| 144 static void testLog() { | 144 static void testLog() { |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 256 testLog(); | 256 testLog(); |
| 257 testExp(); | 257 testExp(); |
| 258 testPow(); | 258 testPow(); |
| 259 testParseInt(); | 259 testParseInt(); |
| 260 } | 260 } |
| 261 } | 261 } |
| 262 | 262 |
| 263 main() { | 263 main() { |
| 264 MathLibraryTest.testMain(); | 264 MathLibraryTest.testMain(); |
| 265 } | 265 } |
| OLD | NEW |