| Index: test/mjsunit/es6/math-trunc.js
|
| diff --git a/test/mjsunit/es6/math-trunc.js b/test/mjsunit/es6/math-trunc.js
|
| index 9231576ddaa155ae190d23d2880f0e899073354e..c925b5b36396b1a75e0ab39971ed077f793a80b2 100644
|
| --- a/test/mjsunit/es6/math-trunc.js
|
| +++ b/test/mjsunit/es6/math-trunc.js
|
| @@ -25,25 +25,78 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| -assertEquals("Infinity", String(1/Math.trunc(0)));
|
| -assertEquals("-Infinity", String(1/Math.trunc(-0)));
|
| -assertEquals("Infinity", String(1/Math.trunc(Math.PI/4)));
|
| -assertEquals("-Infinity", String(1/Math.trunc(-Math.sqrt(2)/2)));
|
| -assertEquals(100, Math.trunc(100));
|
| -assertEquals(-199, Math.trunc(-199));
|
| -assertEquals(100, Math.trunc(100.1));
|
| -assertTrue(isNaN(Math.trunc("abc")));
|
| -assertTrue(isNaN(Math.trunc({})));
|
| -assertEquals(0, Math.trunc([]));
|
| -assertEquals(1, Math.trunc([1]));
|
| -assertEquals(-100, Math.trunc([-100.1]));
|
| -assertTrue(isNaN(Math.trunc([1, 1])));
|
| -assertEquals(-100, Math.trunc({ toString: function() { return "-100.3"; } }));
|
| -assertEquals(10, Math.trunc({ toString: function() { return 10.1; } }));
|
| -assertEquals(-1, Math.trunc({ valueOf: function() { return -1.1; } }));
|
| -assertEquals("-Infinity",
|
| - String(1/Math.trunc({ valueOf: function() { return "-0.1"; } })));
|
| -assertEquals("-Infinity", String(Math.trunc(-Infinity)));
|
| -assertEquals("Infinity", String(Math.trunc(Infinity)));
|
| -assertEquals("-Infinity", String(Math.trunc("-Infinity")));
|
| -assertEquals("Infinity", String(Math.trunc("Infinity")));
|
| +// Flags: --allow-natives-syntax
|
| +
|
| +var test_id = 0;
|
| +
|
| +function testTrunc(expected, input) {
|
| + var test = new Function('n',
|
| + '"' + (test_id++) + '";return Math.trunc(n)');
|
| + assertEquals(expected, test(input));
|
| + assertEquals(expected, test(input));
|
| + assertEquals(expected, test(input));
|
| + %OptimizeFunctionOnNextCall(test);
|
| + assertEquals(expected, test(input));
|
| +
|
| + var test_double_input = new Function(
|
| + 'n',
|
| + '"' + (test_id++) + '";return Math.trunc(+n)');
|
| + assertEquals(expected, test_double_input(input));
|
| + assertEquals(expected, test_double_input(input));
|
| + assertEquals(expected, test_double_input(input));
|
| + %OptimizeFunctionOnNextCall(test_double_input);
|
| + assertEquals(expected, test_double_input(input));
|
| +
|
| + var test_double_output = new Function(
|
| + 'n',
|
| + '"' + (test_id++) + '";return Math.trunc(n) + -0.0');
|
| + assertEquals(expected, test_double_output(input));
|
| + assertEquals(expected, test_double_output(input));
|
| + assertEquals(expected, test_double_output(input));
|
| + %OptimizeFunctionOnNextCall(test_double_output);
|
| + assertEquals(expected, test_double_output(input));
|
| +}
|
| +
|
| +function test() {
|
| + // Ensure that a negative zero coming from Math.trunc is properly handled
|
| + // by other operations.
|
| + function itrunc(x) {
|
| + return 1 / Math.trunc(x);
|
| + }
|
| + assertEquals(Infinity, itrunc(0));
|
| + assertEquals(-Infinity, itrunc(-0));
|
| + assertEquals(Infinity, itrunc(Math.PI / 4));
|
| + assertEquals(-Infinity, itrunc(-Math.sqrt(2) / 2));
|
| + assertEquals(-Infinity, itrunc({valueOf: function() { return "-0.1"; }}));
|
| + %OptimizeFunctionOnNextCall(itrunc);
|
| +
|
| + testTrunc(100, 100);
|
| + testTrunc(-199, -199);
|
| + testTrunc(100, 100.1);
|
| + testTrunc(4503599627370495.0, 4503599627370495.0);
|
| + testTrunc(4503599627370496.0, 4503599627370496.0);
|
| + testTrunc(-4503599627370495.0, -4503599627370495.0);
|
| + testTrunc(-4503599627370496.0, -4503599627370496.0);
|
| + testTrunc(9007199254740991.0, 9007199254740991.0);
|
| + testTrunc(-9007199254740991.0, -9007199254740991.0);
|
| + testTrunc(0, []);
|
| + testTrunc(1, [1]);
|
| + testTrunc(-100, [-100.1]);
|
| + testTrunc(-100, {toString: function() { return "-100.3"; }});
|
| + testTrunc(10, {toString: function() { return 10.1; }});
|
| + testTrunc(-1, {valueOf: function() { return -1.1; }});
|
| + testTrunc(-Infinity, -Infinity);
|
| + testTrunc(Infinity, Infinity);
|
| + testTrunc(-Infinity, "-Infinity");
|
| + testTrunc(Infinity, "Infinity");
|
| +
|
| + assertTrue(isNaN(Math.trunc("abc")));
|
| + assertTrue(isNaN(Math.trunc({})));
|
| + assertTrue(isNaN(Math.trunc([1, 1])));
|
| +}
|
| +
|
| +// Test in a loop to cover the custom IC and GC-related issues.
|
| +for (var i = 0; i < 10; i++) {
|
| + test();
|
| + new Array(i * 10000);
|
| +}
|
|
|