1*99451b44SJordan Rupprecht# coding=utf8 2*99451b44SJordan Rupprecht""" 3*99451b44SJordan RupprechtTest that the expression parser returns proper Unicode strings. 4*99451b44SJordan Rupprecht""" 5*99451b44SJordan Rupprecht 6*99451b44SJordan Rupprecht 7*99451b44SJordan Rupprecht 8*99451b44SJordan Rupprechtimport lldb 9*99451b44SJordan Rupprechtfrom lldbsuite.test.decorators import * 10*99451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import * 11*99451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil 12*99451b44SJordan Rupprecht 13*99451b44SJordan Rupprecht# this test case fails because of rdar://12991846 14*99451b44SJordan Rupprecht# the expression parser does not deal correctly with Unicode expressions 15*99451b44SJordan Rupprecht# e.g. 16*99451b44SJordan Rupprecht#(lldb) expr L"Hello" 17*99451b44SJordan Rupprecht#(const wchar_t [6]) $0 = { 18*99451b44SJordan Rupprecht# [0] = \0\0\0\0 19*99451b44SJordan Rupprecht# [1] = \0\0\0\0 20*99451b44SJordan Rupprecht# [2] = \0\0\0\0 21*99451b44SJordan Rupprecht# [3] = \0\0\0\0 22*99451b44SJordan Rupprecht# [4] = H\0\0\0 23*99451b44SJordan Rupprecht# [5] = e\0\0\0 24*99451b44SJordan Rupprecht#} 25*99451b44SJordan Rupprecht 26*99451b44SJordan Rupprecht 27*99451b44SJordan Rupprechtclass UnicodeLiteralsTestCase(TestBase): 28*99451b44SJordan Rupprecht 29*99451b44SJordan Rupprecht mydir = TestBase.compute_mydir(__file__) 30*99451b44SJordan Rupprecht 31*99451b44SJordan Rupprecht def test_expr1(self): 32*99451b44SJordan Rupprecht """Test that the expression parser returns proper Unicode strings.""" 33*99451b44SJordan Rupprecht self.build() 34*99451b44SJordan Rupprecht self.rdar12991846(expr=1) 35*99451b44SJordan Rupprecht 36*99451b44SJordan Rupprecht def test_expr2(self): 37*99451b44SJordan Rupprecht """Test that the expression parser returns proper Unicode strings.""" 38*99451b44SJordan Rupprecht self.build() 39*99451b44SJordan Rupprecht self.rdar12991846(expr=2) 40*99451b44SJordan Rupprecht 41*99451b44SJordan Rupprecht def test_expr3(self): 42*99451b44SJordan Rupprecht """Test that the expression parser returns proper Unicode strings.""" 43*99451b44SJordan Rupprecht self.build() 44*99451b44SJordan Rupprecht self.rdar12991846(expr=3) 45*99451b44SJordan Rupprecht 46*99451b44SJordan Rupprecht def setUp(self): 47*99451b44SJordan Rupprecht # Call super's setUp(). 48*99451b44SJordan Rupprecht TestBase.setUp(self) 49*99451b44SJordan Rupprecht # Find the line number to break for main.cpp. 50*99451b44SJordan Rupprecht self.source = 'main.cpp' 51*99451b44SJordan Rupprecht self.line = line_number( 52*99451b44SJordan Rupprecht self.source, '// Set break point at this line.') 53*99451b44SJordan Rupprecht 54*99451b44SJordan Rupprecht def rdar12991846(self, expr=None): 55*99451b44SJordan Rupprecht """Test that the expression parser returns proper Unicode strings.""" 56*99451b44SJordan Rupprecht if self.getArchitecture() in ['i386']: 57*99451b44SJordan Rupprecht self.skipTest( 58*99451b44SJordan Rupprecht "Skipping because this test is known to crash on i386") 59*99451b44SJordan Rupprecht 60*99451b44SJordan Rupprecht exe = self.getBuildArtifact("a.out") 61*99451b44SJordan Rupprecht 62*99451b44SJordan Rupprecht # Create a target by the debugger. 63*99451b44SJordan Rupprecht target = self.dbg.CreateTarget(exe) 64*99451b44SJordan Rupprecht self.assertTrue(target, VALID_TARGET) 65*99451b44SJordan Rupprecht 66*99451b44SJordan Rupprecht # Break on the struct declration statement in main.cpp. 67*99451b44SJordan Rupprecht lldbutil.run_break_set_by_file_and_line(self, "main.cpp", self.line) 68*99451b44SJordan Rupprecht 69*99451b44SJordan Rupprecht # Now launch the process, and do not stop at entry point. 70*99451b44SJordan Rupprecht process = target.LaunchSimple( 71*99451b44SJordan Rupprecht None, None, self.get_process_working_directory()) 72*99451b44SJordan Rupprecht 73*99451b44SJordan Rupprecht if not process: 74*99451b44SJordan Rupprecht self.fail("SBTarget.Launch() failed") 75*99451b44SJordan Rupprecht 76*99451b44SJordan Rupprecht if expr == 1: 77*99451b44SJordan Rupprecht self.expect('expression L"hello"', substrs=['hello']) 78*99451b44SJordan Rupprecht 79*99451b44SJordan Rupprecht if expr == 2: 80*99451b44SJordan Rupprecht self.expect('expression u"hello"', substrs=['hello']) 81*99451b44SJordan Rupprecht 82*99451b44SJordan Rupprecht if expr == 3: 83*99451b44SJordan Rupprecht self.expect('expression U"hello"', substrs=['hello']) 84