|
43 | 43 | TESTENTRY (methods_with_weird_names_can_be_invoked)
|
44 | 44 | TESTENTRY (method_call_preserves_value)
|
45 | 45 | TESTENTRY (objects_can_be_serialized_to_json)
|
| 46 | + |
| 47 | + TESTGROUP_BEGIN ("EnumerateLoadedClasses") |
| 48 | + TESTENTRY (classes_can_be_enumerated_without_filtering) |
| 49 | + TESTENTRY (classes_can_be_enumerated_with_filtering) |
| 50 | + TESTGROUP_END () |
| 51 | + |
46 | 52 | TESTENTRY (existing_instances_can_be_discovered)
|
47 | 53 | TESTENTRY (function_can_be_scheduled_on_a_dispatch_queue)
|
48 | 54 | TESTENTRY (performance)
|
@@ -789,6 +795,40 @@ @interface FridaTest4 : FridaTest3
|
789 | 795 | @implementation FridaTest4
|
790 | 796 | @end
|
791 | 797 |
|
| 798 | +TESTCASE (classes_can_be_enumerated_without_filtering) |
| 799 | +{ |
| 800 | + COMPILE_AND_LOAD_SCRIPT ( |
| 801 | + "var classes = ObjC.enumerateLoadedClassesSync();" |
| 802 | + "var owners = Object.keys(classes);" |
| 803 | + "send(owners.length > 1);" |
| 804 | + "var runnerPath = Process.enumerateModulesSync()[0].path;" |
| 805 | + "send(classes[runnerPath] !== undefined);" |
| 806 | + "send(classes[runnerPath].indexOf('FridaTest3') !== -1)"); |
| 807 | + EXPECT_SEND_MESSAGE_WITH ("true"); |
| 808 | + EXPECT_SEND_MESSAGE_WITH ("true"); |
| 809 | + EXPECT_SEND_MESSAGE_WITH ("true"); |
| 810 | + EXPECT_NO_MESSAGES (); |
| 811 | +} |
| 812 | + |
| 813 | +TESTCASE (classes_can_be_enumerated_with_filtering) |
| 814 | +{ |
| 815 | + COMPILE_AND_LOAD_SCRIPT ( |
| 816 | + "var runnerPath = Process.enumerateModulesSync()[0].path;" |
| 817 | + "var runnerModules = new ModuleMap(isRunnerModule);" |
| 818 | + "function isRunnerModule(m) {" |
| 819 | + "return m.path === runnerPath;" |
| 820 | + "}" |
| 821 | + "var classes = ObjC.enumerateLoadedClassesSync({" |
| 822 | + "ownedBy: runnerModules" |
| 823 | + "});" |
| 824 | + "var owners = Object.keys(classes);" |
| 825 | + "send(owners.length === 1);" |
| 826 | + "send(owners[0] === runnerPath);"); |
| 827 | + EXPECT_SEND_MESSAGE_WITH ("true"); |
| 828 | + EXPECT_SEND_MESSAGE_WITH ("true"); |
| 829 | + EXPECT_NO_MESSAGES (); |
| 830 | +} |
| 831 | + |
792 | 832 | TESTCASE (existing_instances_can_be_discovered)
|
793 | 833 | {
|
794 | 834 | if (!g_test_slow ())
|
|
0 commit comments