| function testMathMaxMin(aFun) { |
| var test_error = { name: "test" }; |
| test(function() { |
| assert_throws(test_error, function() { |
| Math[aFun](NaN, { |
| valueOf: function() { |
| throw test_error; |
| } |
| }); |
| }); |
| }, "ToNumber should be called on all arguments: NaN."); |
| test(function() { |
| assert_throws(test_error, function() { |
| Math[aFun](-Infinity, { |
| valueOf: function() { |
| throw test_error; |
| } |
| }); |
| }); |
| }, "ToNumber should be called on all arguments: -Infinity."); |
| test(function() { |
| assert_throws(test_error, function() { |
| Math[aFun](Infinity, { |
| valueOf: function() { |
| throw test_error; |
| } |
| }); |
| }); |
| }, "ToNumber should be called on all arguments: Infinity."); |
| test(function() { |
| assert_throws(test_error, function() { |
| Math[aFun]({ |
| valueOf: function() { |
| throw test_error; |
| } |
| }, |
| { |
| valueOf: function() { |
| throw 7; |
| } |
| }); |
| }); |
| }, "ToNumber should be called left to right."); |
| test(function() { |
| assert_equals(Math[aFun]("1"), 1); |
| }, "Should return a number."); |
| test(function() { |
| var expected = { |
| "max": 0, |
| "min": -0 |
| } |
| assert_equals(Math[aFun](0, -0), expected[aFun]); |
| assert_equals(Math[aFun](-0, 0), expected[aFun]); |
| assert_equals(Math[aFun](0, 0), 0); |
| assert_equals(Math[aFun](-0, -0), -0); |
| }, "Should handle negative zero correctly."); |
| } |