|
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
2 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
3 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
5 |
|
6 |
|
7 /** |
|
8 File Name: 15.5.4.5.1.js |
|
9 ECMA Section: 15.5.4.5 String.prototype.charCodeAt(pos) |
|
10 Description: Returns a number (a nonnegative integer less than 2^16) |
|
11 representing the Unicode encoding of the character at |
|
12 position pos in this string. If there is no character |
|
13 at that position, the number is NaN. |
|
14 |
|
15 When the charCodeAt method is called with one argument |
|
16 pos, the following steps are taken: |
|
17 1. Call ToString, giving it the theis value as its |
|
18 argument |
|
19 2. Call ToInteger(pos) |
|
20 3. Compute the number of characters in result(1). |
|
21 4. If Result(2) is less than 0 or is not less than |
|
22 Result(3), return NaN. |
|
23 5. Return a value of Number type, of positive sign, whose |
|
24 magnitude is the Unicode encoding of one character |
|
25 from result 1, namely the characer at position Result |
|
26 (2), where the first character in Result(1) is |
|
27 considered to be at position 0. |
|
28 |
|
29 Note that the charCodeAt function is intentionally |
|
30 generic; it does not require that its this value be a |
|
31 String object. Therefore it can be transferred to other |
|
32 kinds of objects for use as a method. |
|
33 |
|
34 Author: christine@netscape.com |
|
35 Date: 2 october 1997 |
|
36 */ |
|
37 var SECTION = "15.5.4.5-5"; |
|
38 var VERSION = "ECMA_1"; |
|
39 startTest(); |
|
40 var TITLE = "String.prototype.charCodeAt"; |
|
41 |
|
42 writeHeaderToLog( SECTION + " "+ TITLE); |
|
43 |
|
44 var TEST_STRING = ""; |
|
45 |
|
46 for ( var i = 0x0000; i < 255; i++ ) { |
|
47 TEST_STRING += String.fromCharCode( i ); |
|
48 } |
|
49 |
|
50 new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(0)", 0x0074, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(0)") ); |
|
51 new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(1)", 0x0072, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(1)") ); |
|
52 new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(2)", 0x0075, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(2)") ); |
|
53 new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(3)", 0x0065, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(3)") ); |
|
54 new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(4)", Number.NaN, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(4)") ); |
|
55 new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(-1)", Number.NaN, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(-1)") ); |
|
56 |
|
57 new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(true)", 0x0072, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(true)") ); |
|
58 new TestCase( SECTION, "x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(false)", 0x0074, eval("x = new Boolean(true); x.charCodeAt=String.prototype.charCodeAt;x.charCodeAt(false)") ); |
|
59 |
|
60 new TestCase( SECTION, "x = new String(); x.charCodeAt(0)", Number.NaN, eval("x=new String();x.charCodeAt(0)") ); |
|
61 new TestCase( SECTION, "x = new String(); x.charCodeAt(1)", Number.NaN, eval("x=new String();x.charCodeAt(1)") ); |
|
62 new TestCase( SECTION, "x = new String(); x.charCodeAt(-1)", Number.NaN, eval("x=new String();x.charCodeAt(-1)") ); |
|
63 |
|
64 new TestCase( SECTION, "x = new String(); x.charCodeAt(NaN)", Number.NaN, eval("x=new String();x.charCodeAt(Number.NaN)") ); |
|
65 new TestCase( SECTION, "x = new String(); x.charCodeAt(Number.POSITIVE_INFINITY)", Number.NaN, eval("x=new String();x.charCodeAt(Number.POSITIVE_INFINITY)") ); |
|
66 new TestCase( SECTION, "x = new String(); x.charCodeAt(Number.NEGATIVE_INFINITY)", Number.NaN, eval("x=new String();x.charCodeAt(Number.NEGATIVE_INFINITY)") ); |
|
67 |
|
68 for ( var j = 0; j < 255; j++ ) { |
|
69 new TestCase( SECTION, "TEST_STRING.charCodeAt("+j+")", j, TEST_STRING.charCodeAt(j) ); |
|
70 } |
|
71 |
|
72 test(); |