From 3685e6b7b3a57761fcf85bfdf6e5e0e046221e11 Mon Sep 17 00:00:00 2001
From: Leonardo Balter <leonardo.balter@gmail.com>
Date: Mon, 20 Jun 2016 14:42:41 -0400
Subject: [PATCH] Update and add tests for Number.isNaN

---
 .../Number/isNaN/Number.isNaN_Boolean.js      | 10 --------
 .../Number/isNaN/Number.isNaN_Object.js       | 12 ---------
 .../Number/isNaN/Number.isNaN_String.js       | 10 --------
 .../Number/isNaN/arg-is-not-number.js         | 25 +++++++++++++++++++
 .../isNaN/{Number.isNaN_NaN.js => nan.js}     |  0
 test/built-ins/Number/isNaN/not-nan.js        | 24 ++++++++++++++++++
 test/built-ins/Number/isNaN/prop-desc.js      | 20 +++++++++++++++
 7 files changed, 69 insertions(+), 32 deletions(-)
 delete mode 100644 test/built-ins/Number/isNaN/Number.isNaN_Boolean.js
 delete mode 100644 test/built-ins/Number/isNaN/Number.isNaN_Object.js
 delete mode 100644 test/built-ins/Number/isNaN/Number.isNaN_String.js
 create mode 100644 test/built-ins/Number/isNaN/arg-is-not-number.js
 rename test/built-ins/Number/isNaN/{Number.isNaN_NaN.js => nan.js} (100%)
 create mode 100644 test/built-ins/Number/isNaN/not-nan.js
 create mode 100644 test/built-ins/Number/isNaN/prop-desc.js

diff --git a/test/built-ins/Number/isNaN/Number.isNaN_Boolean.js b/test/built-ins/Number/isNaN/Number.isNaN_Boolean.js
deleted file mode 100644
index c4c16b0537..0000000000
--- a/test/built-ins/Number/isNaN/Number.isNaN_Boolean.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.4
-author: Ryan Lewis
-description: Number.IsNaN should return false if called with a boolean.
----*/
-
-assert.sameValue(Number.isNaN(true), false, 'Number.isNaN(true)');
diff --git a/test/built-ins/Number/isNaN/Number.isNaN_Object.js b/test/built-ins/Number/isNaN/Number.isNaN_Object.js
deleted file mode 100644
index 53ede9f324..0000000000
--- a/test/built-ins/Number/isNaN/Number.isNaN_Object.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.4
-author: Ryan Lewis
-description: >
-    Number.IsNaN should return false if called with a non-number
-    Object.
----*/
-
-assert.sameValue(Number.isNaN(new Object()), false, 'Number.isNaN(new Object())');
diff --git a/test/built-ins/Number/isNaN/Number.isNaN_String.js b/test/built-ins/Number/isNaN/Number.isNaN_String.js
deleted file mode 100644
index 4ad32bd28d..0000000000
--- a/test/built-ins/Number/isNaN/Number.isNaN_String.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.4
-author: Ryan Lewis
-description: Number.IsNaN should return false if called with a String.
----*/
-
-assert.sameValue(Number.isNaN('string'), false, 'Number.isNaN("string")');
diff --git a/test/built-ins/Number/isNaN/arg-is-not-number.js b/test/built-ins/Number/isNaN/arg-is-not-number.js
new file mode 100644
index 0000000000..a97c97d3f0
--- /dev/null
+++ b/test/built-ins/Number/isNaN/arg-is-not-number.js
@@ -0,0 +1,25 @@
+// 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.4
+esid: sec-number.isnan
+description: >
+  Return false if argument is not Number
+info: |
+  Number.isNaN ( number )
+
+  1. If Type(number) is not Number, return false.
+  [...]
+features: [Symbol]
+---*/
+
+assert.sameValue(Number.isNaN("NaN"), false, "string");
+assert.sameValue(Number.isNaN([NaN]), false, "[NaN]");
+assert.sameValue(Number.isNaN(new Number(NaN)), false, "Number object");
+assert.sameValue(Number.isNaN(false), false, "false");
+assert.sameValue(Number.isNaN(true), false, "true");
+assert.sameValue(Number.isNaN(undefined), false, "undefined");
+assert.sameValue(Number.isNaN(null), false, "null");
+assert.sameValue(Number.isNaN(Symbol("1")), false, "symbol");
+assert.sameValue(Number.isNaN(), false, "no arg");
diff --git a/test/built-ins/Number/isNaN/Number.isNaN_NaN.js b/test/built-ins/Number/isNaN/nan.js
similarity index 100%
rename from test/built-ins/Number/isNaN/Number.isNaN_NaN.js
rename to test/built-ins/Number/isNaN/nan.js
diff --git a/test/built-ins/Number/isNaN/not-nan.js b/test/built-ins/Number/isNaN/not-nan.js
new file mode 100644
index 0000000000..4be5d39116
--- /dev/null
+++ b/test/built-ins/Number/isNaN/not-nan.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.1.2.4
+esid: sec-number.isnan
+description: >
+  Return false if argument is not NaN
+info: |
+  Number.isNaN ( number )
+
+  1. If Type(number) is not Number, return false.
+  2. If number is NaN, return true.
+  3. Otherwise, return false. 
+---*/
+
+assert.sameValue(Number.isNaN(0), false, "0");
+assert.sameValue(Number.isNaN(-0), false, "-0");
+assert.sameValue(Number.isNaN(1), false, "1");
+assert.sameValue(Number.isNaN(-1), false, "-1");
+assert.sameValue(Number.isNaN(1.1), false, "1.1");
+assert.sameValue(Number.isNaN(1e10), false, "1e10");
+assert.sameValue(Number.isNaN(Infinity), false, "Infinity");
+assert.sameValue(Number.isNaN(-Infinity), false, "-Infinity");
diff --git a/test/built-ins/Number/isNaN/prop-desc.js b/test/built-ins/Number/isNaN/prop-desc.js
new file mode 100644
index 0000000000..7de29f8b54
--- /dev/null
+++ b/test/built-ins/Number/isNaN/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.4
+esid: sec-number.isnan
+description: >
+  "isNaN" 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, "isNaN");
+verifyWritable(Number, "isNaN");
+verifyConfigurable(Number, "isNaN");
-- 
GitLab