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 382c52a4a289ff41897fb02be7508c3be25b927e..0000000000000000000000000000000000000000
--- 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 71ddf854de6f44b16002d2cca3bd8b6df9ec3cce..0000000000000000000000000000000000000000
--- 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 d80454ef3df59fa3c14a709090332fddb111a52f..0000000000000000000000000000000000000000
--- 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 0000000000000000000000000000000000000000..81614c2396ce718794ff99ecd7595e17ffd55e3f
--- /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 4eb328237198786dc6811668961907a947c12f69..0897e79a8ee71a246f78db5716abf487c7bb6615 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 0000000000000000000000000000000000000000..10d5aff50c5015098e3629dccb22ad9baee16ced
--- /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 7cf69d73bf1c8f6ec5e758d22bfc73aebbbd5959..dd0e6b10781da9c913024878f46b49dc8a75f516 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 0000000000000000000000000000000000000000..5ac538f5da531d31ad017bb80159a6c630bb9bfb
--- /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");