Files
clang-p2996/lldb/test/API/lang/cpp/stl/TestSTL.py
Jason Molenda d9bc7f7844 TestSTL was marked as skipped unconditionally in 2018, undo
It was avoiding a crash at the time on macOS, apparently, and
it skipped the test on all platforms.  This test passes for me
now on macOS, let's remove the skip and see how the bots go.
2023-04-21 13:17:43 -07:00

70 lines
2.6 KiB
Python

"""
Test some expressions involving STL data types.
"""
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
class STLTestCase(TestBase):
@expectedFailureAll(bugnumber="llvm.org/PR36713")
def test(self):
"""Test some expressions involving STL data types."""
self.build()
lldbutil.run_to_source_breakpoint(self, "// Set break point at this line", lldb.SBFileSpec("main.cpp"))
# Now try some expressions....
self.runCmd(
'expr for (int i = 0; i < hello_world.length(); ++i) { (void)printf("%c\\n", hello_world[i]); }')
self.expect('expr associative_array.size()',
substrs=[' = 3'])
self.expect('expr associative_array.count(hello_world)',
substrs=[' = 1'])
self.expect('expr associative_array[hello_world]',
substrs=[' = 1'])
self.expect('expr associative_array["hello"]',
substrs=[' = 2'])
@expectedFailureAll(
compiler="icc",
bugnumber="ICC (13.1, 14-beta) do not emit DW_TAG_template_type_parameter.")
@add_test_categories(['pyapi'])
def test_SBType_template_aspects(self):
"""Test APIs for getting template arguments from an SBType."""
self.build()
(_, _, thread, _) = lldbutil.run_to_source_breakpoint(self, "// Set break point at this line", lldb.SBFileSpec("main.cpp"))
frame0 = thread.GetFrameAtIndex(0)
# Get the type for variable 'associative_array'.
associative_array = frame0.FindVariable('associative_array')
self.DebugSBValue(associative_array)
self.assertTrue(associative_array, VALID_VARIABLE)
map_type = associative_array.GetType()
self.DebugSBType(map_type)
self.assertTrue(map_type, VALID_TYPE)
num_template_args = map_type.GetNumberOfTemplateArguments()
self.assertTrue(num_template_args > 0)
# We expect the template arguments to contain at least 'string' and
# 'int'.
expected_types = {'string': False, 'int': False}
for i in range(num_template_args):
t = map_type.GetTemplateArgumentType(i)
self.DebugSBType(t)
self.assertTrue(t, VALID_TYPE)
name = t.GetName()
if 'string' in name:
expected_types['string'] = True
elif 'int' == name:
expected_types['int'] = True
# Check that both entries of the dictionary have 'True' as the value.
self.assertTrue(all(expected_types.values()))