1*99451b44SJordan Rupprecht""" 2*99451b44SJordan RupprechtTest that we can call C++ template fucntions. 3*99451b44SJordan Rupprecht""" 4*99451b44SJordan Rupprechtimport lldb 5*99451b44SJordan Rupprechtfrom lldbsuite.test.decorators import * 6*99451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import * 7*99451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil 8*99451b44SJordan Rupprecht 9*99451b44SJordan Rupprecht 10*99451b44SJordan Rupprechtclass TemplateFunctionsTestCase(TestBase): 11*99451b44SJordan Rupprecht 12*99451b44SJordan Rupprecht mydir = TestBase.compute_mydir(__file__) 13*99451b44SJordan Rupprecht 14*99451b44SJordan Rupprecht def do_test_template_function(self, add_cast): 15*99451b44SJordan Rupprecht self.build() 16*99451b44SJordan Rupprecht (_, _, thread, _) = lldbutil.run_to_name_breakpoint(self, "main") 17*99451b44SJordan Rupprecht frame = thread.GetSelectedFrame() 18*99451b44SJordan Rupprecht expr = "foo(42)" 19*99451b44SJordan Rupprecht if add_cast: 20*99451b44SJordan Rupprecht expr = "(int)" + expr 21*99451b44SJordan Rupprecht expr_result = frame.EvaluateExpression(expr) 22*99451b44SJordan Rupprecht self.assertTrue(expr_result.IsValid()) 23*99451b44SJordan Rupprecht self.assertEqual(expr_result.GetValue(), "42") 24*99451b44SJordan Rupprecht 25*99451b44SJordan Rupprecht @skipIfWindows 26*99451b44SJordan Rupprecht def test_template_function_with_cast(self): 27*99451b44SJordan Rupprecht self.do_test_template_function(True) 28*99451b44SJordan Rupprecht 29*99451b44SJordan Rupprecht @skipIfWindows 30*99451b44SJordan Rupprecht @expectedFailureAll(debug_info=["dwarf", "gmodules", "dwo"]) 31*99451b44SJordan Rupprecht def test_template_function_without_cast(self): 32*99451b44SJordan Rupprecht self.do_test_template_function(False) 33