Mercurial > paraspace
diff 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 |
line wrap: on
line diff
--- a/paraspace/tests/dexfile_test.py Tue Jun 21 18:36:45 2011 +0800 +++ b/paraspace/tests/dexfile_test.py Wed Jun 22 20:22:03 2011 +0800 @@ -37,7 +37,7 @@ assert deps['_DEX_ClassDef.staticValuesOffRef.value'][1] == \ '_DEX_EncodedArrayItem' assert deps['_DEX_Try.handlerOff'][0] == dexfile.depend_off_rel - assert deps['_DEX_Try.handlerOff'][1] == '_DEX_Try.catch_ref.target' + assert deps['_DEX_Try.handlerOff'][1] == '_DEX_Try.catch_ref' assert deps['_DEX_Try.handlerOff'][2] == '_DEX_Code.handlers_size' pass @@ -179,6 +179,7 @@ def install_markers_test(): from paraspace.dex_deptracker import collect_all_dep_decls from paraspace.dex_deptracker import _install_markers, _idx_marker + from paraspace.dex_deptracker import _marker from paraspace.dex_deptracker import _offset_marker, _rel_offset_marker from paraspace.dex_deptracker import _patch_dex_type_markers @@ -195,6 +196,7 @@ assert isinstance(dexfile._DEX_TypeList, _offset_marker) assert isinstance(dexfile.DEXFile.typeLists.child_type.value, _offset_marker) + assert isinstance(dexfile._DEX_Catch, _marker) pass @@ -228,7 +230,6 @@ from paraspace.dex_deptracker import collect_all_dep_decls from paraspace.dex_deptracker import build_dependencies from paraspace.dex_deptracker import _install_markers, _idx_marker - from paraspace.dex_deptracker import _offset_marker, _rel_offset_marker from paraspace.dex_deptracker import _patch_dex_type_markers _install_dexfile_4_deptracker() @@ -260,3 +261,36 @@ assert isinstance(clazz_def.annotationsOffRef.value, dexfile._DEX_AnnotationsDirectoryItem) pass + + +def update_offset_test(): + from paraspace.dex_deptracker import collect_all_dep_decls + from paraspace.dex_deptracker import build_dependencies + from paraspace.dex_deptracker import _install_markers + from paraspace.dex_deptracker import _patch_dex_type_markers + from paraspace.dex_deptracker import update_offset + + _install_dexfile_4_deptracker() + + all_dep_decls = collect_all_dep_decls() + _install_markers(all_dep_decls) + _patch_dex_type_markers(all_dep_decls) + + srcdir = os.path.dirname(__file__) + srcroot = os.path.join(srcdir, '..', '..') + testdatapath = os.path.join(srcroot, 'data', 'testdata1.dex') + dex = dexfile.DEXFile.open(testdatapath) + + build_dependencies(dex, all_dep_decls) + + offset0 = dex.typeLists.items[0].value.data_offset + dex.typeLists.items[0].value.data_offset = 0 + offset1 = dex.typeLists.items[1].value.data_offset + dex.typeLists.items[1].value.data_offset = 0 + + update_offset(dex, all_dep_decls) + + print dex.typeLists.items[0].value.data_offset + assert dex.typeLists.items[0].value.data_offset == offset0 + assert dex.typeLists.items[1].value.data_offset == offset1 + pass