1""" 2Tests GCC's complex integer types. 3""" 4 5import lldb 6from lldbsuite.test.decorators import * 7from lldbsuite.test.lldbtest import * 8from lldbsuite.test import lldbutil 9 10 11class TestCase(TestBase): 12 @no_debug_info_test 13 @skipIfWindows 14 def test(self): 15 self.build() 16 lldbutil.run_to_source_breakpoint( 17 self, "// break here", lldb.SBFileSpec("main.c") 18 ) 19 20 long_size_eq_int = self.frame().EvaluateExpression( 21 "sizeof(long) == sizeof(int)" 22 ) 23 24 # FIXME: LLDB treats all complex ints as unsigned, so the value is wrong. 25 self.expect_expr( 26 "complex_int", 27 result_type="_Complex int", 28 result_value="4294967295 + 4294967294i", 29 ) 30 self.expect_expr( 31 "complex_unsigned", result_type="_Complex int", result_value="1 + 2i" 32 ) 33 34 # FIXME: We get the type wrong if long has the same size as int. 35 if long_size_eq_int.GetValue() == "true": 36 self.expect_expr("complex_long", result_type="_Complex int") 37 self.expect_expr( 38 "complex_unsigned_long", 39 result_type="_Complex int", 40 result_value="1 + 2i", 41 ) 42 else: 43 self.expect_expr("complex_long", result_type="_Complex long") 44 self.expect_expr( 45 "complex_unsigned_long", 46 result_type="_Complex long", 47 result_value="1 + 2i", 48 ) 49 50 @no_debug_info_test 51 @skipIfWindows 52 def test_long_long(self): 53 self.build() 54 lldbutil.run_to_source_breakpoint( 55 self, "// break here", lldb.SBFileSpec("main.c") 56 ) 57 58 # FIXME: We get the type wrong if long has the same size as long long. 59 # FIXME: LLDB treats all complex ints as unsigned, so the value is wrong. 60 long_size_eq_long_long = self.frame().EvaluateExpression( 61 "sizeof(long) == sizeof(long long)" 62 ) 63 if long_size_eq_long_long.GetValue() == "true": 64 self.expect_expr("complex_long_long", result_type="_Complex long") 65 self.expect_expr( 66 "complex_unsigned_long_long", 67 result_type="_Complex long", 68 result_value="1 + 2i", 69 ) 70 else: 71 self.expect_expr("complex_long_long", result_type="_Complex long long") 72 self.expect_expr( 73 "complex_unsigned_long_long", 74 result_type="_Complex long long", 75 result_value="1 + 2i", 76 ) 77