| OLD | NEW | 
 | (Empty) | 
|   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 // Flags: --harmony-strings |  | 
|   6  |  | 
|   7 // Tests taken from: |  | 
|   8 // https://github.com/mathiasbynens/String.prototype.codePointAt |  | 
|   9  |  | 
|  10 assertEquals(String.prototype.codePointAt.length, 1); |  | 
|  11 assertEquals(String.prototype.propertyIsEnumerable("codePointAt"), false); |  | 
|  12  |  | 
|  13 // String that starts with a BMP symbol |  | 
|  14 assertEquals("abc\uD834\uDF06def".codePointAt(""), 0x61); |  | 
|  15 assertEquals("abc\uD834\uDF06def".codePointAt("_"), 0x61); |  | 
|  16 assertEquals("abc\uD834\uDF06def".codePointAt(), 0x61); |  | 
|  17 assertEquals("abc\uD834\uDF06def".codePointAt(-Infinity), undefined); |  | 
|  18 assertEquals("abc\uD834\uDF06def".codePointAt(-1), undefined); |  | 
|  19 assertEquals("abc\uD834\uDF06def".codePointAt(-0), 0x61); |  | 
|  20 assertEquals("abc\uD834\uDF06def".codePointAt(0), 0x61); |  | 
|  21 assertEquals("abc\uD834\uDF06def".codePointAt(3), 0x1D306); |  | 
|  22 assertEquals("abc\uD834\uDF06def".codePointAt(4), 0xDF06); |  | 
|  23 assertEquals("abc\uD834\uDF06def".codePointAt(5), 0x64); |  | 
|  24 assertEquals("abc\uD834\uDF06def".codePointAt(42), undefined); |  | 
|  25 assertEquals("abc\uD834\uDF06def".codePointAt(Infinity), undefined); |  | 
|  26 assertEquals("abc\uD834\uDF06def".codePointAt(Infinity), undefined); |  | 
|  27 assertEquals("abc\uD834\uDF06def".codePointAt(NaN), 0x61); |  | 
|  28 assertEquals("abc\uD834\uDF06def".codePointAt(false), 0x61); |  | 
|  29 assertEquals("abc\uD834\uDF06def".codePointAt(null), 0x61); |  | 
|  30 assertEquals("abc\uD834\uDF06def".codePointAt(undefined), 0x61); |  | 
|  31  |  | 
|  32 // String that starts with an astral symbol |  | 
|  33 assertEquals("\uD834\uDF06def".codePointAt(""), 0x1D306); |  | 
|  34 assertEquals("\uD834\uDF06def".codePointAt("1"), 0xDF06); |  | 
|  35 assertEquals("\uD834\uDF06def".codePointAt("_"), 0x1D306); |  | 
|  36 assertEquals("\uD834\uDF06def".codePointAt(), 0x1D306); |  | 
|  37 assertEquals("\uD834\uDF06def".codePointAt(-1), undefined); |  | 
|  38 assertEquals("\uD834\uDF06def".codePointAt(-0), 0x1D306); |  | 
|  39 assertEquals("\uD834\uDF06def".codePointAt(0), 0x1D306); |  | 
|  40 assertEquals("\uD834\uDF06def".codePointAt(1), 0xDF06); |  | 
|  41 assertEquals("\uD834\uDF06def".codePointAt(42), undefined); |  | 
|  42 assertEquals("\uD834\uDF06def".codePointAt(false), 0x1D306); |  | 
|  43 assertEquals("\uD834\uDF06def".codePointAt(null), 0x1D306); |  | 
|  44 assertEquals("\uD834\uDF06def".codePointAt(undefined), 0x1D306); |  | 
|  45  |  | 
|  46 // Lone high surrogates |  | 
|  47 assertEquals("\uD834abc".codePointAt(""), 0xD834); |  | 
|  48 assertEquals("\uD834abc".codePointAt("_"), 0xD834); |  | 
|  49 assertEquals("\uD834abc".codePointAt(), 0xD834); |  | 
|  50 assertEquals("\uD834abc".codePointAt(-1), undefined); |  | 
|  51 assertEquals("\uD834abc".codePointAt(-0), 0xD834); |  | 
|  52 assertEquals("\uD834abc".codePointAt(0), 0xD834); |  | 
|  53 assertEquals("\uD834abc".codePointAt(false), 0xD834); |  | 
|  54 assertEquals("\uD834abc".codePointAt(NaN), 0xD834); |  | 
|  55 assertEquals("\uD834abc".codePointAt(null), 0xD834); |  | 
|  56 assertEquals("\uD834abc".codePointAt(undefined), 0xD834); |  | 
|  57  |  | 
|  58 // Lone low surrogates |  | 
|  59 assertEquals("\uDF06abc".codePointAt(""), 0xDF06); |  | 
|  60 assertEquals("\uDF06abc".codePointAt("_"), 0xDF06); |  | 
|  61 assertEquals("\uDF06abc".codePointAt(), 0xDF06); |  | 
|  62 assertEquals("\uDF06abc".codePointAt(-1), undefined); |  | 
|  63 assertEquals("\uDF06abc".codePointAt(-0), 0xDF06); |  | 
|  64 assertEquals("\uDF06abc".codePointAt(0), 0xDF06); |  | 
|  65 assertEquals("\uDF06abc".codePointAt(false), 0xDF06); |  | 
|  66 assertEquals("\uDF06abc".codePointAt(NaN), 0xDF06); |  | 
|  67 assertEquals("\uDF06abc".codePointAt(null), 0xDF06); |  | 
|  68 assertEquals("\uDF06abc".codePointAt(undefined), 0xDF06); |  | 
|  69  |  | 
|  70 assertThrows(function() { |  | 
|  71   String.prototype.codePointAt.call(undefined); |  | 
|  72 }, TypeError); |  | 
|  73 assertThrows(function() { |  | 
|  74   String.prototype.codePointAt.call(undefined, 4); |  | 
|  75 }, TypeError); |  | 
|  76 assertThrows(function() { |  | 
|  77   String.prototype.codePointAt.call(null); |  | 
|  78 }, TypeError); |  | 
|  79 assertThrows(function() { |  | 
|  80   String.prototype.codePointAt.call(null, 4); |  | 
|  81 }, TypeError); |  | 
|  82 assertEquals(String.prototype.codePointAt.call(42, 0), 0x34); |  | 
|  83 assertEquals(String.prototype.codePointAt.call(42, 1), 0x32); |  | 
|  84 assertEquals(String.prototype.codePointAt.call({ |  | 
|  85   toString: function() { return "abc"; } |  | 
|  86 }, 2), 0x63); |  | 
|  87 var tmp = 0; |  | 
|  88 assertEquals(String.prototype.codePointAt.call({ |  | 
|  89   toString: function() { ++tmp; return String(tmp); } |  | 
|  90 }, 0), 0x31); |  | 
|  91 assertEquals(tmp, 1); |  | 
| OLD | NEW |