Index: test/mjsunit/mirror-object.js |
=================================================================== |
--- test/mjsunit/mirror-object.js (revision 1052) |
+++ test/mjsunit/mirror-object.js (working copy) |
@@ -107,8 +107,7 @@ |
} else { |
assertTrue(typeof(fromJSON.properties[i].attributes) === 'undefined'); |
} |
- if (!properties[i].value() instanceof debug.AccessorMirror && |
- properties[i].value().isPrimitive()) { |
+ if (!properties[i].value().isPrimitive()) { |
// NaN is not equal to NaN. |
if (isNaN(properties[i].value().value())) { |
assertTrue(isNaN(fromJSON.properties[i].value.value)); |
@@ -157,27 +156,46 @@ |
// Test objects with JavaScript accessors. |
o = {} |
-o.__defineGetter__('a', function(){throw 'a';}) |
-o.__defineSetter__('b', function(){throw 'b';}) |
-o.__defineGetter__('c', function(){throw 'c';}) |
-o.__defineSetter__('c', function(){throw 'c';}) |
+o.__defineGetter__('a', function(){return 'a';}); |
+o.__defineSetter__('b', function(){}); |
+o.__defineGetter__('c', function(){throw 'c';}); |
+o.__defineSetter__('c', function(){throw 'c';}); |
testObjectMirror(o, 'Object', 'Object'); |
mirror = debug.MakeMirror(o); |
// a has getter but no setter. |
-assertTrue(mirror.property('a').value() instanceof debug.AccessorMirror); |
+assertTrue(mirror.property('a').hasGetter()); |
+assertFalse(mirror.property('a').hasSetter()); |
assertEquals(debug.PropertyType.Callbacks, mirror.property('a').propertyType()); |
+assertEquals('function', mirror.property('a').getter().type()); |
+assertEquals('undefined', mirror.property('a').setter().type()); |
+assertEquals('function (){return \'a\';}', mirror.property('a').getter().source()); |
+assertEquals('a', mirror.property('a').value().value()); |
+assertFalse(mirror.property('a').isException()); |
// b has setter but no getter. |
-assertTrue(mirror.property('b').value() instanceof debug.AccessorMirror); |
+assertFalse(mirror.property('b').hasGetter()); |
+assertTrue(mirror.property('b').hasSetter()); |
assertEquals(debug.PropertyType.Callbacks, mirror.property('b').propertyType()); |
-// c has both getter and setter. |
-assertTrue(mirror.property('c').value() instanceof debug.AccessorMirror); |
+assertEquals('undefined', mirror.property('b').getter().type()); |
+assertEquals('function', mirror.property('b').setter().type()); |
+assertEquals('function (){}', mirror.property('b').setter().source()); |
+assertFalse(mirror.property('b').isException()); |
+// c has both getter and setter. The getter throws an exception. |
+assertTrue(mirror.property('c').hasGetter()); |
+assertTrue(mirror.property('c').hasSetter()); |
assertEquals(debug.PropertyType.Callbacks, mirror.property('c').propertyType()); |
+assertEquals('function', mirror.property('c').getter().type()); |
+assertEquals('function', mirror.property('c').setter().type()); |
+assertEquals('function (){throw \'c\';}', mirror.property('c').getter().source()); |
+assertEquals('function (){throw \'c\';}', mirror.property('c').setter().source()); |
+assertEquals('c', mirror.property('c').value().value()); |
+assertTrue(mirror.property('c').isException()); |
// Test objects with native accessors. |
mirror = debug.MakeMirror(new String('abc')); |
assertTrue(mirror instanceof debug.ObjectMirror); |
-assertTrue(mirror.property('length').value() instanceof debug.AccessorMirror); |
-assertTrue(mirror.property('length').value().isNative()); |
+assertFalse(mirror.property('length').hasGetter()); |
+assertFalse(mirror.property('length').hasSetter()); |
+assertTrue(mirror.property('length').isNative()); |
assertEquals('a', mirror.property(0).value().value()); |
assertEquals('b', mirror.property(1).value().value()); |
assertEquals('c', mirror.property(2).value().value()); |