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