Home | History | Annotate | Download | only in es7
      1 // Copyright 2014 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Ported from
      6 // https://github.com/tc39/Array.prototype.includes/blob/master/test/number-this.js
      7 // using https://www.npmjs.org/package/test262-to-mjsunit
      8 
      9 // Array.prototype.includes should use ToObject on this, so that when called
     10 // with a number, it picks up numeric properties from Number.prototype (even in
     11 // strict mode)
     12 (function() {
     13   "use strict";
     14 
     15   Number.prototype[0] = "a";
     16   Number.prototype[1] = "b";
     17 
     18   Object.defineProperty(Number.prototype, 2, {
     19     get: function() {
     20       assertEquals("object", typeof this);
     21       return "c";
     22     }
     23   });
     24 
     25   Number.prototype.length = 3;
     26   assertTrue(Array.prototype.includes.call(5, "a"));
     27   assertTrue(Array.prototype.includes.call(5, "b"));
     28   assertTrue(Array.prototype.includes.call(5, "c"));
     29   assertFalse(Array.prototype.includes.call(5, "d"));
     30 })();
     31