annotate paraspace/tests/dexfile_test.py @ 117:2833c1337dc0

Fix testcase for travel_dex_relocatable()
author Thinker K.F. Li <thinker@codemud.net>
date Thu, 04 Aug 2011 19:12:49 +0800
parents 61cef1662035
children 6e4b6414789b
rev   line source
16
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1 from paraspace import dexfile
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
2 import os
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
3
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
4 def block_sizes_test():
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
5 srcdir = os.path.dirname(__file__)
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
6 srcroot = os.path.join(srcdir, '..', '..')
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
7 testdatapath = os.path.join(srcroot, 'data', 'testdata1.dex')
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
8 dex = dexfile.DEXFile.open(testdatapath)
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
9 assert dex.stringIds.data_size == 5384
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
10 assert dex.typeIds.data_size == 704
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
11 assert dex.protoIds.data_size == 1776
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
12 assert dex.fieldIds.data_size == 1944
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
13 assert dex.methodIds.data_size == 3552
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
14 assert dex.classDefs.data_size == 1600
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
15 assert dex.classDatas.data_size == 2052
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
16 assert dex.typeLists.data_size == 838
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
17 assert dex.codeItems.data_size == 30688
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
18 assert dex.annotationSetItems.data_size == 412
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
19 assert dex.annotationsDirectoryItems.data_size == 792
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
20 assert dex.annotationItems.data_size == 642
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
21 assert dex.encodedArrayItems.data_size == 139
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
22 assert dex.debugInfoItems.data_size == 6353
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
23 assert dex.stringDataItems.data_size == 23492
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
24 pass
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
25
712e76c3d791 unittest for dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
26
20
265f39947b36 Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents: 16
diff changeset
27 def dependencies_test():
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
28 from paraspace import dex_deptracker
23
fff40aabefab Move collect_dependencies() to dex_deptracker.py
Thinker K.F. Li <thinker@codemud.net>
parents: 20
diff changeset
29
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
30 deps = dex_deptracker.collect_all_dep_decls()
20
265f39947b36 Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents: 16
diff changeset
31 assert deps['_DEX_AnnotationItem.typeIdx'][0] == dexfile.depend_idx
265f39947b36 Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents: 16
diff changeset
32 assert deps['_DEX_AnnotationItem.typeIdx'][1] == 'DEXFile.typeIds'
265f39947b36 Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents: 16
diff changeset
33 assert deps['_DEX_FieldId.typeIdx'][0] == dexfile.depend_idx
265f39947b36 Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents: 16
diff changeset
34 assert deps['_DEX_FieldId.typeIdx'][1] == 'DEXFile.typeIds'
41
c5cfc796af8b Use value_ref & cond in dexfile.py to avoid 0 offset value
Thinker K.F. Li <thinker@codemud.net>
parents: 40
diff changeset
35 assert deps['_DEX_ClassDef.staticValuesOffRef.value'][0] == \
c5cfc796af8b Use value_ref & cond in dexfile.py to avoid 0 offset value
Thinker K.F. Li <thinker@codemud.net>
parents: 40
diff changeset
36 dexfile.depend_off
c5cfc796af8b Use value_ref & cond in dexfile.py to avoid 0 offset value
Thinker K.F. Li <thinker@codemud.net>
parents: 40
diff changeset
37 assert deps['_DEX_ClassDef.staticValuesOffRef.value'][1] == \
c5cfc796af8b Use value_ref & cond in dexfile.py to avoid 0 offset value
Thinker K.F. Li <thinker@codemud.net>
parents: 40
diff changeset
38 '_DEX_EncodedArrayItem'
20
265f39947b36 Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents: 16
diff changeset
39 assert deps['_DEX_Try.handlerOff'][0] == dexfile.depend_off_rel
57
fa8fe7d714b9 Fix semantic bug of dexfile.depend_off_rel by searching relative offset.
Thinker K.F. Li <thinker@codemud.net>
parents: 55
diff changeset
40 assert deps['_DEX_Try.handlerOff'][1] == '_DEX_Catch'
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
41 assert deps['_DEX_Try.handlerOff'][2] == '_DEX_Code.handlers_size'
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
42 pass
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
43
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
44
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
45 def resolve_name_path_test():
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
46 from paraspace.dex_deptracker import _resolve_name_path
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
47
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
48 obj, parent = _resolve_name_path('_DEX_ClassData.staticFields.items')
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
49 assert obj == list
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
50 obj, parent = _resolve_name_path('_DEX_ClassData.staticFields.items.*')
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
51 assert obj == dexfile._DEX_Field
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
52 obj, parent = _resolve_name_path('_DEX_ClassData.staticFields.items.1')
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
53 assert obj == dexfile._DEX_Field
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
54
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
55 obj, parent = _resolve_name_path('_DEX_Catch.catchAllHandler.value')
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
56 assert obj == dexfile._DEX_CatchAllHandler
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
57
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
58 key = dexfile._DEX_AnnotationMember_noname.kDexAnnotationNull
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
59 obj, parent = _resolve_name_path('_DEX_AnnotationMember_noname.value.' +
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
60 repr(key))
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
61 assert isinstance(obj, dexfile.abs_value)
58
c2a4921ec83b Fix issue misbehavior for dependency when update_offset()
Thinker K.F. Li <thinker@codemud.net>
parents: 57
diff changeset
62
c2a4921ec83b Fix issue misbehavior for dependency when update_offset()
Thinker K.F. Li <thinker@codemud.net>
parents: 57
diff changeset
63 obj, parent = _resolve_name_path('_DEX_AnnotationSetItem.annotationOffs.'
c2a4921ec83b Fix issue misbehavior for dependency when update_offset()
Thinker K.F. Li <thinker@codemud.net>
parents: 57
diff changeset
64 'items.0')
c2a4921ec83b Fix issue misbehavior for dependency when update_offset()
Thinker K.F. Li <thinker@codemud.net>
parents: 57
diff changeset
65 assert isinstance(obj, dexfile.depend_off)
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
66 pass
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
67
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
68
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
69 def find_dep_decls_from_clazz_test():
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
70 from paraspace.dex_deptracker import _find_dep_decls_from_clazz
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
71
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
72 dex_types = dict([(dex_type_name, getattr(dexfile, dex_type_name))
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
73 for dex_type_name in dir(dexfile)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
74 if dex_type_name.startswith('_DEX_')])
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
75 deps = _find_dep_decls_from_clazz('_DEX_ProtoId', dexfile._DEX_ProtoId,
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
76 dex_types)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
77 assert len(deps) == 3
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
78 assert '_DEX_ProtoId.shortyIdx' in deps
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
79 assert deps['_DEX_ProtoId.shortyIdx'][0] == dexfile.depend_idx
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
80 assert deps['_DEX_ProtoId.shortyIdx'][1] == 'DEXFile.stringIds'
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
81
41
c5cfc796af8b Use value_ref & cond in dexfile.py to avoid 0 offset value
Thinker K.F. Li <thinker@codemud.net>
parents: 40
diff changeset
82 assert deps['_DEX_ProtoId.parametersOffRef.value'][1] == '_DEX_TypeList'
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
83 pass
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
84
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
85
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
86 def find_dep_decls_from_clazz__array_test():
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
87 from paraspace.dex_deptracker import _find_dep_decls_from_clazz
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
88
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
89 dex_types = dict([(dex_type_name, getattr(dexfile, dex_type_name))
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
90 for dex_type_name in dir(dexfile)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
91 if dex_type_name.startswith('_DEX_')])
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
92 deps = _find_dep_decls_from_clazz('_DEX_AnnotationSetItem',
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
93 dexfile._DEX_AnnotationSetItem,
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
94 dex_types)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
95 assert len(deps) == 1
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
96 name_path = '_DEX_AnnotationSetItem.annotationOffs.items.*'
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
97 assert name_path in deps
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
98 assert deps[name_path][0] == dexfile.depend_off
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
99 assert deps[name_path][1] == '_DEX_AnnotationItem'
20
265f39947b36 Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents: 16
diff changeset
100 pass
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
101
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
102
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
103 def travel_dex_relocatable__array_test():
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
104 from paraspace.dex_deptracker import _travel_dex_relocatable
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
105
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
106 srcdir = os.path.dirname(__file__)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
107 srcroot = os.path.join(srcdir, '..', '..')
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
108 testdatapath = os.path.join(srcroot, 'data', 'testdata1.dex')
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
109 dex = dexfile.DEXFile.open(testdatapath)
40
0c0a659187c2 Use _objs_asso to define association between two set of items.
Thinker K.F. Li <thinker@codemud.net>
parents: 29
diff changeset
110 dexroot = dex.typeLists.items[0].value
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
111
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
112 itr = _travel_dex_relocatable(dexroot)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
113 pathes = [v[2] for v in itr]
117
2833c1337dc0 Fix testcase for travel_dex_relocatable()
Thinker K.F. Li <thinker@codemud.net>
parents: 104
diff changeset
114 assert len(pathes) == 6
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
115 assert '_DEX_TypeList' in pathes
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
116 assert '_DEX_TypeList.num' in pathes
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
117 assert '_DEX_TypeList.typeItems' in pathes
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
118 assert '_DEX_TypeList.typeItems.items' in pathes
117
2833c1337dc0 Fix testcase for travel_dex_relocatable()
Thinker K.F. Li <thinker@codemud.net>
parents: 104
diff changeset
119 assert '_DEX_TypeList_typeid' in pathes
2833c1337dc0 Fix testcase for travel_dex_relocatable()
Thinker K.F. Li <thinker@codemud.net>
parents: 104
diff changeset
120 assert '_DEX_TypeList_typeid.typeIdx' in pathes
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
121 pass
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
122
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
123
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
124 def _install_dexfile_4_deptracker():
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
125 global dexfile
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
126 import imp
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
127 from paraspace import dex_deptracker
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
128
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
129 try:
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
130 new_dexfile = imp.load_compiled('dexfile', dexfile.__file__)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
131 except ImportError:
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
132 new_dexfile = imp.load_source('dexfile', dexfile.__file__)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
133 pass
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
134 dex_deptracker.dexfile = new_dexfile
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
135 dexfile = new_dexfile
28
5ce7ca1187b3 Pass throught markers for dex types
Thinker K.F. Li <thinker@codemud.net>
parents: 27
diff changeset
136 dex_deptracker._nest_types = (dexfile.array, dexfile.cond, dexfile.switch)
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
137 pass
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
138
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
139
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
140 def travel_dex_type_test():
27
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
141 from paraspace.dex_deptracker import collect_all_dep_decls
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
142 from paraspace.dex_deptracker import _install_markers
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
143 from paraspace.dex_deptracker import _travel_dex_type
27
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
144
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
145 _install_dexfile_4_deptracker()
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
146
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
147 attr_infos = [attr_info
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
148 for attr_info in \
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
149 _travel_dex_type(dexfile._DEX_AnnotationsDirectoryItem,
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
150 '_DEX_AnnotationsDirectoryItem')
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
151 ]
27
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
152 attr_names = set([attr_info[1]
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
153 for attr_info in attr_infos])
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
154 assert '_DEX_AnnotationsDirectoryItem.classAnnotationsOff' in attr_names
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
155 assert '_DEX_AnnotationsDirectoryItem.fieldsSize' in attr_names
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
156 assert '_DEX_AnnotationsDirectoryItem.methodsSize' in attr_names
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
157 assert '_DEX_AnnotationsDirectoryItem.parametersSize' in attr_names
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
158 assert '_DEX_AnnotationsDirectoryItem.fieldAnnotationsItems' in attr_names
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
159 assert '_DEX_AnnotationsDirectoryItem.fieldAnnotationsItems.items.*' in attr_names
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
160 assert '_DEX_AnnotationsDirectoryItem.methodAnnotationsItems' in attr_names
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
161 assert '_DEX_AnnotationsDirectoryItem.parameterAnnotationsItems' in attr_names
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
162
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
163 all_dep_decls = collect_all_dep_decls()
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
164 _install_markers(all_dep_decls)
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
165
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
166 attr_infos = [attr_info
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
167 for attr_info in \
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
168 _travel_dex_type(dexfile._DEX_AnnotationsDirectoryItem,
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
169 '_DEX_AnnotationsDirectoryItem')
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
170 ]
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
171 attr_names = set([attr_info[1]
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
172 for attr_info in attr_infos])
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
173 assert '_DEX_AnnotationsDirectoryItem.classAnnotationsOff' in attr_names
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
174 assert '_DEX_AnnotationsDirectoryItem.fieldsSize' in attr_names
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
175 assert '_DEX_AnnotationsDirectoryItem.methodsSize' in attr_names
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
176 assert '_DEX_AnnotationsDirectoryItem.parametersSize' in attr_names
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
177 assert '_DEX_AnnotationsDirectoryItem.fieldAnnotationsItems' in attr_names
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
178 assert '_DEX_AnnotationsDirectoryItem.fieldAnnotationsItems.items.*' in attr_names
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
179 assert '_DEX_AnnotationsDirectoryItem.methodAnnotationsItems' in attr_names
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
180 assert '_DEX_AnnotationsDirectoryItem.parameterAnnotationsItems' in attr_names
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
181 pass
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
182
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
183
29
b0cc5da28141 pass parents to travel info
Thinker K.F. Li <thinker@codemud.net>
parents: 28
diff changeset
184 def install_markers_test():
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
185 from paraspace.dex_deptracker import collect_all_dep_decls
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
186 from paraspace.dex_deptracker import _install_markers, _idx_marker
53
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
187 from paraspace.dex_deptracker import _marker
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
188 from paraspace.dex_deptracker import _offset_marker, _rel_offset_marker
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
189 from paraspace.dex_deptracker import _patch_dex_type_markers
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
190
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
191 _install_dexfile_4_deptracker()
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
192
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
193 all_dep_decls = collect_all_dep_decls()
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
194 _install_markers(all_dep_decls)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
195 assert isinstance(dexfile.DEXFile.typeIds, _idx_marker)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
196 assert isinstance(dexfile._DEX_Code.back_type.handlers_size,
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
197 _rel_offset_marker)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
198 assert dexfile._DEX_TypeList.__class__ == _offset_marker
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
199
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
200 _patch_dex_type_markers(all_dep_decls)
27
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
201 assert isinstance(dexfile._DEX_TypeList, _offset_marker)
40
0c0a659187c2 Use _objs_asso to define association between two set of items.
Thinker K.F. Li <thinker@codemud.net>
parents: 29
diff changeset
202 assert isinstance(dexfile.DEXFile.typeLists.child_type.value,
0c0a659187c2 Use _objs_asso to define association between two set of items.
Thinker K.F. Li <thinker@codemud.net>
parents: 29
diff changeset
203 _offset_marker)
53
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
204 assert isinstance(dexfile._DEX_Catch, _marker)
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
205 pass
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
206
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
207
29
b0cc5da28141 pass parents to travel info
Thinker K.F. Li <thinker@codemud.net>
parents: 28
diff changeset
208 def link_dependencies_test():
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
209 from paraspace.dex_deptracker import collect_all_dep_decls
42
8ca4a6bc6b79 Extract to dex_deptracker.build_dependencies
Thinker K.F. Li <thinker@codemud.net>
parents: 41
diff changeset
210 from paraspace.dex_deptracker import build_dependencies
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
211 from paraspace.dex_deptracker import _install_markers, _idx_marker
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
212 from paraspace.dex_deptracker import _offset_marker, _rel_offset_marker
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
213 from paraspace.dex_deptracker import _patch_dex_type_markers
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
214
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
215 _install_dexfile_4_deptracker()
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
216
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
217 all_dep_decls = collect_all_dep_decls()
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
218 _install_markers(all_dep_decls)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
219 assert isinstance(dexfile.DEXFile.typeIds, _idx_marker)
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
220 _patch_dex_type_markers(all_dep_decls)
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
221
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
222 srcdir = os.path.dirname(__file__)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
223 srcroot = os.path.join(srcdir, '..', '..')
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
224 testdatapath = os.path.join(srcroot, 'data', 'testdata1.dex')
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
225 dex = dexfile.DEXFile.open(testdatapath)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
226
42
8ca4a6bc6b79 Extract to dex_deptracker.build_dependencies
Thinker K.F. Li <thinker@codemud.net>
parents: 41
diff changeset
227 build_dependencies(dex, all_dep_decls)
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
228
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
229 code_item = dex.codeItems.items[0]
41
c5cfc796af8b Use value_ref & cond in dexfile.py to avoid 0 offset value
Thinker K.F. Li <thinker@codemud.net>
parents: 40
diff changeset
230 assert code_item.debugInfoOff.__class__.__name__ == '_DEX_DebugInfoItem'
58
c2a4921ec83b Fix issue misbehavior for dependency when update_offset()
Thinker K.F. Li <thinker@codemud.net>
parents: 57
diff changeset
231
c2a4921ec83b Fix issue misbehavior for dependency when update_offset()
Thinker K.F. Li <thinker@codemud.net>
parents: 57
diff changeset
232 stringid = dex.stringIds.items[0]
c2a4921ec83b Fix issue misbehavior for dependency when update_offset()
Thinker K.F. Li <thinker@codemud.net>
parents: 57
diff changeset
233 assert isinstance(stringid.stringDataOff, dexfile._DEX_StringDataItem)
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
234 pass
43
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
235
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
236
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
237 def link_dependencies_cond_value_ref_test():
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
238 from paraspace.dex_deptracker import collect_all_dep_decls
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
239 from paraspace.dex_deptracker import build_dependencies
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
240 from paraspace.dex_deptracker import _install_markers, _idx_marker
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
241 from paraspace.dex_deptracker import _patch_dex_type_markers
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
242
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
243 _install_dexfile_4_deptracker()
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
244
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
245 all_dep_decls = collect_all_dep_decls()
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
246 _install_markers(all_dep_decls)
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
247 assert isinstance(dexfile.DEXFile.typeIds, _idx_marker)
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
248 _patch_dex_type_markers(all_dep_decls)
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
249
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
250 srcdir = os.path.dirname(__file__)
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
251 srcroot = os.path.join(srcdir, '..', '..')
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
252 testdatapath = os.path.join(srcroot, 'data', 'testdata1.dex')
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
253 dex = dexfile.DEXFile.open(testdatapath)
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
254
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
255 build_dependencies(dex, all_dep_decls)
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
256
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
257 code_item = dex.codeItems.items[0]
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
258 assert code_item.debugInfoOff.__class__.__name__ == '_DEX_DebugInfoItem'
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
259
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
260 anno_dir_item = dex.annotationsDirectoryItems.items[0]
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
261 assert isinstance(anno_dir_item.classAnnotationsOffRef.value,
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
262 dexfile._DEX_AnnotationSetItem)
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
263
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
264 anno_dir_item = dex.annotationsDirectoryItems.items[1]
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
265 assert isinstance(anno_dir_item.classAnnotationsOffRef.value,
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
266 dexfile._DEX_AnnotationSetItem)
44
8fc294b06e22 More testcase for combination of cond and value_ref
Thinker K.F. Li <thinker@codemud.net>
parents: 43
diff changeset
267
8fc294b06e22 More testcase for combination of cond and value_ref
Thinker K.F. Li <thinker@codemud.net>
parents: 43
diff changeset
268 clazz_def = dex.classDefs.items[1]
8fc294b06e22 More testcase for combination of cond and value_ref
Thinker K.F. Li <thinker@codemud.net>
parents: 43
diff changeset
269 assert isinstance(clazz_def.annotationsOffRef.value,
8fc294b06e22 More testcase for combination of cond and value_ref
Thinker K.F. Li <thinker@codemud.net>
parents: 43
diff changeset
270 dexfile._DEX_AnnotationsDirectoryItem)
43
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
271 pass
53
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
272
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
273
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
274 def update_offset_test():
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
275 from paraspace.dex_deptracker import collect_all_dep_decls
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
276 from paraspace.dex_deptracker import build_dependencies
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
277 from paraspace.dex_deptracker import _install_markers
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
278 from paraspace.dex_deptracker import _patch_dex_type_markers
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
279 from paraspace.dex_deptracker import update_offset
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
280
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
281 _install_dexfile_4_deptracker()
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
282
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
283 all_dep_decls = collect_all_dep_decls()
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
284 _install_markers(all_dep_decls)
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
285 _patch_dex_type_markers(all_dep_decls)
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
286
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
287 srcdir = os.path.dirname(__file__)
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
288 srcroot = os.path.join(srcdir, '..', '..')
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
289 testdatapath = os.path.join(srcroot, 'data', 'testdata1.dex')
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
290 dex = dexfile.DEXFile.open(testdatapath)
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
291
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
292 build_dependencies(dex, all_dep_decls)
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
293
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
294 offset0 = dex.typeLists.items[0].value.data_offset
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
295 dex.typeLists.items[0].value.data_offset = 0
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
296 offset1 = dex.typeLists.items[1].value.data_offset
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
297 dex.typeLists.items[1].value.data_offset = 0
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
298
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
299 update_offset(dex, all_dep_decls)
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
300
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
301 assert dex.typeLists.items[0].value.data_offset == offset0
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
302 assert dex.typeLists.items[1].value.data_offset == offset1
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
303 pass
60
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
304
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
305
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
306 def restore_dependencies_test():
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
307 from paraspace.dex_deptracker import collect_all_dep_decls
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
308 from paraspace.dex_deptracker import build_dependencies
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
309 from paraspace.dex_deptracker import _install_markers
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
310 from paraspace.dex_deptracker import _patch_dex_type_markers
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
311 from paraspace.dex_deptracker import restore_dependencies
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
312
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
313 _install_dexfile_4_deptracker()
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
314
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
315 all_dep_decls = collect_all_dep_decls()
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
316 _install_markers(all_dep_decls)
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
317 _patch_dex_type_markers(all_dep_decls)
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
318
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
319 srcdir = os.path.dirname(__file__)
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
320 srcroot = os.path.join(srcdir, '..', '..')
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
321 testdatapath = os.path.join(srcroot, 'data', 'testdata1.dex')
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
322 dex = dexfile.DEXFile.open(testdatapath)
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
323
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
324 build_dependencies(dex, all_dep_decls)
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
325
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
326 restore_dependencies(dex, all_dep_decls)
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
327
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
328 stringid = dex.stringIds.items[0]
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
329 assert isinstance(stringid.stringDataOff, int)
61
3e34c7d33182 Fix and test restore_depedencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 60
diff changeset
330 stringid = dex.stringIds.items[5]
3e34c7d33182 Fix and test restore_depedencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 60
diff changeset
331 assert isinstance(stringid.stringDataOff, int)
3e34c7d33182 Fix and test restore_depedencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 60
diff changeset
332
3e34c7d33182 Fix and test restore_depedencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 60
diff changeset
333 codeitem = dex.codeItems.items[0]
3e34c7d33182 Fix and test restore_depedencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 60
diff changeset
334 assert isinstance(codeitem.debugInfoOff, int)
60
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
335 pass
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
336
62
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
337
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
338 def dextype_to_str_test():
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
339 from paraspace.dex_deptracker import collect_all_dep_decls
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
340 from paraspace.dex_deptracker import build_dependencies
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
341 from paraspace.dex_deptracker import _install_markers
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
342 from paraspace.dex_deptracker import _patch_dex_type_markers
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
343 from paraspace.dex_deptracker import restore_dependencies
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
344
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
345 _install_dexfile_4_deptracker()
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
346
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
347 all_dep_decls = collect_all_dep_decls()
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
348 _install_markers(all_dep_decls)
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
349 _patch_dex_type_markers(all_dep_decls)
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
350
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
351 srcdir = os.path.dirname(__file__)
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
352 srcroot = os.path.join(srcdir, '..', '..')
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
353 testdatapath = os.path.join(srcroot, 'data', 'testdata1.dex')
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
354 dex = dexfile.DEXFile.open(testdatapath)
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
355
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
356 dex_raw = dex.to_str()
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
357 file_raw = file(testdatapath, 'r').read()
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
358 assert dex_raw == file_raw
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
359 pass
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
360
67
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
361
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
362 def header_checksum_test():
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
363 from paraspace.dex_deptracker import collect_all_dep_decls
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
364
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
365 _install_dexfile_4_deptracker()
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
366
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
367 all_dep_decls = collect_all_dep_decls()
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
368
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
369 srcdir = os.path.dirname(__file__)
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
370 srcroot = os.path.join(srcdir, '..', '..')
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
371 testdatapath = os.path.join(srcroot, 'data', 'testdata1.dex')
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
372 dex = dexfile.DEXFile.open(testdatapath)
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
373
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
374 saved_checksum = dex.header.checksum
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
375 dex.make_checksum()
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
376 # assert dex.header.checksum == saved_checksum
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
377 assert dex.header.checksum == 0xc5efe529
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
378 pass
102
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
379
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
380
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
381 def find_method_name_test():
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
382 from paraspace.dex_deptracker import prepare_dep_decls
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
383
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
384 _install_dexfile_4_deptracker()
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
385
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
386 all_dep_decls = prepare_dep_decls()
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
387
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
388 srcdir = os.path.dirname(__file__)
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
389 srcroot = os.path.join(srcdir, '..', '..')
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
390
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
391 fakefile_fn = os.path.join(srcroot, 'data', 'fakefile.dex')
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
392 fakefile_dex = dexfile.DEXFile.open(fakefile_fn)
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
393 fakefile_linked = \
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
394 dexfile.DEXFile_linked. \
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
395 build_dependencies(fakefile_dex, all_dep_decls)
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
396
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
397 fakefile_def = fakefile_linked. \
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
398 find_class_name('Lcom/codemud/fakefile/fakefile;')
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
399 fakefile_cstr = fakefile_linked.find_method_name('<init>', fakefile_def)
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
400 assert fakefile_cstr
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
401
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
402 method_name = dexfile.DEXFile_linked.get_method_name(fakefile_cstr)
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
403 assert method_name == '<init>'
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
404 pass
104
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
405
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
406
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
407 def find_typeid_test():
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
408 from paraspace.dex_deptracker import prepare_dep_decls
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
409
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
410 _install_dexfile_4_deptracker()
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
411
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
412 all_dep_decls = prepare_dep_decls()
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
413
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
414 srcdir = os.path.dirname(__file__)
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
415 srcroot = os.path.join(srcdir, '..', '..')
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
416
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
417 fakefile_fn = os.path.join(srcroot, 'data', 'fakefile.dex')
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
418 fakefile_dex = dexfile.DEXFile.open(fakefile_fn)
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
419 fakefile_linked = \
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
420 dexfile.DEXFile_linked. \
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
421 build_dependencies(fakefile_dex, all_dep_decls)
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
422
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
423 File_typeid = fakefile_linked.find_typeid_name('Ljava/io/File;')
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
424 assert File_typeid
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
425
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
426 File_name = dexfile.DEXFile_linked.get_typeid_name(File_typeid)
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
427 assert File_name == 'Ljava/io/File;'
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
428
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
429 idx = fakefile_linked.get_idx_typeid(File_typeid)
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
430 assert idx >= 0
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
431 File_typeid_idx = fakefile_linked.find_typeid_idx(idx)
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
432 assert File_typeid == File_typeid_idx
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
433 pass