|
1 // Any copyright is dedicated to the Public Domain. |
|
2 // http://creativecommons.org/licenses/publicdomain/ |
|
3 |
|
4 //----------------------------------------------------------------------------- |
|
5 var BUGNUMBER = 548671; |
|
6 var summary = |
|
7 "Don't use a shared-permanent inherited property to implement " + |
|
8 "[].length or (function(){}).length"; |
|
9 |
|
10 print(BUGNUMBER + ": " + summary); |
|
11 |
|
12 /************** |
|
13 * BEGIN TEST * |
|
14 **************/ |
|
15 |
|
16 var a = [1, 2, 3]; |
|
17 a.__proto__ = null; |
|
18 reportCompare("length" in a, true, "length should be own property of array"); |
|
19 reportCompare(Object.hasOwnProperty.call(a, "length"), true, |
|
20 "length should be own property of array"); |
|
21 reportCompare(a.length, 3, "array length should be 3"); |
|
22 |
|
23 var a = [], b = []; |
|
24 b.__proto__ = a; |
|
25 reportCompare(b.hasOwnProperty("length"), true, |
|
26 "length should be own property of array"); |
|
27 b.length = 42; |
|
28 reportCompare(b.length, 42, "should have mutated b's (own) length"); |
|
29 reportCompare(a.length, 0, "should not have mutated a's (own) length"); |
|
30 |
|
31 |
|
32 if (typeof reportCompare === "function") |
|
33 reportCompare(true, true); |
|
34 |
|
35 print("All tests passed!"); |