def test_parse_easyclass(self): res = parse_class_dump(self.dump1) self.assertIsInstance(res, list) self.assertEqual(len(res), 1) self.assertIsInstance(res[0], HookedClass) self.assertEqual(len(res[0].methods), 1) m = res[0].methods[0] self.assertIsInstance(m, Method) self.assertEqual(len(m.params), 0) self.assertEqual(m.class_name, res[0].name) self.assertEqual(m.signature, "- (id)init;") self.assertEqual(m.name, "init") self.assertEqual(m.type, "id")
def test_parse_methodswithparams(self): res = parse_class_dump(self.dump3) self.assertIsInstance(res, list) self.assertEqual(len(res), 1) c1 = res[0] [m1, m2] = c1.methods self.assertEqual(m1.name, "setupWithParams") self.assertEqual(len(m1.params), 2) [p1, p2] = m1.params self.assertSequenceEqual(p1, ("id", "arg1")) self.assertSequenceEqual(p2, ("id", "arg2")) [p1, p2] = m2.params self.assertSequenceEqual(p1, ("id", "arg1")) self.assertSequenceEqual(p2, ("id", "arg2"))
def test_parse_multipleclasses(self): res = parse_class_dump(self.dump2) self.assertIsInstance(res, list) self.assertEqual(len(res), 2) c1 = res[0] c2 = res[1] self.assertEqual(len(c1.methods), 3) self.assertEqual(len(c2.methods), 2) [m1, m2, _] = c1.methods [_, m5] = c2.methods self.assertEqual(m1.signature, "- (id)init;") self.assertEqual(m1.name, "init") self.assertEqual(m1.type, "id") self.assertEqual(m2.name, "login") self.assertEqual(m2.type, "void") self.assertEqual(m5.name, "destroy") self.assertEqual(m5.type, "void")