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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 assertEquals(properties[i].propertyType(), fromJSON.properties[i].prop
ertyType); | 100 assertEquals(properties[i].propertyType(), fromJSON.properties[i].prop
ertyType); |
101 } else { | 101 } else { |
102 assertTrue(typeof(fromJSON.properties[i].propertyType) === 'undefined'
); | 102 assertTrue(typeof(fromJSON.properties[i].propertyType) === 'undefined'
); |
103 } | 103 } |
104 // If there are no attributes nothing is serialized. | 104 // If there are no attributes nothing is serialized. |
105 if (properties[i].attributes() != debug.PropertyAttribute.None) { | 105 if (properties[i].attributes() != debug.PropertyAttribute.None) { |
106 assertEquals(properties[i].attributes(), fromJSON.properties[i].attrib
utes); | 106 assertEquals(properties[i].attributes(), fromJSON.properties[i].attrib
utes); |
107 } else { | 107 } else { |
108 assertTrue(typeof(fromJSON.properties[i].attributes) === 'undefined'); | 108 assertTrue(typeof(fromJSON.properties[i].attributes) === 'undefined'); |
109 } | 109 } |
110 if (!properties[i].value() instanceof debug.AccessorMirror && | 110 if (!properties[i].value().isPrimitive()) { |
111 properties[i].value().isPrimitive()) { | |
112 // NaN is not equal to NaN. | 111 // NaN is not equal to NaN. |
113 if (isNaN(properties[i].value().value())) { | 112 if (isNaN(properties[i].value().value())) { |
114 assertTrue(isNaN(fromJSON.properties[i].value.value)); | 113 assertTrue(isNaN(fromJSON.properties[i].value.value)); |
115 } else { | 114 } else { |
116 assertEquals(properties[i].value().value(), fromJSON.properties[i].v
alue.value); | 115 assertEquals(properties[i].value().value(), fromJSON.properties[i].v
alue.value); |
117 } | 116 } |
118 } | 117 } |
119 found = true; | 118 found = true; |
120 } | 119 } |
121 } | 120 } |
(...skipping 28 matching lines...) Expand all Loading... |
150 assertFalse(global_mirror.property("Math").isEnum(), "Math is enumerable" + glob
al_mirror.property("Math").attributes()); | 149 assertFalse(global_mirror.property("Math").isEnum(), "Math is enumerable" + glob
al_mirror.property("Math").attributes()); |
151 | 150 |
152 math_mirror = global_mirror.property("Math").value(); | 151 math_mirror = global_mirror.property("Math").value(); |
153 assertEquals('property', math_mirror.property("E").type()); | 152 assertEquals('property', math_mirror.property("E").type()); |
154 assertFalse(math_mirror.property("E").isEnum(), "Math.E is enumerable"); | 153 assertFalse(math_mirror.property("E").isEnum(), "Math.E is enumerable"); |
155 assertTrue(math_mirror.property("E").isReadOnly()); | 154 assertTrue(math_mirror.property("E").isReadOnly()); |
156 assertFalse(math_mirror.property("E").canDelete()); | 155 assertFalse(math_mirror.property("E").canDelete()); |
157 | 156 |
158 // Test objects with JavaScript accessors. | 157 // Test objects with JavaScript accessors. |
159 o = {} | 158 o = {} |
160 o.__defineGetter__('a', function(){throw 'a';}) | 159 o.__defineGetter__('a', function(){return 'a';}); |
161 o.__defineSetter__('b', function(){throw 'b';}) | 160 o.__defineSetter__('b', function(){}); |
162 o.__defineGetter__('c', function(){throw 'c';}) | 161 o.__defineGetter__('c', function(){throw 'c';}); |
163 o.__defineSetter__('c', function(){throw 'c';}) | 162 o.__defineSetter__('c', function(){throw 'c';}); |
164 testObjectMirror(o, 'Object', 'Object'); | 163 testObjectMirror(o, 'Object', 'Object'); |
165 mirror = debug.MakeMirror(o); | 164 mirror = debug.MakeMirror(o); |
166 // a has getter but no setter. | 165 // a has getter but no setter. |
167 assertTrue(mirror.property('a').value() instanceof debug.AccessorMirror); | 166 assertTrue(mirror.property('a').hasGetter()); |
| 167 assertFalse(mirror.property('a').hasSetter()); |
168 assertEquals(debug.PropertyType.Callbacks, mirror.property('a').propertyType()); | 168 assertEquals(debug.PropertyType.Callbacks, mirror.property('a').propertyType()); |
| 169 assertEquals('function', mirror.property('a').getter().type()); |
| 170 assertEquals('undefined', mirror.property('a').setter().type()); |
| 171 assertEquals('function (){return \'a\';}', mirror.property('a').getter().source(
)); |
| 172 assertEquals('a', mirror.property('a').value().value()); |
| 173 assertFalse(mirror.property('a').isException()); |
169 // b has setter but no getter. | 174 // b has setter but no getter. |
170 assertTrue(mirror.property('b').value() instanceof debug.AccessorMirror); | 175 assertFalse(mirror.property('b').hasGetter()); |
| 176 assertTrue(mirror.property('b').hasSetter()); |
171 assertEquals(debug.PropertyType.Callbacks, mirror.property('b').propertyType()); | 177 assertEquals(debug.PropertyType.Callbacks, mirror.property('b').propertyType()); |
172 // c has both getter and setter. | 178 assertEquals('undefined', mirror.property('b').getter().type()); |
173 assertTrue(mirror.property('c').value() instanceof debug.AccessorMirror); | 179 assertEquals('function', mirror.property('b').setter().type()); |
| 180 assertEquals('function (){}', mirror.property('b').setter().source()); |
| 181 assertFalse(mirror.property('b').isException()); |
| 182 // c has both getter and setter. The getter throws an exception. |
| 183 assertTrue(mirror.property('c').hasGetter()); |
| 184 assertTrue(mirror.property('c').hasSetter()); |
174 assertEquals(debug.PropertyType.Callbacks, mirror.property('c').propertyType()); | 185 assertEquals(debug.PropertyType.Callbacks, mirror.property('c').propertyType()); |
| 186 assertEquals('function', mirror.property('c').getter().type()); |
| 187 assertEquals('function', mirror.property('c').setter().type()); |
| 188 assertEquals('function (){throw \'c\';}', mirror.property('c').getter().source()
); |
| 189 assertEquals('function (){throw \'c\';}', mirror.property('c').setter().source()
); |
| 190 assertEquals('c', mirror.property('c').value().value()); |
| 191 assertTrue(mirror.property('c').isException()); |
175 | 192 |
176 // Test objects with native accessors. | 193 // Test objects with native accessors. |
177 mirror = debug.MakeMirror(new String('abc')); | 194 mirror = debug.MakeMirror(new String('abc')); |
178 assertTrue(mirror instanceof debug.ObjectMirror); | 195 assertTrue(mirror instanceof debug.ObjectMirror); |
179 assertTrue(mirror.property('length').value() instanceof debug.AccessorMirror); | 196 assertFalse(mirror.property('length').hasGetter()); |
180 assertTrue(mirror.property('length').value().isNative()); | 197 assertFalse(mirror.property('length').hasSetter()); |
| 198 assertTrue(mirror.property('length').isNative()); |
181 assertEquals('a', mirror.property(0).value().value()); | 199 assertEquals('a', mirror.property(0).value().value()); |
182 assertEquals('b', mirror.property(1).value().value()); | 200 assertEquals('b', mirror.property(1).value().value()); |
183 assertEquals('c', mirror.property(2).value().value()); | 201 assertEquals('c', mirror.property(2).value().value()); |
OLD | NEW |