""" Test that we can call C++ template fucntions. """ import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil class TemplateFunctionsTestCase(TestBase): mydir = TestBase.compute_mydir(__file__) def do_test_template_function(self, add_cast): self.build() (_, _, thread, _) = lldbutil.run_to_name_breakpoint(self, "main") frame = thread.GetSelectedFrame() expr = "foo(42)" if add_cast: expr = "(int)" + expr expr_result = frame.EvaluateExpression(expr) self.assertTrue(expr_result.IsValid()) self.assertEqual(expr_result.GetValue(), "42") @skipIfWindows def test_template_function_with_cast(self): self.do_test_template_function(True) @skipIfWindows @expectedFailureAll(debug_info=["dwarf", "gmodules", "dwo"]) def test_template_function_without_cast(self): self.do_test_template_function(False)