Index: test/mjsunit/string-charat.js |
diff --git a/test/mjsunit/string-charat.js b/test/mjsunit/string-charat.js |
index f0b0566812c7be907d6f8e8ab455d6b152ac9b7d..99afb75c1e62f2b044cb149e616e8123a34e140d 100644 |
--- a/test/mjsunit/string-charat.js |
+++ b/test/mjsunit/string-charat.js |
@@ -27,52 +27,56 @@ |
var s = "test"; |
+function getTwoByteString() { return "\u1234t"; } |
+function getCons() { return "testtesttesttest" + getTwoByteString() } |
+ |
var slowIndex1 = { valueOf: function() { return 1; } }; |
var slowIndex2 = { toString: function() { return "2"; } }; |
var slowIndexOutOfRange = { valueOf: function() { return -1; } }; |
-function basicTest() { |
- assertEquals("t", s.charAt()); |
- assertEquals("t", s.charAt("string")); |
- assertEquals("t", s.charAt(null)); |
- assertEquals("t", s.charAt(void 0)); |
- assertEquals("t", s.charAt(false)); |
- assertEquals("e", s.charAt(true)); |
- assertEquals("", s.charAt(-1)); |
- assertEquals("", s.charAt(4)); |
- assertEquals("", s.charAt(slowIndexOutOfRange)); |
- assertEquals("", s.charAt(1/0)); |
- assertEquals("", s.charAt(-1/0)); |
- assertEquals("t", s.charAt(0)); |
- assertEquals("t", s.charAt(-0.0)); |
- assertEquals("t", s.charAt(0.4)); |
- assertEquals("e", s.charAt(slowIndex1)); |
- assertEquals("s", s.charAt(slowIndex2)); |
- assertEquals("t", s.charAt(3)); |
- assertEquals("t", s.charAt(3.4)); |
- assertEquals("t", s.charAt(NaN)); |
- |
- assertEquals(116, s.charCodeAt()); |
- assertEquals(116, s.charCodeAt("string")); |
- assertEquals(116, s.charCodeAt(null)); |
- assertEquals(116, s.charCodeAt(void 0)); |
- assertEquals(116, s.charCodeAt(false)); |
- assertEquals(101, s.charCodeAt(true)); |
- assertEquals(116, s.charCodeAt(0)); |
- assertEquals(116, s.charCodeAt(-0.0)); |
- assertEquals(116, s.charCodeAt(0.4)); |
- assertEquals(101, s.charCodeAt(slowIndex1)); |
- assertEquals(115, s.charCodeAt(slowIndex2)); |
- assertEquals(116, s.charCodeAt(3)); |
- assertEquals(116, s.charCodeAt(3.4)); |
- assertEquals(116, s.charCodeAt(NaN)); |
- assertTrue(isNaN(s.charCodeAt(-1))); |
- assertTrue(isNaN(s.charCodeAt(4))); |
- assertTrue(isNaN(s.charCodeAt(slowIndexOutOfRange))); |
- assertTrue(isNaN(s.charCodeAt(1/0))); |
- assertTrue(isNaN(s.charCodeAt(-1/0))); |
+function basicTest(s, len) { |
+ assertEquals("t", s().charAt()); |
+ assertEquals("t", s().charAt("string")); |
+ assertEquals("t", s().charAt(null)); |
+ assertEquals("t", s().charAt(void 0)); |
+ assertEquals("t", s().charAt(false)); |
+ assertEquals("e", s().charAt(true)); |
+ assertEquals("", s().charAt(-1)); |
+ assertEquals("", s().charAt(len)); |
+ assertEquals("", s().charAt(slowIndexOutOfRange)); |
+ assertEquals("", s().charAt(1/0)); |
+ assertEquals("", s().charAt(-1/0)); |
+ assertEquals("t", s().charAt(0)); |
+ assertEquals("t", s().charAt(-0.0)); |
+ assertEquals("t", s().charAt(0.4)); |
+ assertEquals("e", s().charAt(slowIndex1)); |
+ assertEquals("s", s().charAt(slowIndex2)); |
+ assertEquals("t", s().charAt(3)); |
+ assertEquals("t", s().charAt(3.4)); |
+ assertEquals("t", s().charAt(NaN)); |
+ |
+ assertEquals(116, s().charCodeAt()); |
+ assertEquals(116, s().charCodeAt("string")); |
+ assertEquals(116, s().charCodeAt(null)); |
+ assertEquals(116, s().charCodeAt(void 0)); |
+ assertEquals(116, s().charCodeAt(false)); |
+ assertEquals(101, s().charCodeAt(true)); |
+ assertEquals(116, s().charCodeAt(0)); |
+ assertEquals(116, s().charCodeAt(-0.0)); |
+ assertEquals(116, s().charCodeAt(0.4)); |
+ assertEquals(101, s().charCodeAt(slowIndex1)); |
+ assertEquals(115, s().charCodeAt(slowIndex2)); |
+ assertEquals(116, s().charCodeAt(3)); |
+ assertEquals(116, s().charCodeAt(3.4)); |
+ assertEquals(116, s().charCodeAt(NaN)); |
+ assertTrue(isNaN(s().charCodeAt(-1))); |
+ assertTrue(isNaN(s().charCodeAt(len))); |
+ assertTrue(isNaN(s().charCodeAt(slowIndexOutOfRange))); |
+ assertTrue(isNaN(s().charCodeAt(1/0))); |
+ assertTrue(isNaN(s().charCodeAt(-1/0))); |
} |
-basicTest(); |
+basicTest(function() { return s; }, s.length); |
+basicTest(getCons, getCons().length); |
// Make sure enough of the one-char string cache is filled. |
var alpha = ['@']; |
@@ -122,7 +126,8 @@ stealTest(); |
// Test custom string IC-s. |
for (var i = 0; i < 20; i++) { |
- basicTest(); |
+ basicTest(function() { return s; }, s.length); |
+ basicTest(getCons, getCons().length); |
stealTest(); |
} |