diff paraspace/tests/dexfile_test.py @ 27:15cb829ac442

travel_dex_type() recoganizes _dex_type correctly
author Thinker K.F. Li <thinker@codemud.net>
date Tue, 07 Jun 2011 22:30:29 +0800
parents b30a0d29a62f
children 5ce7ca1187b3
line wrap: on
line diff
--- a/paraspace/tests/dexfile_test.py	Tue Jun 07 15:02:42 2011 +0800
+++ b/paraspace/tests/dexfile_test.py	Tue Jun 07 22:30:29 2011 +0800
@@ -131,19 +131,51 @@
 
 
 def travel_dex_type_test():
+    from paraspace.dex_deptracker import collect_all_dep_decls
+    from paraspace.dex_deptracker import _install_markers
     from paraspace.dex_deptracker import _travel_dex_type
+
+    _install_dexfile_4_deptracker()
     
     attr_infos = [attr_info
                   for attr_info in \
                       _travel_dex_type(dexfile._DEX_AnnotationsDirectoryItem,
                                        '_DEX_AnnotationsDirectoryItem')
                   ]
-    print attr_infos
-    assert len(attr_infos) == 10
+    attr_names = set([attr_info[1]
+                      for attr_info in attr_infos])
+    print attr_names
+    assert '_DEX_AnnotationsDirectoryItem.classAnnotationsOff' in attr_names
+    assert '_DEX_AnnotationsDirectoryItem.fieldsSize' in attr_names
+    assert '_DEX_AnnotationsDirectoryItem.methodsSize' in attr_names
+    assert '_DEX_AnnotationsDirectoryItem.parametersSize' in attr_names
+    assert '_DEX_AnnotationsDirectoryItem.fieldAnnotationsItems' in attr_names
+    assert '_DEX_AnnotationsDirectoryItem.fieldAnnotationsItems.items.*' in attr_names
+    assert '_DEX_AnnotationsDirectoryItem.methodAnnotationsItems' in attr_names
+    assert '_DEX_AnnotationsDirectoryItem.parameterAnnotationsItems' in attr_names
+    
+    all_dep_decls = collect_all_dep_decls()
+    _install_markers(all_dep_decls)
+    
+    attr_infos = [attr_info
+                  for attr_info in \
+                      _travel_dex_type(dexfile._DEX_AnnotationsDirectoryItem,
+                                       '_DEX_AnnotationsDirectoryItem')
+                  ]
+    attr_names = set([attr_info[1]
+                      for attr_info in attr_infos])
+    assert '_DEX_AnnotationsDirectoryItem.classAnnotationsOff' in attr_names
+    assert '_DEX_AnnotationsDirectoryItem.fieldsSize' in attr_names
+    assert '_DEX_AnnotationsDirectoryItem.methodsSize' in attr_names
+    assert '_DEX_AnnotationsDirectoryItem.parametersSize' in attr_names
+    assert '_DEX_AnnotationsDirectoryItem.fieldAnnotationsItems' in attr_names
+    assert '_DEX_AnnotationsDirectoryItem.fieldAnnotationsItems.items.*' in attr_names
+    assert '_DEX_AnnotationsDirectoryItem.methodAnnotationsItems' in attr_names
+    assert '_DEX_AnnotationsDirectoryItem.parameterAnnotationsItems' in attr_names
     pass
 
 
-def install_markers_test():
+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 _offset_marker, _rel_offset_marker
@@ -159,13 +191,14 @@
     assert dexfile._DEX_TypeList.__class__ == _offset_marker
 
     _patch_dex_type_markers(all_dep_decls)
+    assert isinstance(dexfile._DEX_TypeList, _offset_marker)
     print all_dep_decls.keys()
     print dexfile.DEXFile.typeLists.child_type
     assert isinstance(dexfile.DEXFile.typeLists.child_type, _offset_marker)
     pass
 
 
-def link_dependencies_test():
+def _link_dependencies_test():
     from paraspace.dex_deptracker import collect_all_dep_decls
     from paraspace.dex_deptracker import _link_dependencies
     from paraspace.dex_deptracker import _install_markers, _idx_marker