From c246bc7d09c728e1c5440320f235f05ebdc9ff87 Mon Sep 17 00:00:00 2001
From: Leonardo Balter <leonardo.balter@gmail.com>
Date: Mon, 20 Jun 2016 14:37:27 -0400
Subject: [PATCH] Add tests for Number.isInteger

---
 .../isInteger/Number.isInteger_NonNumber.js   | 12 ---------
 .../isInteger/Number.isInteger_String.js      | 12 ---------
 .../isInteger/Number.isInteger_Success.js     | 10 --------
 .../Number/isInteger/arg-is-not-number.js     | 25 +++++++++++++++++++
 ...mber.isInteger_Infinity.js => infinity.js} |  3 ++-
 test/built-ins/Number/isInteger/integers.js   | 17 +++++++++++++
 .../{Number.isInteger_NaN.js => nan.js}       |  0
 ...er.isInteger_Double.js => non-integers.js} |  5 +++-
 test/built-ins/Number/isInteger/prop-desc.js  | 20 +++++++++++++++
 9 files changed, 68 insertions(+), 36 deletions(-)
 delete mode 100644 test/built-ins/Number/isInteger/Number.isInteger_NonNumber.js
 delete mode 100644 test/built-ins/Number/isInteger/Number.isInteger_String.js
 delete mode 100644 test/built-ins/Number/isInteger/Number.isInteger_Success.js
 create mode 100644 test/built-ins/Number/isInteger/arg-is-not-number.js
 rename test/built-ins/Number/isInteger/{Number.isInteger_Infinity.js => infinity.js} (65%)
 create mode 100644 test/built-ins/Number/isInteger/integers.js
 rename test/built-ins/Number/isInteger/{Number.isInteger_NaN.js => nan.js} (100%)
 rename test/built-ins/Number/isInteger/{Number.isInteger_Double.js => non-integers.js} (50%)
 create mode 100644 test/built-ins/Number/isInteger/prop-desc.js

diff --git a/test/built-ins/Number/isInteger/Number.isInteger_NonNumber.js b/test/built-ins/Number/isInteger/Number.isInteger_NonNumber.js
deleted file mode 100644
index 382c52a4a2..0000000000
--- a/test/built-ins/Number/isInteger/Number.isInteger_NonNumber.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2014 Ryan Lewis. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es6id: 20.1.2.3
-author: Ryan Lewis
-description: >
-    Number.isInteger should return false if called with a string
-    (non-Number)
----*/
-
-assert.sameValue(Number.isInteger('2'), false, 'Number.isInteger("2")');
diff --git a/test/built-ins/Number/isInteger/Number.isInteger_String.js b/test/built-ins/Number/isInteger/Number.isInteger_String.js
deleted file mode 100644
index 71ddf854de..0000000000
--- a/test/built-ins/Number/isInteger/Number.isInteger_String.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2014 Ryan Lewis. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es6id: 20.1.2.3
-author: Ryan Lewis
-description: >
-    Number.isInteger should return false if called with a string
-    (non-Number)
----*/
-
-assert.sameValue(Number.isInteger('word'), false, 'Number.isInteger("word")');
diff --git a/test/built-ins/Number/isInteger/Number.isInteger_Success.js b/test/built-ins/Number/isInteger/Number.isInteger_Success.js
deleted file mode 100644
index d80454ef3d..0000000000
--- a/test/built-ins/Number/isInteger/Number.isInteger_Success.js
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2014 Ryan Lewis. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es6id: 20.1.2.3
-author: Ryan Lewis
-description: Number.isInteger should return true if called with an integer.
----*/
-
-assert.sameValue(Number.isInteger(478), true, 'Number.isInteger(478)');
diff --git a/test/built-ins/Number/isInteger/arg-is-not-number.js b/test/built-ins/Number/isInteger/arg-is-not-number.js
new file mode 100644
index 0000000000..81614c2396
--- /dev/null
+++ b/test/built-ins/Number/isInteger/arg-is-not-number.js
@@ -0,0 +1,25 @@
+// 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.1.2.3
+esid: sec-number.isinteger
+description: >
+  Return false if argument is not Number
+info: |
+  Number.isInteger ( number )
+
+  1. If Type(number) is not Number, return false.
+  [...]
+features: [Symbol]
+---*/
+
+assert.sameValue(Number.isInteger("1"), false, "string");
+assert.sameValue(Number.isInteger([1]), false, "[1]");
+assert.sameValue(Number.isInteger(new Number(42)), false, "Number object");
+assert.sameValue(Number.isInteger(false), false, "false");
+assert.sameValue(Number.isInteger(true), false, "true");
+assert.sameValue(Number.isInteger(undefined), false, "undefined");
+assert.sameValue(Number.isInteger(null), false, "null");
+assert.sameValue(Number.isInteger(Symbol("1")), false, "symbol");
+assert.sameValue(Number.isInteger(), false, "no arg");
diff --git a/test/built-ins/Number/isInteger/Number.isInteger_Infinity.js b/test/built-ins/Number/isInteger/infinity.js
similarity index 65%
rename from test/built-ins/Number/isInteger/Number.isInteger_Infinity.js
rename to test/built-ins/Number/isInteger/infinity.js
index 4eb3282371..0897e79a8e 100644
--- a/test/built-ins/Number/isInteger/Number.isInteger_Infinity.js
+++ b/test/built-ins/Number/isInteger/infinity.js
@@ -7,4 +7,5 @@ author: Ryan Lewis
 description: Number.isInteger should return false if called with Infinity.
 ---*/
 
