Mercurial > paraspace
comparison paraspace/tests/dexfile_test.py @ 53:705356005362
Fix bug of install marker through ref
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Wed, 22 Jun 2011 20:22:03 +0800 |
parents | 8fc294b06e22 |
children | 6e4cf6905729 |
comparison
equal
deleted
inserted
replaced
52:67aa8ca8fff3 | 53:705356005362 |
---|---|
35 assert deps['_DEX_ClassDef.staticValuesOffRef.value'][0] == \ | 35 assert deps['_DEX_ClassDef.staticValuesOffRef.value'][0] == \ |
36 dexfile.depend_off | 36 dexfile.depend_off |
37 assert deps['_DEX_ClassDef.staticValuesOffRef.value'][1] == \ | 37 assert deps['_DEX_ClassDef.staticValuesOffRef.value'][1] == \ |
38 '_DEX_EncodedArrayItem' | 38 '_DEX_EncodedArrayItem' |
39 assert deps['_DEX_Try.handlerOff'][0] == dexfile.depend_off_rel | 39 assert deps['_DEX_Try.handlerOff'][0] == dexfile.depend_off_rel |
40 assert deps['_DEX_Try.handlerOff'][1] == '_DEX_Try.catch_ref.target' | 40 assert deps['_DEX_Try.handlerOff'][1] == '_DEX_Try.catch_ref' |
41 assert deps['_DEX_Try.handlerOff'][2] == '_DEX_Code.handlers_size' | 41 assert deps['_DEX_Try.handlerOff'][2] == '_DEX_Code.handlers_size' |
42 pass | 42 pass |
43 | 43 |
44 | 44 |
45 def resolve_name_path_test(): | 45 def resolve_name_path_test(): |
177 | 177 |
178 | 178 |
179 def install_markers_test(): | 179 def install_markers_test(): |
180 from paraspace.dex_deptracker import collect_all_dep_decls | 180 from paraspace.dex_deptracker import collect_all_dep_decls |
181 from paraspace.dex_deptracker import _install_markers, _idx_marker | 181 from paraspace.dex_deptracker import _install_markers, _idx_marker |
182 from paraspace.dex_deptracker import _marker | |
182 from paraspace.dex_deptracker import _offset_marker, _rel_offset_marker | 183 from paraspace.dex_deptracker import _offset_marker, _rel_offset_marker |
183 from paraspace.dex_deptracker import _patch_dex_type_markers | 184 from paraspace.dex_deptracker import _patch_dex_type_markers |
184 | 185 |
185 _install_dexfile_4_deptracker() | 186 _install_dexfile_4_deptracker() |
186 | 187 |
193 | 194 |
194 _patch_dex_type_markers(all_dep_decls) | 195 _patch_dex_type_markers(all_dep_decls) |
195 assert isinstance(dexfile._DEX_TypeList, _offset_marker) | 196 assert isinstance(dexfile._DEX_TypeList, _offset_marker) |
196 assert isinstance(dexfile.DEXFile.typeLists.child_type.value, | 197 assert isinstance(dexfile.DEXFile.typeLists.child_type.value, |
197 _offset_marker) | 198 _offset_marker) |
199 assert isinstance(dexfile._DEX_Catch, _marker) | |
198 pass | 200 pass |
199 | 201 |
200 | 202 |
201 def link_dependencies_test(): | 203 def link_dependencies_test(): |
202 from paraspace.dex_deptracker import collect_all_dep_decls | 204 from paraspace.dex_deptracker import collect_all_dep_decls |
226 | 228 |
227 def link_dependencies_cond_value_ref_test(): | 229 def link_dependencies_cond_value_ref_test(): |
228 from paraspace.dex_deptracker import collect_all_dep_decls | 230 from paraspace.dex_deptracker import collect_all_dep_decls |
229 from paraspace.dex_deptracker import build_dependencies | 231 from paraspace.dex_deptracker import build_dependencies |
230 from paraspace.dex_deptracker import _install_markers, _idx_marker | 232 from paraspace.dex_deptracker import _install_markers, _idx_marker |
231 from paraspace.dex_deptracker import _offset_marker, _rel_offset_marker | |
232 from paraspace.dex_deptracker import _patch_dex_type_markers | 233 from paraspace.dex_deptracker import _patch_dex_type_markers |
233 | 234 |
234 _install_dexfile_4_deptracker() | 235 _install_dexfile_4_deptracker() |
235 | 236 |
236 all_dep_decls = collect_all_dep_decls() | 237 all_dep_decls = collect_all_dep_decls() |
258 | 259 |
259 clazz_def = dex.classDefs.items[1] | 260 clazz_def = dex.classDefs.items[1] |
260 assert isinstance(clazz_def.annotationsOffRef.value, | 261 assert isinstance(clazz_def.annotationsOffRef.value, |
261 dexfile._DEX_AnnotationsDirectoryItem) | 262 dexfile._DEX_AnnotationsDirectoryItem) |
262 pass | 263 pass |
264 | |
265 | |
266 def update_offset_test(): | |
267 from paraspace.dex_deptracker import collect_all_dep_decls | |
268 from paraspace.dex_deptracker import build_dependencies | |
269 from paraspace.dex_deptracker import _install_markers | |
270 from paraspace.dex_deptracker import _patch_dex_type_markers | |
271 from paraspace.dex_deptracker import update_offset | |
272 | |
273 _install_dexfile_4_deptracker() | |
274 | |
275 all_dep_decls = collect_all_dep_decls() | |
276 _install_markers(all_dep_decls) | |
277 _patch_dex_type_markers(all_dep_decls) | |
278 | |
279 srcdir = os.path.dirname(__file__) | |
280 srcroot = os.path.join(srcdir, '..', '..') | |
281 testdatapath = os.path.join(srcroot, 'data', 'testdata1.dex') | |
282 dex = dexfile.DEXFile.open(testdatapath) | |
283 | |
284 build_dependencies(dex, all_dep_decls) | |
285 | |
286 offset0 = dex.typeLists.items[0].value.data_offset | |
287 dex.typeLists.items[0].value.data_offset = 0 | |
288 offset1 = dex.typeLists.items[1].value.data_offset | |
289 dex.typeLists.items[1].value.data_offset = 0 | |
290 | |
291 update_offset(dex, all_dep_decls) | |
292 | |
293 print dex.typeLists.items[0].value.data_offset | |
294 assert dex.typeLists.items[0].value.data_offset == offset0 | |
295 assert dex.typeLists.items[1].value.data_offset == offset1 | |
296 pass |