Chromium Code Reviews| Index: test/mjsunit/apply.js |
| diff --git a/test/mjsunit/apply.js b/test/mjsunit/apply.js |
| index 1d9dde9b11e1792e67ef844b1c717f807edc0bc5..d51618faac104e0a21462b62333b7968cc19cf4f 100644 |
| --- a/test/mjsunit/apply.js |
| +++ b/test/mjsunit/apply.js |
| @@ -38,12 +38,12 @@ assertTrue(this === f0.apply(), "1-0"); |
| assertTrue(this === f0.apply(this), "2a"); |
| assertTrue(this === f0.apply(this, new Array(1)), "2b"); |
| assertTrue(this === f0.apply(this, new Array(2)), "2c"); |
| -assertTrue(this === f0.apply(this, new Array(4242)), "2c"); |
| +assertTrue(this === f0.apply(this, new Array(4242)), "2d"); |
| assertTrue(this === f0.apply(null), "3a"); |
| assertTrue(this === f0.apply(null, new Array(1)), "3b"); |
| assertTrue(this === f0.apply(null, new Array(2)), "3c"); |
| -assertTrue(this === f0.apply(this, new Array(4242)), "2c"); |
| +assertTrue(this === f0.apply(this, new Array(4242)), "3d"); |
| assertTrue(this === f0.apply(void 0), "4a"); |
| assertTrue(this === f0.apply(void 0, new Array(1)), "4b"); |
| @@ -51,26 +51,29 @@ assertTrue(this === f0.apply(void 0, new Array(2)), "4c"); |
| assertTrue(void 0 === f1.apply(), "1-1"); |
| -assertTrue(void 0 === f1.apply(this), "2a"); |
| -assertTrue(void 0 === f1.apply(this, new Array(1)), "2b"); |
| -assertTrue(void 0 === f1.apply(this, new Array(2)), "2c"); |
| -assertTrue(void 0 === f1.apply(this, new Array(4242)), "2c"); |
| -assertTrue(42 === f1.apply(this, new Array(42, 43)), "2c"); |
| -assertEquals("foo", f1.apply(this, new Array("foo", "bar", "baz", "boo")), "2c"); |
|
William Hesse
2009/07/09 07:54:36
Why not just shorten "bar", "baz" and "boo" by a c
|
| - |
| -assertTrue(void 0 === f1.apply(null), "3a"); |
| -assertTrue(void 0 === f1.apply(null, new Array(1)), "3b"); |
| -assertTrue(void 0 === f1.apply(null, new Array(2)), "3c"); |
| -assertTrue(void 0 === f1.apply(null, new Array(4242)), "2c"); |
| -assertTrue(42 === f1.apply(null, new Array(42, 43)), "2c"); |
| -assertEquals("foo", f1.apply(null, new Array("foo", "bar", "baz", "boo")), "2c"); |
| - |
| -assertTrue(void 0 === f1.apply(void 0), "4a"); |
| -assertTrue(void 0 === f1.apply(void 0, new Array(1)), "4b"); |
| -assertTrue(void 0 === f1.apply(void 0, new Array(2)), "4c"); |
| -assertTrue(void 0 === f1.apply(void 0, new Array(4242)), "4c"); |
| -assertTrue(42 === f1.apply(void 0, new Array(42, 43)), "2c"); |
| -assertEquals("foo", f1.apply(void 0, new Array("foo", "bar", "baz", "boo")), "2c"); |
| +assertTrue(void 0 === f1.apply(this), "5a"); |
| +assertTrue(void 0 === f1.apply(this, new Array(1)), "5b"); |
| +assertTrue(void 0 === f1.apply(this, new Array(2)), "5c"); |
| +assertTrue(void 0 === f1.apply(this, new Array(4242)), "5d"); |
| +assertTrue(42 === f1.apply(this, new Array(42, 43)), "5e"); |
| +assertEquals("foo", f1.apply(this, new Array("foo", "bar", "baz", "boo")), |
| + "5f"); |
| + |
| +assertTrue(void 0 === f1.apply(null), "6a"); |
| +assertTrue(void 0 === f1.apply(null, new Array(1)), "6b"); |
| +assertTrue(void 0 === f1.apply(null, new Array(2)), "6c"); |
| +assertTrue(void 0 === f1.apply(null, new Array(4242)), "6d"); |
| +assertTrue(42 === f1.apply(null, new Array(42, 43)), "6e"); |
| +assertEquals("foo", f1.apply(null, new Array("foo", "bar", "baz", "boo")), |
| + "6f"); |
| + |
| +assertTrue(void 0 === f1.apply(void 0), "7a"); |
| +assertTrue(void 0 === f1.apply(void 0, new Array(1)), "7b"); |
| +assertTrue(void 0 === f1.apply(void 0, new Array(2)), "7c"); |
| +assertTrue(void 0 === f1.apply(void 0, new Array(4242)), "7d"); |
| +assertTrue(42 === f1.apply(void 0, new Array(42, 43)), "7e"); |
| +assertEquals("foo", f1.apply(void 0, new Array("foo", "bar", "baz", "boo")), |
| + "7f"); |
| var arr = new Array(42, "foo", "fish", "horse"); |
| function j(a, b, c, d, e, f, g, h, i, j, k, l) { |
| @@ -81,7 +84,7 @@ function j(a, b, c, d, e, f, g, h, i, j, k, l) { |
| var expect = "42foofishhorse"; |
| for (var i = 0; i < 8; i++) |
| expect += "undefined"; |
| -assertEquals(expect, j.apply(undefined, arr)); |
| +assertEquals(expect, j.apply(undefined, arr), "apply to undefined"); |
| assertThrows("f0.apply(this, 1);"); |
| assertThrows("f0.apply(this, 1, 2);"); |
| @@ -95,7 +98,7 @@ function f() { |
| return doo; |
| } |
| -assertEquals("42foofishhorse", f.apply(this, arr)); |
| +assertEquals("42foofishhorse", f.apply(this, arr), "apply to this"); |
| function s() { |
| var doo = this; |
| @@ -105,7 +108,7 @@ function s() { |
| return doo; |
| } |
| -assertEquals("bar42foofishhorse", s.apply("bar", arr)); |
| +assertEquals("bar42foofishhorse", s.apply("bar", arr), "apply to string"); |
| function al() { |
| assertEquals(345, this); |
| @@ -118,19 +121,24 @@ for (var j = 1; j < 0x40000000; j <<= 1) { |
| a[j - 1] = 42; |
| assertEquals(42 + j, al.apply(345, a)); |
| } catch (e) { |
| - assertTrue(e.toString().indexOf("Function.prototype.apply") != -1); |
| + assertTrue(e.toString().indexOf("Function.prototype.apply") != -1, |
| + "exception does not contain Function.prototype.apply: " + |
| + e.toString()); |
| for (; j < 0x40000000; j <<= 1) { |
| var caught = false; |
| try { |
| a = new Array(j); |
| a[j - 1] = 42; |
| al.apply(345, a); |
| - assertEquals("Shouldn't get", "here"); |
| + assertUnreachable("Apply of arrray with length " + a.length + |
| + " should have thrown"); |
| } catch (e) { |
| - assertTrue(e.toString().indexOf("Function.prototype.apply") != -1); |
| + assertTrue(e.toString().indexOf("Function.prototype.apply") != -1, |
| + "exception does not contain Function.prototype.apply [" + |
| + "length = " + j + "]: " + e.toString()); |
| caught = true; |
| } |
| - assertTrue(caught); |
| + assertTrue(caught, "exception not caught"); |
| } |
| break; |
| } |
| @@ -160,8 +168,8 @@ assertEquals(1229, primes.length); |
| var same_primes = Array.prototype.constructor.apply(Array, primes); |
| for (var i = 0; i < primes.length; i++) |
| - assertEquals(primes[i], same_primes[i]); |
| -assertEquals(primes.length, same_primes.length); |
| + assertEquals(primes[i], same_primes[i], "prime" + primes[i]); |
| +assertEquals(primes.length, same_primes.length, "prime-length"); |
| Array.prototype["1"] = "sep"; |
| @@ -170,15 +178,23 @@ var holey = new Array(3); |
| holey[0] = "mor"; |
| holey[2] = "er"; |
| -assertEquals("morseper", String.prototype.concat.apply("", holey)); |
| -assertEquals("morseper", String.prototype.concat.apply("", holey, 1)); |
| -assertEquals("morseper", String.prototype.concat.apply("", holey, 1, 2)); |
| -assertEquals("morseper", String.prototype.concat.apply("", holey, 1, 2, 3)); |
| -assertEquals("morseper", String.prototype.concat.apply("", holey, 1, 2, 3, 4)); |
| +assertEquals("morseper", String.prototype.concat.apply("", holey), |
| + "moreseper0"); |
| +assertEquals("morseper", String.prototype.concat.apply("", holey, 1), |
| + "moreseper1"); |
| +assertEquals("morseper", String.prototype.concat.apply("", holey, 1, 2), |
| + "moreseper2"); |
| +assertEquals("morseper", String.prototype.concat.apply("", holey, 1, 2, 3), |
| + "morseper3"); |
| +assertEquals("morseper", String.prototype.concat.apply("", holey, 1, 2, 3, 4), |
| + "morseper4"); |
| primes[0] = ""; |
| primes[1] = holey; |
| assertThrows("String.prototype.concat.apply.apply('foo', primes)"); |
| -assertEquals("morseper", String.prototype.concat.apply.apply(String.prototype.concat, primes)); |
| +assertEquals( |
| + "morseper", |
|
William Hesse
2009/07/09 07:54:36
I think you can put the first argument on the same
|
| + String.prototype.concat.apply.apply(String.prototype.concat, primes), |
| + "moreseper-prime"); |
| delete(Array.prototype["1"]); |