Mercurial > paraspace
comparison paraspace/tests/dexfile_test.py @ 137:987fead83ce3
Fix issue that dalvik complaining fail to verify code.
- Since order of typeId and methodId are changed, index values in
code block of methods are invalid after sorting sorted arrays.
- We add dex_sort_sorted_arrays_consistent() function as a wrapper
of dex_sort_sorted_arrays(). It remap indices mentioned in code
blocks after sorting.
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Wed, 10 Aug 2011 14:04:02 +0800 |
parents | 75a31967ebee |
children |
comparison
equal
deleted
inserted
replaced
136:f31bfe55d9c2 | 137:987fead83ce3 |
---|---|
61 obj, parent = _resolve_name_path('_DEX_AnnotationMember_noname.value.' + | 61 obj, parent = _resolve_name_path('_DEX_AnnotationMember_noname.value.' + |
62 repr(key)) | 62 repr(key)) |
63 assert isinstance(obj, dexfile.abs_value) | 63 assert isinstance(obj, dexfile.abs_value) |
64 | 64 |
65 obj, parent = _resolve_name_path('_DEX_AnnotationSetItem.annotationOffs.' | 65 obj, parent = _resolve_name_path('_DEX_AnnotationSetItem.annotationOffs.' |
66 'items.0') | 66 'items.0.offset') |
67 assert isinstance(obj, dexfile.depend_off) | 67 assert isinstance(obj, dexfile.depend_off) |
68 pass | 68 pass |
69 | 69 |
70 | 70 |
71 def find_dep_decls_from_clazz_test(): | 71 def find_dep_decls_from_clazz_test(): |
93 _install_dexfile_4_deptracker() | 93 _install_dexfile_4_deptracker() |
94 | 94 |
95 dex_types = dict([(dex_type_name, getattr(dexfile, dex_type_name)) | 95 dex_types = dict([(dex_type_name, getattr(dexfile, dex_type_name)) |
96 for dex_type_name in dir(dexfile) | 96 for dex_type_name in dir(dexfile) |
97 if dex_type_name.startswith('_DEX_')]) | 97 if dex_type_name.startswith('_DEX_')]) |
98 deps = _find_dep_decls_from_clazz('_DEX_AnnotationSetItem', | 98 deps = _find_dep_decls_from_clazz('_DEX_AnnotationSetItem_anno_item', |
99 dexfile._DEX_AnnotationSetItem, | 99 dexfile._DEX_AnnotationSetItem_anno_item, |
100 dex_types) | 100 dex_types) |
101 assert len(deps) == 1 | 101 assert len(deps) == 1 |
102 name_path = '_DEX_AnnotationSetItem.annotationOffs.items.*' | 102 name_path = '_DEX_AnnotationSetItem_anno_item.offset' |
103 assert name_path in deps | 103 assert name_path in deps |
104 assert deps[name_path][0] == dexfile.depend_off | 104 assert deps[name_path][0] == dexfile.depend_off |
105 assert deps[name_path][1] == '_DEX_AnnotationItem' | 105 assert deps[name_path][1] == '_DEX_AnnotationItem' |
106 pass | 106 pass |
107 | 107 |