| Index: test/mjsunit/es6/generators-mirror.js
|
| diff --git a/test/mjsunit/es6/generators-mirror.js b/test/mjsunit/es6/generators-mirror.js
|
| index 69252858825bfd7fe7c96d2a7850814ce5a94418..bf21f4dff5229378b6bc3432e8006c1b657758c4 100644
|
| --- a/test/mjsunit/es6/generators-mirror.js
|
| +++ b/test/mjsunit/es6/generators-mirror.js
|
| @@ -24,7 +24,7 @@ MirrorRefCache.prototype.lookup = function(handle) {
|
| return this.refs_[handle];
|
| }
|
|
|
| -function TestGeneratorMirror(g, test) {
|
| +function TestGeneratorMirror(g, status, line, column, receiver) {
|
| // Create mirror and JSON representation.
|
| var mirror = debug.MakeMirror(g);
|
| var serializer = debug.MakeMirrorSerializer();
|
| @@ -44,41 +44,69 @@ function TestGeneratorMirror(g, test) {
|
| assertFalse(mirror.isPrimitive());
|
| assertEquals('Generator', mirror.className());
|
|
|
| - assertTrue(mirror.receiver().isUndefined());
|
| + assertEquals(receiver, mirror.receiver().value());
|
| assertEquals(generator, mirror.func().value());
|
|
|
| - test(mirror);
|
| -}
|
| + assertEquals(status, mirror.status());
|
| +
|
| + // Note that line numbers are 0-based, not 1-based.
|
| + var loc = mirror.sourceLocation();
|
| + if (status === 'suspended') {
|
| + assertTrue(!!loc);
|
| + assertEquals(line, loc.line);
|
| + assertEquals(column, loc.column);
|
| + } else {
|
| + assertEquals(undefined, loc);
|
| + }
|
|
|
| -var iter = generator(function () {
|
| - assertEquals('running', debug.MakeMirror(iter).status());
|
| -})
|
| + TestInternalProperties(mirror, status, receiver);
|
| +}
|
|
|
| -// Note that line numbers are 0-based, not 1-based.
|
| -function assertSourceLocation(loc, line, column) {
|
| - assertEquals(line, loc.line);
|
| - assertEquals(column, loc.column);
|
| +function TestInternalProperties(mirror, status, receiver) {
|
| + var properties = mirror.internalProperties();
|
| + assertEquals(3, properties.length);
|
| + assertEquals("[[GeneratorStatus]]", properties[0].name());
|
| + assertEquals(status, properties[0].value().value());
|
| + assertEquals("[[GeneratorFunction]]", properties[1].name());
|
| + assertEquals(generator, properties[1].value().value());
|
| + assertEquals("[[GeneratorReceiver]]", properties[2].name());
|
| + assertEquals(receiver, properties[2].value().value());
|
| }
|
|
|
| -TestGeneratorMirror(iter, function (mirror) {
|
| - assertEquals('suspended', mirror.status())
|
| - assertSourceLocation(mirror.sourceLocation(), 7, 19);
|
| +var iter = generator(function() {
|
| + var mirror = debug.MakeMirror(iter);
|
| + assertEquals('running', mirror.status());
|
| + assertEquals(undefined, mirror.sourceLocation());
|
| + TestInternalProperties(mirror, 'running');
|
| });
|
|
|
| +TestGeneratorMirror(iter, 'suspended', 7, 19);
|
| +
|
| iter.next();
|
| -TestGeneratorMirror(iter, function (mirror) {
|
| - assertEquals('suspended', mirror.status())
|
| - assertSourceLocation(mirror.sourceLocation(), 9, 2);
|
| -});
|
| +TestGeneratorMirror(iter, 'suspended', 9, 2);
|
|
|
| iter.next();
|
| -TestGeneratorMirror(iter, function (mirror) {
|
| - assertEquals('suspended', mirror.status())
|
| - assertSourceLocation(mirror.sourceLocation(), 11, 2);
|
| -});
|
| +TestGeneratorMirror(iter, 'suspended', 11, 2);
|
|
|
| iter.next();
|
| -TestGeneratorMirror(iter, function (mirror) {
|
| - assertEquals('closed', mirror.status())
|
| +TestGeneratorMirror(iter, 'closed');
|
| +
|
| +// Test generator with receiver.
|
| +var obj = {foo: 42};
|
| +var iter2 = generator.call(obj, function() {
|
| + var mirror = debug.MakeMirror(iter2);
|
| + assertEquals('running', mirror.status());
|
| assertEquals(undefined, mirror.sourceLocation());
|
| + TestInternalProperties(mirror, 'running', obj);
|
| });
|
| +
|
| +TestGeneratorMirror(iter2, 'suspended', 7, 19, obj);
|
| +
|
| +iter2.next();
|
| +TestGeneratorMirror(iter2, 'suspended', 9, 2, obj);
|
| +
|
| +iter2.next();
|
| +TestGeneratorMirror(iter2, 'suspended', 11, 2, obj);
|
| +
|
| +iter2.next();
|
| +TestGeneratorMirror(iter2, 'closed', 0, 0, obj);
|
|
|