|
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-6.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-6"; |
|
38 var VERSION = "ECMA_2"; |
|
39 startTest(); |
|
40 var TITLE = "String.prototype.charCodeAt"; |
|
41 |
|
42 writeHeaderToLog( SECTION + " "+ TITLE); |
|
43 |
|
44 |
|
45 new TestCase( SECTION, |
|
46 "var obj = true; obj.__proto__.charCodeAt = String.prototype.charCodeAt; var s = ''; for ( var i = 0; i < 4; i++ ) s+= String.fromCharCode( obj.charCodeAt(i) ); s", |
|
47 "true", |
|
48 eval("var obj = true; obj.__proto__.charCodeAt = String.prototype.charCodeAt; var s = ''; for ( var i = 0; i < 4; i++ ) s+= String.fromCharCode( obj.charCodeAt(i) ); s") ); |
|
49 |
|
50 new TestCase( SECTION, |
|
51 "var obj = 1234; obj.__proto__.charCodeAt = String.prototype.charCodeAt; var s = ''; for ( var i = 0; i < 4; i++ ) s+= String.fromCharCode( obj.charCodeAt(i) ); s", |
|
52 "1234", |
|
53 eval("var obj = 1234; obj.__proto__.charCodeAt = String.prototype.charCodeAt; var s = ''; for ( var i = 0; i < 4; i++ ) s+= String.fromCharCode( obj.charCodeAt(i) ); s") ); |
|
54 |
|
55 new TestCase( SECTION, |
|
56 "var obj = 'hello'; obj.__proto__.charCodeAt = String.prototype.charCodeAt; var s = ''; for ( var i = 0; i < 5; i++ ) s+= String.fromCharCode( obj.charCodeAt(i) ); s", |
|
57 "hello", |
|
58 eval("var obj = 'hello'; obj.__proto__.charCodeAt = String.prototype.charCodeAt; var s = ''; for ( var i = 0; i < 5; i++ ) s+= String.fromCharCode( obj.charCodeAt(i) ); s") ); |
|
59 |
|
60 test(); |