-assert.sameValue(Number.isInteger(Infinity), false, 'Number.isInteger(Infinity)');
+assert.sameValue(Number.isInteger(Infinity), false, 'Infinity');
+assert.sameValue(Number.isInteger(-Infinity), false, '-Infinity');
diff --git a/test/built-ins/Number/isInteger/integers.js b/test/built-ins/Number/isInteger/integers.js
new file mode 100644
index 0000000000..10d5aff50c
--- /dev/null
+++ b/test/built-ins/Number/isInteger/integers.js
@@ -0,0 +1,17 @@
+// Copyright (c) 2014 Ryan Lewis. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 20.1.2.3
+author: Ryan Lewis
+description: Number.isInteger should return true if called with an integer.
+---*/
+
+assert.sameValue(Number.isInteger(478), true, 'Number.isInteger(478)');
+assert.sameValue(Number.isInteger(-0), true, '-0');
+assert.sameValue(Number.isInteger(0), true, '0');
+assert.sameValue(Number.isInteger(-1), true, '-1');
+assert.sameValue(Number.isInteger(9007199254740991), true, '9007199254740991');
+assert.sameValue(Number.isInteger(-9007199254740991), true, '-9007199254740991');
+assert.sameValue(Number.isInteger(9007199254740992), true, '9007199254740992');
+assert.sameValue(Number.isInteger(-9007199254740992), true, '-9007199254740992');
diff --git a/test/built-ins/Number/isInteger/Number.isInteger_NaN.js b/test/built-ins/Number/isInteger/nan.js
similarity index 100%
rename from test/built-ins/Number/isInteger/Number.isInteger_NaN.js
rename to test/built-ins/Number/isInteger/nan.js
diff --git a/test/built-ins/Number/isInteger/Number.isInteger_Double.js b/test/built-ins/Number/isInteger/non-integers.js
similarity index 50%
rename from test/built-ins/Number/isInteger/Number.isInteger_Double.js
rename to test/built-ins/Number/isInteger/non-integers.js
index 7cf69d73bf..dd0e6b1078 100644
--- a/test/built-ins/Number/isInteger/Number.isInteger_Double.js
+++ b/test/built-ins/Number/isInteger/non-integers.js
@@ -7,4 +7,7 @@ author: Ryan Lewis
 description: Number.isInteger should return false if called with a double.
 ---*/
 
-assert.sameValue(Number.isInteger(6.75), false, 'Number.isInteger(6.75)');
+assert.sameValue(Number.isInteger(6.75), false, '6.75');
+assert.sameValue(Number.isInteger(0.000001), false, '0.000001');
+assert.sameValue(Number.isInteger(-0.000001), false, '-0.000001');
+assert.sameValue(Number.isInteger(11e-1), false, '11e-1');
diff --git a/test/built-ins/Number/isInteger/prop-desc.js b/test/built-ins/Number/isInteger/prop-desc.js
new file mode 100644
index 0000000000..5ac538f5da
--- /dev/null
+++ b/test/built-ins/Number/isInteger/prop-desc.js
@@ -0,0 +1,20 @@
+// 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.1.2.3
+esid: sec-number.isinteger
+description: >
+  "isInteger" property of Number
+info: >
+  17 ECMAScript Standard Built-in Objects:
+
+  Every other data property described in clauses 18 through 26 and in Annex B.2
+  has the attributes { [[Writable]]: true, [[Enumerable]]: false,
+  [[Configurable]]: true } unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Number, "isInteger");
+verifyWritable(Number, "isInteger");
+verifyConfigurable(Number, "isInteger");
-- 
GitLab