| OLD | NEW | 
|    1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file |    1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file | 
|    2 // for details. All rights reserved. Use of this source code is governed by a |    2 // for details. All rights reserved. Use of this source code is governed by a | 
|    3 // BSD-style license that can be found in the LICENSE file. |    3 // BSD-style license that can be found in the LICENSE file. | 
|    4 // |    4 // | 
|    5 // Dart test program for checking implemention of IsolateMirror when |    5 // Dart test program for checking implemention of MirrorSystem when | 
|    6 // inspecting the current isolate. |    6 // inspecting the current isolate. | 
|    7  |    7  | 
|    8 #library('isolate_mirror_local_test'); |    8 #library('isolate_mirror_local_test'); | 
|    9  |    9  | 
|   10 #import('dart:isolate'); |   10 #import('dart:isolate'); | 
|   11 #import('dart:mirrors'); |   11 #import('dart:mirrors'); | 
|   12  |   12  | 
|   13 ReceivePort exit_port; |   13 ReceivePort exit_port; | 
|   14 Set expectedTests; |   14 Set expectedTests; | 
|   15  |   15  | 
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  125                 'main, ' |  125                 'main, ' | 
|  126                 'methodWithError, ' |  126                 'methodWithError, ' | 
|  127                 'methodWithException, ' |  127                 'methodWithException, ' | 
|  128                 'myVar, ' |  128                 'myVar, ' | 
|  129                 'myVar=, ' |  129                 'myVar=, ' | 
|  130                 'sort, ' |  130                 'sort, ' | 
|  131                 'testBoolInstanceMirror, ' |  131                 'testBoolInstanceMirror, ' | 
|  132                 'testCustomInstanceMirror, ' |  132                 'testCustomInstanceMirror, ' | 
|  133                 'testDone, ' |  133                 'testDone, ' | 
|  134                 'testIntegerInstanceMirror, ' |  134                 'testIntegerInstanceMirror, ' | 
|  135                 'testIsolateMirror, ' |  | 
|  136                 'testLibrariesMap, ' |  135                 'testLibrariesMap, ' | 
|  137                 'testMirrorErrors, ' |  136                 'testMirrorErrors, ' | 
 |  137                 'testMirrorSystem, ' | 
