annotate paraspace/tests/dexfile_test.py @ 126:ff6f869273b7

Fix wrong init value for computing checksum
author Thinker K.F. Li <thinker@codemud.net>
date Mon, 08 Aug 2011 17:26:05 +0800
parents 8e42b2816893
children 75a31967ebee
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
122
6e4b6414789b Call _install_dexfile_4_deptracker() to make sure testcase right
Thinker K.F. Li <thinker@codemud.net>
parents: 117
diff changeset
30 _install_dexfile_4_deptracker()
6e4b6414789b Call _install_dexfile_4_deptracker() to make sure testcase right
Thinker K.F. Li <thinker@codemud.net>
parents: 117
diff changeset
31
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
32 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
33 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
34 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
35 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
36 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
37 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
38 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
39 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
40 '_DEX_EncodedArrayItem'
20
265f39947b36 Unit test for dependencies of dexfile.py
Thinker K.F. Li <thinker@codemud.net>
parents: 16
diff changeset
41 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
42 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
43 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
44 pass
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
45
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
46
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
47 def resolve_name_path_test():
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
48 from paraspace.dex_deptracker import _resolve_name_path
122
6e4b6414789b Call _install_dexfile_4_deptracker() to make sure testcase right
Thinker K.F. Li <thinker@codemud.net>
parents: 117
diff changeset
49
25
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 == list
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.*')
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 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
55 assert obj == dexfile._DEX_Field
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
56
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
57 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
58 assert obj == dexfile._DEX_CatchAllHandler
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
59
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
60 key = dexfile._DEX_AnnotationMember_noname.kDexAnnotationNull
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
61 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
62 repr(key))
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
63 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
64
c2a4921ec83b Fix issue misbehavior for dependency when update_offset()
Thinker K.F. Li <thinker@codemud.net>
parents: 57
diff changeset
65 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
66 'items.0')
c2a4921ec83b Fix issue misbehavior for dependency when update_offset()
Thinker K.F. Li <thinker@codemud.net>
parents: 57
diff changeset
67 assert isinstance(obj, dexfile.depend_off)
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
68 pass
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
69
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
70
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
71 def find_dep_decls_from_clazz_test():
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
72 from paraspace.dex_deptracker import _find_dep_decls_from_clazz
122
6e4b6414789b Call _install_dexfile_4_deptracker() to make sure testcase right
Thinker K.F. Li <thinker@codemud.net>
parents: 117
diff changeset
73
6e4b6414789b Call _install_dexfile_4_deptracker() to make sure testcase right
Thinker K.F. Li <thinker@codemud.net>
parents: 117
diff changeset
74 _install_dexfile_4_deptracker()
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
75
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
76 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
77 for dex_type_name in dir(dexfile)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
78 if dex_type_name.startswith('_DEX_')])
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
79 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
80 dex_types)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
81 assert len(deps) == 3
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
82 assert '_DEX_ProtoId.shortyIdx' in deps
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
83 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
84 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
85
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
86 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
87 pass
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
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
90 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
91 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
92
122
6e4b6414789b Call _install_dexfile_4_deptracker() to make sure testcase right
Thinker K.F. Li <thinker@codemud.net>
parents: 117
diff changeset
93 _install_dexfile_4_deptracker()
6e4b6414789b Call _install_dexfile_4_deptracker() to make sure testcase right
Thinker K.F. Li <thinker@codemud.net>
parents: 117
diff changeset
94
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
95 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
96 for dex_type_name in dir(dexfile)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
97 if dex_type_name.startswith('_DEX_')])
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
98 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
99 dexfile._DEX_AnnotationSetItem,
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
100 dex_types)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
101 assert len(deps) == 1
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
102 name_path = '_DEX_AnnotationSetItem.annotationOffs.items.*'
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
103 assert name_path in deps
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
104 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
105 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
106 pass
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
107
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
108
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
109 def travel_dex_relocatable__array_test():
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
110 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
111
122
6e4b6414789b Call _install_dexfile_4_deptracker() to make sure testcase right
Thinker K.F. Li <thinker@codemud.net>
parents: 117
diff changeset
112 _install_dexfile_4_deptracker()
6e4b6414789b Call _install_dexfile_4_deptracker() to make sure testcase right
Thinker K.F. Li <thinker@codemud.net>
parents: 117
diff changeset
113
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
114 srcdir = os.path.dirname(__file__)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
115 srcroot = os.path.join(srcdir, '..', '..')
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
116 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
117 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
118 dexroot = dex.typeLists.items[0].value
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
119
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
120 itr = _travel_dex_relocatable(dexroot)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
121 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
122 assert len(pathes) == 6
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
123 assert '_DEX_TypeList' in pathes
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
124 assert '_DEX_TypeList.num' in pathes
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
125 assert '_DEX_TypeList.typeItems' in pathes
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
126 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
127 assert '_DEX_TypeList_typeid' in pathes
2833c1337dc0 Fix testcase for travel_dex_relocatable()
Thinker K.F. Li <thinker@codemud.net>
parents: 104
diff changeset
128 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
129 pass
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
130
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
131
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
132 def _install_dexfile_4_deptracker():
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
133 global dexfile
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
134 import imp
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
135 from paraspace import dex_deptracker
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
136
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
137 try:
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
138 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
139 except ImportError:
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
140 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
141 pass
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
142 dex_deptracker.dexfile = new_dexfile
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
143 dexfile = new_dexfile
28
5ce7ca1187b3 Pass throught markers for dex types
Thinker K.F. Li <thinker@codemud.net>
parents: 27
diff changeset
144 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
145 pass
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
146
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
147
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
148 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
149 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
150 from paraspace.dex_deptracker import _install_markers
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
151 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
152
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
153 _install_dexfile_4_deptracker()
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
154
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
155 attr_infos = [attr_info
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
156 for attr_info in \
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
157 _travel_dex_type(dexfile._DEX_AnnotationsDirectoryItem,
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
158 '_DEX_AnnotationsDirectoryItem')
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
159 ]
27
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
160 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
161 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
162 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
163 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
164 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
165 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
166 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
167 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
168 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
169 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
170
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
171 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
172 _install_markers(all_dep_decls)
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
173
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
174 attr_infos = [attr_info
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
175 for attr_info in \
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
176 _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
177 '_DEX_AnnotationsDirectoryItem')
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
178 ]
15cb829ac442 travel_dex_type() recoganizes _dex_type correctly
Thinker K.F. Li <thinker@codemud.net>
parents: 26
diff changeset
179 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
180 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
181 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
182 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
183 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
184 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
185 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
186 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
187 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
188 assert '_DEX_AnnotationsDirectoryItem.parameterAnnotationsItems' in attr_names
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
189 pass
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
190
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
191
29
b0cc5da28141 pass parents to travel info
Thinker K.F. Li <thinker@codemud.net>
parents: 28
diff changeset
192 def install_markers_test():
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
193 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
194 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
195 from paraspace.dex_deptracker import _marker
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
196 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
197 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
198
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
199 _install_dexfile_4_deptracker()
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
200
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
201 all_dep_decls = collect_all_dep_decls()
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
202 _install_markers(all_dep_decls)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
203 assert isinstance(dexfile.DEXFile.typeIds, _idx_marker)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
204 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
205 _rel_offset_marker)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
206 assert dexfile._DEX_TypeList.__class__ == _offset_marker
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
207
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
208 _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
209 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
210 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
211 _offset_marker)
53
705356005362 Fix bug of install marker through ref
Thinker K.F. Li <thinker@codemud.net>
parents: 44
diff changeset
212 assert isinstance(dexfile._DEX_Catch, _marker)
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
213 pass
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
214
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
215
29
b0cc5da28141 pass parents to travel info
Thinker K.F. Li <thinker@codemud.net>
parents: 28
diff changeset
216 def link_dependencies_test():
25
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
217 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
218 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
219 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
220 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
221 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
222
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
223 _install_dexfile_4_deptracker()
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
224
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
225 all_dep_decls = collect_all_dep_decls()
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
226 _install_markers(all_dep_decls)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
227 assert isinstance(dexfile.DEXFile.typeIds, _idx_marker)
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
228 _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
229
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
230 srcdir = os.path.dirname(__file__)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
231 srcroot = os.path.join(srcdir, '..', '..')
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
232 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
233 dex = dexfile.DEXFile.open(testdatapath)
670167ed06bb test dex_deptracker._link_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 23
diff changeset
234
42
8ca4a6bc6b79 Extract to dex_deptracker.build_dependencies
Thinker K.F. Li <thinker@codemud.net>
parents: 41
diff changeset
235 build_dependencies(dex, all_dep_decls)
26
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
236
b30a0d29a62f Debugging _travel_dex_type
Thinker K.F. Li <thinker@codemud.net>
parents: 25
diff changeset
237 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
238 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
239
c2a4921ec83b Fix issue misbehavior for dependency when update_offset()
Thinker K.F. Li <thinker@codemud.net>
parents: 57
diff changeset
240 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
241 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
242 pass
43
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
243
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 def link_dependencies_cond_value_ref_test():
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
246 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
247 from paraspace.dex_deptracker import build_dependencies
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
248 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
249 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
250
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
251 _install_dexfile_4_deptracker()
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
252
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
253 all_dep_decls = collect_all_dep_decls()
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
254 _install_markers(all_dep_decls)
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
255 assert isinstance(dexfile.DEXFile.typeIds, _idx_marker)
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
256 _patch_dex_type_markers(all_dep_decls)
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
257
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
258 srcdir = os.path.dirname(__file__)
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
259 srcroot = os.path.join(srcdir, '..', '..')
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
260 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
261 dex = dexfile.DEXFile.open(testdatapath)
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
262
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
263 build_dependencies(dex, all_dep_decls)
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
264
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
265 code_item = dex.codeItems.items[0]
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
266 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
267
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
268 anno_dir_item = dex.annotationsDirectoryItems.items[0]
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
269 assert isinstance(anno_dir_item.classAnnotationsOffRef.value,
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
270 dexfile._DEX_AnnotationSetItem)
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
271
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
272 anno_dir_item = dex.annotationsDirectoryItems.items[1]
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
273 assert isinstance(anno_dir_item.classAnnotationsOffRef.value,
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
274 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
275
8fc294b06e22 More testcase for combination of cond and value_ref
Thinker K.F. Li <thinker@codemud.net>
parents: 43
diff changeset
276 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
277 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
278 dexfile._DEX_AnnotationsDirectoryItem)
43
5cea19126a11 Fix issue of _build_refs()
Thinker K.F. Li <thinker@codemud.net>
parents: 42
diff changeset
279 pass
53
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
60
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
282 def restore_dependencies_test():
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
283 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
284 from paraspace.dex_deptracker import build_dependencies
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
285 from paraspace.dex_deptracker import _install_markers
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
286 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
287 from paraspace.dex_deptracker import restore_dependencies
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
288
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
289 _install_dexfile_4_deptracker()
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
290
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
291 all_dep_decls = collect_all_dep_decls()
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
292 _install_markers(all_dep_decls)
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
293 _patch_dex_type_markers(all_dep_decls)
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
294
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
295 srcdir = os.path.dirname(__file__)
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
296 srcroot = os.path.join(srcdir, '..', '..')
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
297 testdatapath = os.path.join(srcroot, 'data', 'testdata1.dex')
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
298 dex = dexfile.DEXFile.open(testdatapath)
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
299
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
300 build_dependencies(dex, all_dep_decls)
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
301
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
302 restore_dependencies(dex, all_dep_decls)
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
303
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
304 stringid = dex.stringIds.items[0]
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
305 assert isinstance(stringid.stringDataOff, int)
61
3e34c7d33182 Fix and test restore_depedencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 60
diff changeset
306 stringid = dex.stringIds.items[5]
3e34c7d33182 Fix and test restore_depedencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 60
diff changeset
307 assert isinstance(stringid.stringDataOff, int)
3e34c7d33182 Fix and test restore_depedencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 60
diff changeset
308
3e34c7d33182 Fix and test restore_depedencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 60
diff changeset
309 codeitem = dex.codeItems.items[0]
3e34c7d33182 Fix and test restore_depedencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 60
diff changeset
310 assert isinstance(codeitem.debugInfoOff, int)
60
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
311 pass
f295d82646e0 testcase for restore_dependencies()
Thinker K.F. Li <thinker@codemud.net>
parents: 59
diff changeset
312
62
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
313
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
314 def dextype_to_str_test():
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
315 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
316 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
317 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
318 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
319 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
320
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
321 _install_dexfile_4_deptracker()
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
322
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
323 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
324 _install_markers(all_dep_decls)
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
325 _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
326
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
327 srcdir = os.path.dirname(__file__)
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
328 srcroot = os.path.join(srcdir, '..', '..')
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
329 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
330 dex = dexfile.DEXFile.open(testdatapath)
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
331
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
332 dex_raw = dex.to_str()
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
333 file_raw = file(testdatapath, 'r').read()
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
334 assert dex_raw == file_raw
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
335 pass
8a1844afb76a Testcase for _dex_type.to_str()
Thinker K.F. Li <thinker@codemud.net>
parents: 61
diff changeset
336
67
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
337
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
338 def header_checksum_test():
126
ff6f869273b7 Fix wrong init value for computing checksum
Thinker K.F. Li <thinker@codemud.net>
parents: 124
diff changeset
339 from paraspace.dex_deptracker import collect_all_dep_decls, update_offset
67
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
340
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
341 _install_dexfile_4_deptracker()
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
342
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
343 all_dep_decls = collect_all_dep_decls()
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
344
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
345 srcdir = os.path.dirname(__file__)
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
346 srcroot = os.path.join(srcdir, '..', '..')
126
ff6f869273b7 Fix wrong init value for computing checksum
Thinker K.F. Li <thinker@codemud.net>
parents: 124
diff changeset
347 testdatapath = os.path.join(srcroot, 'data', 'helloworld.dex')
67
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
348 dex = dexfile.DEXFile.open(testdatapath)
126
ff6f869273b7 Fix wrong init value for computing checksum
Thinker K.F. Li <thinker@codemud.net>
parents: 124
diff changeset
349 dex.maps.padding = 1
ff6f869273b7 Fix wrong init value for computing checksum
Thinker K.F. Li <thinker@codemud.net>
parents: 124
diff changeset
350
ff6f869273b7 Fix wrong init value for computing checksum
Thinker K.F. Li <thinker@codemud.net>
parents: 124
diff changeset
351 saved_signature = dex.header.signature.data
ff6f869273b7 Fix wrong init value for computing checksum
Thinker K.F. Li <thinker@codemud.net>
parents: 124
diff changeset
352 dex.make_signature()
ff6f869273b7 Fix wrong init value for computing checksum
Thinker K.F. Li <thinker@codemud.net>
parents: 124
diff changeset
353 assert dex.header.signature.data == saved_signature
ff6f869273b7 Fix wrong init value for computing checksum
Thinker K.F. Li <thinker@codemud.net>
parents: 124
diff changeset
354
67
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
355 saved_checksum = dex.header.checksum
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
356 dex.make_checksum()
126
ff6f869273b7 Fix wrong init value for computing checksum
Thinker K.F. Li <thinker@codemud.net>
parents: 124
diff changeset
357 assert dex.header.checksum == saved_checksum
67
9504ad530dbf Add DEXFile.make_checksum()
Thinker K.F. Li <thinker@codemud.net>
parents: 66
diff changeset
358 pass
102
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
359
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
360
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
361 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
362 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
363
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
364 _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
365
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
366 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
367
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
368 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
369 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
370
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
371 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
372 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
373 fakefile_linked = \
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
374 dexfile.DEXFile_linked. \
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
375 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
376
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
377 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
378 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
379 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
380 assert fakefile_cstr
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
381
7fcd555d802b Add the function for finding method with a name
Thinker K.F. Li <thinker@codemud.net>
parents: 67
diff changeset
382 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
383 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
384 pass
104
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
385
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
386
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
387 def find_typeid_test():
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
388 from paraspace.dex_deptracker import prepare_dep_decls
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
389
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
390 _install_dexfile_4_deptracker()
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
391
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
392 all_dep_decls = prepare_dep_decls()
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
393
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
394 srcdir = os.path.dirname(__file__)
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
395 srcroot = os.path.join(srcdir, '..', '..')
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
396
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
397 fakefile_fn = os.path.join(srcroot, 'data', 'fakefile.dex')
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
398 fakefile_dex = dexfile.DEXFile.open(fakefile_fn)
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
399 fakefile_linked = \
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
400 dexfile.DEXFile_linked. \
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
401 build_dependencies(fakefile_dex, all_dep_decls)
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
402
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
403 File_typeid = fakefile_linked.find_typeid_name('Ljava/io/File;')
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
404 assert File_typeid
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 File_name = dexfile.DEXFile_linked.get_typeid_name(File_typeid)
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
407 assert File_name == 'Ljava/io/File;'
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
408
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
409 idx = fakefile_linked.get_idx_typeid(File_typeid)
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
410 assert idx >= 0
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
411 File_typeid_idx = fakefile_linked.find_typeid_idx(idx)
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
412 assert File_typeid == File_typeid_idx
61cef1662035 Redirect types
Thinker K.F. Li <thinker@codemud.net>
parents: 102
diff changeset
413 pass