@@ -154,14 +154,32 @@ def test_find_in_memory_unaligned(self):
154
154
self .assertEqual (addr , lldb .LLDB_INVALID_ADDRESS )
155
155
156
156
def test_memory_info_list_iterable (self ):
157
- """Make sure the SBMemoryRegionInfoList is iterable"""
157
+ """Make sure the SBMemoryRegionInfoList is iterable and each yielded object is unique """
158
158
self .assertTrue (self .process , PROCESS_IS_VALID )
159
159
self .assertState (self .process .GetState (), lldb .eStateStopped , PROCESS_STOPPED )
160
160
161
161
info_list = self .process .GetMemoryRegions ()
162
162
self .assertTrue (info_list .GetSize () > 0 )
163
+
164
+ collected_info = []
163
165
try :
164
- for info in info_list :
165
- pass
166
+ for region in info_list :
167
+ collected_info . append ( region )
166
168
except Exception :
167
169
self .fail ("SBMemoryRegionInfoList is not iterable" )
170
+
171
+ self .assertTrue (len (collected_info ) >= 2 , "Need at least 2 items" )
172
+ self .assertEqual (len (collected_info ), info_list .GetSize (), "Should have collected all items" )
173
+
174
+ for i in range (len (collected_info )):
175
+ region = lldb .SBMemoryRegionInfo ()
176
+ info_list .GetMemoryRegionAtIndex (i , region )
177
+
178
+ self .assertEqual (collected_info [i ].GetRegionBase (), region .GetRegionBase (),
179
+ f"items { i } : iterator data should match index access data" )
180
+ self .assertEqual (collected_info [i ].GetRegionEnd (), region .GetRegionEnd (),
181
+ f"items { i } : iterator data should match index access data" )
182
+
183
+ if len (collected_info ) >= 2 :
184
+ self .assertNotEqual (collected_info [0 ].GetRegionBase (), collected_info [1 ].GetRegionBase (),
185
+ "Different items should have different base addresses" )
0 commit comments