OLD | NEW |
1 // Copyright 2008 the V8 project authors. All rights reserved. | 1 // Copyright 2008 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 } | 46 } |
47 | 47 |
48 function f4(x) { | 48 function f4(x) { |
49 this.x = x; | 49 this.x = x; |
50 this.y = 1; | 50 this.y = 1; |
51 if (x == 1) return; | 51 if (x == 1) return; |
52 this.z = f1; | 52 this.z = f1; |
53 } | 53 } |
54 | 54 |
55 o1_1 = new f1(); | 55 o1_1 = new f1(); |
| 56 assertEquals(1, o1_1.x, "1"); |
56 o1_2 = new f1(); | 57 o1_2 = new f1(); |
57 assertArrayEquals(["x"], props(o1_1)); | 58 assertEquals(1, o1_1.x, "2"); |
58 assertArrayEquals(["x"], props(o1_2)); | 59 assertArrayEquals(["x"], props(o1_1), "3"); |
| 60 assertArrayEquals(["x"], props(o1_2), "4"); |
59 | 61 |
60 o2_1 = new f2(0); | 62 o2_1 = new f2(0); |
61 o2_2 = new f2(0); | 63 o2_2 = new f2(0); |
62 assertArrayEquals(["x"], props(o2_1)); | 64 assertArrayEquals(["x"], props(o2_1)); |
63 assertArrayEquals(["x"], props(o2_2)); | 65 assertArrayEquals(["x"], props(o2_2)); |
64 | 66 |
65 o3_1 = new f3(0); | 67 o3_1 = new f3(0); |
66 o3_2 = new f3(0); | 68 o3_2 = new f3(0); |
67 assertArrayEquals(["x", "y", "z"], props(o3_1)); | 69 assertArrayEquals(["x", "y", "z"], props(o3_1)); |
68 assertArrayEquals(["x", "y", "z"], props(o3_2)); | 70 assertArrayEquals(["x", "y", "z"], props(o3_2)); |
69 | 71 |
70 o4_0_1 = new f4(0); | 72 o4_0_1 = new f4(0); |
71 o4_0_2 = new f4(0); | 73 o4_0_2 = new f4(0); |
72 assertArrayEquals(["x", "y", "z"], props(o4_0_1)); | 74 assertArrayEquals(["x", "y", "z"], props(o4_0_1)); |
73 assertArrayEquals(["x", "y", "z"], props(o4_0_2)); | 75 assertArrayEquals(["x", "y", "z"], props(o4_0_2)); |
74 | 76 |
75 o4_1_1 = new f4(1); | 77 o4_1_1 = new f4(1); |
76 o4_1_2 = new f4(1); | 78 o4_1_2 = new f4(1); |
77 assertArrayEquals(["x", "y"], props(o4_1_1)); | 79 assertArrayEquals(["x", "y"], props(o4_1_1)); |
78 assertArrayEquals(["x", "y"], props(o4_1_2)); | 80 assertArrayEquals(["x", "y"], props(o4_1_2)); |
79 | 81 |
| 82 function f5(x, y) { |
| 83 this.x = x; |
| 84 this.y = y; |
| 85 } |
| 86 |
| 87 function f6(x, y) { |
| 88 this.y = y; |
| 89 this.x = x; |
| 90 } |
| 91 |
| 92 function f7(x, y, z) { |
| 93 this.x = x; |
| 94 this.y = y; |
| 95 } |
| 96 |
| 97 function testArgs(fun) { |
| 98 obj = new fun(); |
| 99 assertArrayEquals(["x", "y"], props(obj)); |
| 100 assertEquals(void 0, obj.x); |
| 101 assertEquals(void 0, obj.y); |
| 102 |
| 103 obj = new fun("x"); |
| 104 assertArrayEquals(["x", "y"], props(obj)); |
| 105 assertEquals("x", obj.x); |
| 106 assertEquals(void 0, obj.y); |
| 107 |
| 108 obj = new fun("x", "y"); |
| 109 assertArrayEquals(["x", "y"], props(obj)); |
| 110 assertEquals("x", obj.x); |
| 111 assertEquals("y", obj.y); |
| 112 |
| 113 obj = new fun("x", "y", "z"); |
| 114 assertArrayEquals(["x", "y"], props(obj)); |
| 115 assertEquals("x", obj.x); |
| 116 assertEquals("y", obj.y); |
| 117 } |
| 118 |
| 119 for (var i = 0; i < 10; i++) { |
| 120 testArgs(f5); |
| 121 testArgs(f6); |
| 122 testArgs(f7); |
| 123 } |
| 124 |
80 function g(){ | 125 function g(){ |
81 this.x=1 | 126 this.x=1 |
82 } | 127 } |
83 | 128 |
84 o = new g(); | 129 o = new g(); |
85 assertEquals(1, o.x); | 130 assertEquals(1, o.x); |
86 o = new g(); | 131 o = new g(); |
87 assertEquals(1, o.x); | 132 assertEquals(1, o.x); |
88 g.prototype = {y:2} | 133 g.prototype = {y:2} |
89 o = new g(); | 134 o = new g(); |
90 assertEquals(1, o.x); | 135 assertEquals(1, o.x); |
91 assertEquals(2, o.y); | 136 assertEquals(2, o.y); |
92 o = new g(); | 137 o = new g(); |
93 assertEquals(1, o.x); | 138 assertEquals(1, o.x); |
94 assertEquals(2, o.y); | 139 assertEquals(2, o.y); |
95 | 140 |
OLD | NEW |