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