From d6eb13b4b5c3702fb1ebb4828d375c47d61c9c32 Mon Sep 17 00:00:00 2001 From: Leonardo Balter <leonardo.balter@gmail.com> Date: Wed, 22 Jun 2016 18:35:41 -0400 Subject: [PATCH] Expand tests for Math.clz32 --- test/built-ins/Math/clz32/Math.clz32.js | 1 + test/built-ins/Math/clz32/infinity.js | 24 +++++++++++++ test/built-ins/Math/clz32/int32bit.js | 48 +++++++++++++++++++++++++ test/built-ins/Math/clz32/nan.js | 23 ++++++++++++ 4 files changed, 96 insertions(+) create mode 100644 test/built-ins/Math/clz32/infinity.js create mode 100644 test/built-ins/Math/clz32/int32bit.js create mode 100644 test/built-ins/Math/clz32/nan.js diff --git a/test/built-ins/Math/clz32/Math.clz32.js b/test/built-ins/Math/clz32/Math.clz32.js index f30b3a995b..1d800d6a65 100644 --- a/test/built-ins/Math/clz32/Math.clz32.js +++ b/test/built-ins/Math/clz32/Math.clz32.js @@ -8,3 +8,4 @@ description: Math.clz32 should return 32 if passed 0. ---*/ assert.sameValue(Math.clz32(0), 32, 'Math.clz32(0)'); +assert.sameValue(Math.clz32(-0), 32, 'Math.clz32(-0)'); diff --git a/test/built-ins/Math/clz32/infinity.js b/test/built-ins/Math/clz32/infinity.js new file mode 100644 index 0000000000..94b17745c1 --- /dev/null +++ b/test/built-ins/Math/clz32/infinity.js @@ -0,0 +1,24 @@ +// Copyright (C) 2016 The V8 Project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 20.2.2.11 +esid: sec-math.clz32 +description: > + Return 32 if x is Infinity or -Infinity +info: | + Math.clz32 ( x ) + + 1. Let n be ToUint32(x). + 2. Let p be the number of leading zero bits in the 32-bit binary representation of n. + 3. Return p. + + 7.1.6 ToUint32 ( argument ) + + [...] + 2. If number is NaN, +0, -0, +∞, or -∞, return +0. + [...] +---*/ + +assert.sameValue(Math.clz32(Infinity), 32, "Infinity"); +assert.sameValue(Math.clz32(-Infinity), 32, "-Infinity"); diff --git a/test/built-ins/Math/clz32/int32bit.js b/test/built-ins/Math/clz32/int32bit.js new file mode 100644 index 0000000000..c5f9489531 --- /dev/null +++ b/test/built-ins/Math/clz32/int32bit.js @@ -0,0 +1,48 @@ +// Copyright (C) 2016 The V8 Project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 20.2.2.11 +esid: sec-math.clz32 +description: > + Catches the int32bit value in the ToUint32 operation +info: | + Math.clz32 ( x ) + + 1. Let n be ToUint32(x). + 2. Let p be the number of leading zero bits in the 32-bit binary representation of n. + 3. Return p. + + 7.1.6 ToUint32 ( argument ) + + [...] + 3. Let int be the mathematical value that is the same sign as number and whose + magnitude is floor(abs(number)). + 4. Let int32bit be int modulo 232. + 5. Return int32bit. + [...] +---*/ + +assert.sameValue(Math.clz32(4294967295), 0, "2**32-1"); +assert.sameValue(Math.clz32(4294967296), 32, "2**32"); +assert.sameValue(Math.clz32(4294967297), 31, "2**32+1"); + +assert.sameValue(Math.clz32(65535), 16, "2**16-1"); +assert.sameValue(Math.clz32(65536), 15, "2**16"); +assert.sameValue(Math.clz32(65537), 15, "2**16+1"); + +assert.sameValue(Math.clz32(255), 24, "2**8-1"); +assert.sameValue(Math.clz32(256), 23, "2**8"); +assert.sameValue(Math.clz32(257), 23, "2**8+1"); + +assert.sameValue(Math.clz32(-4294967295), 31, "-(2**32-1)"); +assert.sameValue(Math.clz32(-4294967296), 32, "-(2**32)"); +assert.sameValue(Math.clz32(-4294967297), 0, "-(2**32+1)"); + +assert.sameValue(Math.clz32(-65535), 0, "-(2**16-1)"); +assert.sameValue(Math.clz32(-65536), 0, "-(2**16)"); +assert.sameValue(Math.clz32(-65537), 0, "-(2**16+1)"); + +assert.sameValue(Math.clz32(-255), 0, "-(2**8-1)"); +assert.sameValue(Math.clz32(-256), 0, "-(2**8)"); +assert.sameValue(Math.clz32(-257), 0, "-(2**8+1)"); diff --git a/test/built-ins/Math/clz32/nan.js b/test/built-ins/Math/clz32/nan.js new file mode 100644 index 0000000000..cd8a9c98f2 --- /dev/null +++ b/test/built-ins/Math/clz32/nan.js @@ -0,0 +1,23 @@ +// Copyright (C) 2016 The V8 Project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 20.2.2.11 +esid: sec-math.clz32 +description: > + Return 32 if x is NaN +info: | + Math.clz32 ( x ) + + 1. Let n be ToUint32(x). + 2. Let p be the number of leading zero bits in the 32-bit binary representation of n. + 3. Return p. + + 7.1.6 ToUint32 ( argument ) + + [...] + 2. If number is NaN, +0, -0, +∞, or -∞, return +0. + [...] +---*/ + +assert.sameValue(Math.clz32(NaN), 32); -- GitLab