From f5b5ad47e55c5ec6536b1bb18a0b0d74ce0d8f1c Mon Sep 17 00:00:00 2001
From: Leonardo Balter <leonardo.balter@gmail.com>
Date: Fri, 8 Jan 2016 11:54:53 -0500
Subject: [PATCH] Add tests for Subclassing the built-in Number Objects

---
 .../subclassing/Number/regular-subclassing.js | 23 +++++++++++++
 .../Number/super-must-be-called.js            | 32 +++++++++++++++++++
 2 files changed, 55 insertions(+)
 create mode 100644 test/language/subclassing/Number/regular-subclassing.js
 create mode 100644 test/language/subclassing/Number/super-must-be-called.js

diff --git a/test/language/subclassing/Number/regular-subclassing.js b/test/language/subclassing/Number/regular-subclassing.js
new file mode 100644
index 0000000000..7f5ce10fb8
--- /dev/null
+++ b/test/language/subclassing/Number/regular-subclassing.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.1.1
+description: Subclassing the Number object
+info: >
+  20.1.1 The Number Constructor
+
+  ...
+
+  The Number constructor is designed to be subclassable. It may be used as the
+  value of an extends clause of a class definition. Subclass constructors that
+  intend to inherit the specified Number behaviour must include a super call to
+  the Number constructor to create and initialize the subclass instance with a
+  [[NumberData]] internal slot.
+---*/
+
+class N extends Number {}
+
+var n = new N(42);
+
+assert.sameValue(n.toFixed(2), '42.00');
+assert.sameValue(n.toExponential(2), '4.20e+1');
diff --git a/test/language/subclassing/Number/super-must-be-called.js b/test/language/subclassing/Number/super-must-be-called.js
new file mode 100644
index 0000000000..bc702737f8
--- /dev/null
+++ b/test/language/subclassing/Number/super-must-be-called.js
@@ -0,0 +1,32 @@
+// 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.1
+description: Super need to be called to initialize internals
+info: >
+  20.1.1 The Number Constructor
+
+  ...
+
+  The Number constructor is designed to be subclassable. It may be used as the
+  value of an extends clause of a class definition. Subclass constructors that
+  intend to inherit the specified Number behaviour must include a super call to
+  the Number constructor to create and initialize the subclass instance with a
+  [[NumberData]] internal slot.
+---*/
+
+class N extends Number {
+  constructor() {}
+}
+
+assert.throws(ReferenceError, function() {
+  new N();
+});
+
+class N2 extends Number {
+  constructor() {
+    super();
+  }
+}
+
+new N2();
-- 
GitLab