""" Tests GCC's complex integer types. """ import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil class TestCase(TestBase): @no_debug_info_test @skipIfWindows def test(self): self.build() lldbutil.run_to_source_breakpoint(self, "// break here", lldb.SBFileSpec("main.c")) long_size_eq_int = self.frame().EvaluateExpression("sizeof(long) == sizeof(int)") # FIXME: LLDB treats all complex ints as unsigned, so the value is wrong. self.expect_expr("complex_int", result_type="_Complex int", result_value="4294967295 + 4294967294i") self.expect_expr("complex_unsigned", result_type="_Complex int", result_value="1 + 2i") # FIXME: We get the type wrong if long has the same size as int. if long_size_eq_int.GetValue() == "true": self.expect_expr("complex_long", result_type="_Complex int") self.expect_expr("complex_unsigned_long", result_type="_Complex int", result_value="1 + 2i") else: self.expect_expr("complex_long", result_type="_Complex long") self.expect_expr("complex_unsigned_long", result_type="_Complex long", result_value="1 + 2i") @no_debug_info_test @skipIfWindows def test_long_long(self): self.build() lldbutil.run_to_source_breakpoint(self, "// break here", lldb.SBFileSpec("main.c")) # FIXME: We get the type wrong if long has the same size as long long. # FIXME: LLDB treats all complex ints as unsigned, so the value is wrong. long_size_eq_long_long = self.frame().EvaluateExpression("sizeof(long) == sizeof(long long)") if long_size_eq_long_long.GetValue() == "true": self.expect_expr("complex_long_long", result_type="_Complex long") self.expect_expr("complex_unsigned_long_long", result_type="_Complex long", result_value="1 + 2i") else: self.expect_expr("complex_long_long", result_type="_Complex long long") self.expect_expr("complex_unsigned_long_long", result_type="_Complex long long", result_value="1 + 2i")