diff options
Diffstat (limited to 'deps/v8/test/mjsunit/asm/math-abs.js')
-rw-r--r-- | deps/v8/test/mjsunit/asm/math-abs.js | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/asm/math-abs.js b/deps/v8/test/mjsunit/asm/math-abs.js new file mode 100644 index 0000000000..6387749e03 --- /dev/null +++ b/deps/v8/test/mjsunit/asm/math-abs.js @@ -0,0 +1,84 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +function Module(stdlib) { + "use asm"; + + var abs = stdlib.Math.abs; + + // f: double -> double + function f(a) { + a = +a; + return +abs(a); + } + + // g: unsigned -> double + function g(a) { + a = a>>>0; + return +abs(a); + } + + // h: signed -> double + function h(a) { + a = a|0; + return +abs(a); + } + + return { f: f, g: g, h: h }; +} + +var m = Module({ Math: Math }); +var f = m.f; +var g = m.g; +var h = m.h; + +assertTrue(isNaN(f(NaN))); +assertTrue(isNaN(f(undefined))); +assertTrue(isNaN(f(function() {}))); + +assertEquals("Infinity", String(1/f(0))); +assertEquals("Infinity", String(1/f(-0))); +assertEquals("Infinity", String(f(Infinity))); +assertEquals("Infinity", String(f(-Infinity))); + +assertEquals(0, f(0)); +assertEquals(0.1, f(0.1)); +assertEquals(0.5, f(0.5)); +assertEquals(0.1, f(-0.1)); +assertEquals(0.5, f(-0.5)); +assertEquals(1, f(1)); +assertEquals(1.1, f(1.1)); +assertEquals(1.5, f(1.5)); +assertEquals(1, f(-1)); +assertEquals(1.1, f(-1.1)); +assertEquals(1.5, f(-1.5)); + +assertEquals(0, g(0)); +assertEquals(0, g(0.1)); +assertEquals(0, g(0.5)); +assertEquals(0, g(-0.1)); +assertEquals(0, g(-0.5)); +assertEquals(1, g(1)); +assertEquals(1, g(1.1)); +assertEquals(1, g(1.5)); +assertEquals(4294967295, g(-1)); +assertEquals(4294967295, g(-1.1)); +assertEquals(4294967295, g(-1.5)); + +assertEquals(0, h(0)); +assertEquals(0, h(0.1)); +assertEquals(0, h(0.5)); +assertEquals(0, h(-0.1)); +assertEquals(0, h(-0.5)); +assertEquals(1, h(1)); +assertEquals(1, h(1.1)); +assertEquals(1, h(1.5)); +assertEquals(1, h(-1)); +assertEquals(1, h(-1.1)); +assertEquals(1, h(-1.5)); + +assertEquals(Number.MIN_VALUE, f(Number.MIN_VALUE)); +assertEquals(Number.MIN_VALUE, f(-Number.MIN_VALUE)); +assertEquals(Number.MAX_VALUE, f(Number.MAX_VALUE)); +assertEquals(Number.MAX_VALUE, f(-Number.MAX_VALUE)); |