|  138                 'testNullInstanceMirror, ' |  138                 'testNullInstanceMirror, ' | 
|  139                 'testRootLibraryMirror, ' |  139                 'testRootLibraryMirror, ' | 
|  140                 'testStringInstanceMirror]', |  140                 'testStringInstanceMirror]', | 
|  141                 '$keys'); |  141                 '$keys'); | 
|  142  |  142  | 
|  143   // Check that the classes map is complete. |  143   // Check that the classes map is complete. | 
|  144   keys = lib_mirror.classes().getKeys(); |  144   keys = lib_mirror.classes().getKeys(); | 
|  145   sort(keys); |  145   sort(keys); | 
|  146   Expect.equals('[' |  146   Expect.equals('[' | 
|  147                 'MyClass, ' |  147                 'MyClass, ' | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
|  161                 'main, ' |  161                 'main, ' | 
|  162                 'methodWithError, ' |  162                 'methodWithError, ' | 
|  163                 'methodWithException, ' |  163                 'methodWithException, ' | 
|  164                 'myVar, ' |  164                 'myVar, ' | 
|  165                 'myVar=, ' |  165                 'myVar=, ' | 
|  166                 'sort, ' |  166                 'sort, ' | 
|  167                 'testBoolInstanceMirror, ' |  167                 'testBoolInstanceMirror, ' | 
|  168                 'testCustomInstanceMirror, ' |  168                 'testCustomInstanceMirror, ' | 
|  169                 'testDone, ' |  169                 'testDone, ' | 
|  170                 'testIntegerInstanceMirror, ' |  170                 'testIntegerInstanceMirror, ' | 
|  171                 'testIsolateMirror, ' |  | 
|  172                 'testLibrariesMap, ' |  171                 'testLibrariesMap, ' | 
|  173                 'testMirrorErrors, ' |  172                 'testMirrorErrors, ' | 
 |  173                 'testMirrorSystem, ' | 
|  174                 'testNullInstanceMirror, ' |  174                 'testNullInstanceMirror, ' | 
|  175                 'testRootLibraryMirror, ' |  175                 'testRootLibraryMirror, ' | 
|  176                 'testStringInstanceMirror]', |  176                 'testStringInstanceMirror]', | 
|  177                 '$keys'); |  177                 '$keys'); | 
|  178  |  178  | 
|  179   // Check that the variables map is complete. |  179   // Check that the variables map is complete. | 
|  180   keys = lib_mirror.variables().getKeys(); |  180   keys = lib_mirror.variables().getKeys(); | 
|  181   sort(keys); |  181   sort(keys); | 
|  182   Expect.equals('[' |  182   Expect.equals('[' | 
|  183                 'exit_port, ' |  183                 'exit_port, ' | 
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  250   Expect.equals('Object', oom_cls.superclass().simpleName); |  250   Expect.equals('Object', oom_cls.superclass().simpleName); | 
|  251   Expect.isTrue(oom_cls.defaultFactory() === null); |  251   Expect.isTrue(oom_cls.defaultFactory() === null); | 
|  252   Expect.equals('dart:core', oom_cls.library.simpleName); |  252   Expect.equals('dart:core', oom_cls.library.simpleName); | 
|  253   Expect.isTrue(oom_cls.isClass); |  253   Expect.isTrue(oom_cls.isClass); | 
|  254   Expect.equals('Exception', oom_cls.superinterfaces()[0].simpleName); |  254   Expect.equals('Exception', oom_cls.superinterfaces()[0].simpleName); | 
|  255   Expect.equals("InterfaceMirror on 'OutOfMemoryException'", |  255   Expect.equals("InterfaceMirror on 'OutOfMemoryException'", | 
|  256                 oom_cls.toString()); |  256                 oom_cls.toString()); | 
|  257   testDone('testLibrariesMap'); |  257   testDone('testLibrariesMap'); | 
|  258 } |  258 } | 
|  259  |  259  | 
|  260 void testIsolateMirror(IsolateMirror mirror) { |  260 void testMirrorSystem(MirrorSystem mirrors) { | 
|  261   Expect.isTrue(mirror.debugName.contains('main')); |  261   Expect.isTrue(mirrors.isolate.debugName.contains('main')); | 
|  262   testRootLibraryMirror(mirror.rootLibrary); |  262   testRootLibraryMirror(mirrors.rootLibrary); | 
|  263   testLibrariesMap(mirror.libraries()); |  263   testLibrariesMap(mirrors.libraries()); | 
|  264   testDone('testIsolateMirror'); |  264   testDone('testMirrorSystem'); | 
|  265 } |  265 } | 
|  266  |  266  | 
|  267 void testIntegerInstanceMirror(InstanceMirror mirror) { |  267 void testIntegerInstanceMirror(InstanceMirror mirror) { | 
|  268   // TODO(turnidge): The mirrors api exposes internal vm |  268   // TODO(turnidge): The mirrors api exposes internal vm | 
|  269   // implementation class names.  Is this okay? |  269   // implementation class names.  Is this okay? | 
|  270   Expect.equals('Smi', mirror.getClass().simpleName); |  270   Expect.equals('Smi', mirror.getClass().simpleName); | 
|  271   Expect.isTrue(mirror.hasSimpleValue); |  271   Expect.isTrue(mirror.hasSimpleValue); | 
|  272   Expect.equals(1001, mirror.simpleValue); |  272   Expect.equals(1001, mirror.simpleValue); | 
|  273   Expect.equals("InstanceMirror on <1001>", mirror.toString()); |  273   Expect.equals("InstanceMirror on <1001>", mirror.toString()); | 
|  274  |  274  | 
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  375  |  375  | 
|  376 void methodWithException() { |  376 void methodWithException() { | 
|  377   throw new MyException("from methodWithException"); |  377   throw new MyException("from methodWithException"); | 
|  378 } |  378 } | 
|  379  |  379  | 
|  380 void methodWithError() { |  380 void methodWithError() { | 
|  381   // We get a parse error when we try to run this function. |  381   // We get a parse error when we try to run this function. | 
|  382   +++; |  382   +++; | 
|  383 } |  383 } | 
|  384  |  384  | 
|  385 void testMirrorErrors(IsolateMirror mirror) { |  385 void testMirrorErrors(MirrorSystem mirrors) { | 
|  386   LibraryMirror lib_mirror = mirror.rootLibrary; |  386   LibraryMirror lib_mirror = mirrors.rootLibrary; | 
|  387  |  387  | 
|  388   Future<InstanceMirror> future = |  388   Future<InstanceMirror> future = | 
|  389       lib_mirror.invoke('methodWithException', []); |  389       lib_mirror.invoke('methodWithException', []); | 
|  390   future.handleException( |  390   future.handleException( | 
|  391       (MirroredError exc) { |  391       (MirroredError exc) { | 
|  392         Expect.isTrue(exc is MirroredUncaughtExceptionError); |  392         Expect.isTrue(exc is MirroredUncaughtExceptionError); | 
|  393         Expect.equals('MyException', |  393         Expect.equals('MyException', | 
|  394                       exc.exception_mirror.getClass().simpleName); |  394                       exc.exception_mirror.getClass().simpleName); | 
|  395         Expect.equals('MyException: from methodWithException', |  395         Expect.equals('MyException: from methodWithException', | 
|  396                       exc.exception_string); |  396                       exc.exception_string); | 
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  439         Expect.isTrue(false); |  439         Expect.isTrue(false); | 
|  440       }); |  440       }); | 
|  441 } |  441 } | 
|  442  |  442  | 
|  443 void main() { |  443 void main() { | 
|  444   // When all of the expected tests complete, the exit_port is closed, |  444   // When all of the expected tests complete, the exit_port is closed, | 
|  445   // allowing the program to terminate. |  445   // allowing the program to terminate. | 
|  446   exit_port = new ReceivePort(); |  446   exit_port = new ReceivePort(); | 
|  447   expectedTests = new Set<String>.from(['testRootLibraryMirror', |  447   expectedTests = new Set<String>.from(['testRootLibraryMirror', | 
|  448                                         'testLibrariesMap', |  448                                         'testLibrariesMap', | 
|  449                                         'testIsolateMirror', |  449                                         'testMirrorSystem', | 
|  450                                         'testIntegerInstanceMirror', |  450                                         'testIntegerInstanceMirror', | 
|  451                                         'testStringInstanceMirror', |  451                                         'testStringInstanceMirror', | 
|  452                                         'testBoolInstanceMirror', |  452                                         'testBoolInstanceMirror', | 
|  453                                         'testNullInstanceMirror', |  453                                         'testNullInstanceMirror', | 
|  454                                         'testCustomInstanceMirror', |  454                                         'testCustomInstanceMirror', | 
|  455                                         'testMirrorErrors1', |  455                                         'testMirrorErrors1', | 
|  456                                         'testMirrorErrors2', |  456                                         'testMirrorErrors2', | 
|  457                                         'testMirrorErrors3']); |  457                                         'testMirrorErrors3']); | 
|  458  |  458  | 
|  459   // Test that an isolate can reflect on itself. |  459   // Test that an isolate can reflect on itself. | 
|  460   isolateMirrorOf(exit_port.toSendPort()).then(testIsolateMirror); |  460   mirrorSystemOf(exit_port.toSendPort()).then(testMirrorSystem); | 
|  461  |  461  | 
|  462   testIntegerInstanceMirror(mirrorOf(1001)); |  462   MirrorSystem mirrors = currentMirrorSystem(); | 
|  463   testStringInstanceMirror(mirrorOf('This\nis\na\nString')); |  463   testIntegerInstanceMirror(mirrors.mirrorOf(1001)); | 
|  464   testBoolInstanceMirror(mirrorOf(true)); |  464   testStringInstanceMirror(mirrors.mirrorOf('This\nis\na\nString')); | 
|  465   testNullInstanceMirror(mirrorOf(null)); |  465   testBoolInstanceMirror(mirrors.mirrorOf(true)); | 
|  466   testCustomInstanceMirror(mirrorOf(new MyClass(17))); |  466   testNullInstanceMirror(mirrors.mirrorOf(null)); | 
|  467   testMirrorErrors(currentIsolateMirror()); |  467   testCustomInstanceMirror(mirrors.mirrorOf(new MyClass(17))); | 
 |  468   testMirrorErrors(currentMirrorSystem()); | 
|  468 } |  469 } | 
| OLD | NEW |