The test function to determine whether we have reached the end of the list was

too complex in the test case.  We can just simply test that the SBValue object
is a valid object and it does not correspond to a null pointer in order to say
that EOL has not been reached.

Modify the test case and the lldb.py docstring to have a more compact test
function.

llvm-svn: 136123
This commit is contained in:
Johnny Chen 2011-07-26 20:20:13 +00:00
parent 11346d3136
commit 6b092e821b
2 changed files with 17 additions and 29 deletions

View File

@ -103,22 +103,15 @@ linked_list_iter_def = '''
For example,
# Test function to determine end of list.
def eol(val):
if not val:
\'\'\'Test function to determine end of list.\'\'\'
# End of list is reached if either the value object is invalid
# or it corresponds to a null pointer.
if not val or int(val.GetValue(), 16) == 0:
return True
try:
# Test the semantics of the item we got.
id = val.GetChildMemberWithName("id")
if int(id.GetValue()) > 0:
return False
except:
pass
# If we fall through to here. It could be that exception
# occurred or the "id" child member does not qualify as a
# valid item. Return True for EOL.
return True
# Otherwise, return False.
return False
# Get Frame #0.
...

View File

@ -55,22 +55,14 @@ class ValueAsLinkedListTestCase(TestBase):
self.assertTrue(process, PROCESS_IS_VALID)
def eol(val):
"""Test to determine end of list."""
if not val:
"""Test function to determine end of list."""
# End of list is reached if either the value object is invalid
# or it corresponds to a null pointer.
if not val or int(val.GetValue(), 16) == 0:
return True
try:
id = val.GetChildMemberWithName("id")
if int(id.GetValue()) > 0:
return False
except:
#exc_type, exc_value, exc_tb = sys.exc_info()
#traceback.print_exception(exc_type, exc_value, exc_tb)
pass
# If we fall through to here. It could be that exception
# occurred or the "id" child member does not qualify as a
# valid item. Return True for EOL.
return True
# Otherwise, return False.
return False
# Get Frame #0.
self.assertTrue(process.GetState() == lldb.eStateStopped)
@ -90,12 +82,15 @@ class ValueAsLinkedListTestCase(TestBase):
cvf = lldbutil.ChildVisitingFormatter(indent_child=2)
for t in task_head.linked_list_iter('next', eol):
self.assertTrue(t, VALID_VARIABLE)
list.append(int(t.GetChildMemberWithName("id").GetValue()))
# Make sure that 'next' corresponds to an SBValue with pointer type.
self.assertTrue(t.TypeIsPointerType())
if self.TraceOn():
print cvf.format(t)
list.append(int(t.GetChildMemberWithName("id").GetValue()))
# Sanity checks that the we visited all the items (no more, no less).
#print "list:", list
if self.TraceOn():
print "visited IDs:", list
self.assertTrue(visitedIDs == list)
if __name__ == '__main__':