xref: /llvm-project/lldb/test/API/lang/cpp/unicode-literals/TestUnicodeLiterals.py (revision 53eece04bd15d9235b104e545d01184347e5f703)
199451b44SJordan Rupprecht# coding=utf8
299451b44SJordan Rupprecht"""
399451b44SJordan RupprechtTest that the expression parser returns proper Unicode strings.
499451b44SJordan Rupprecht"""
599451b44SJordan Rupprecht
699451b44SJordan Rupprecht
799451b44SJordan Rupprecht
899451b44SJordan Rupprechtimport lldb
999451b44SJordan Rupprechtfrom lldbsuite.test.decorators import *
1099451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import *
1199451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil
1299451b44SJordan Rupprecht
1399451b44SJordan Rupprecht# this test case fails because of rdar://12991846
1499451b44SJordan Rupprecht# the expression parser does not deal correctly with Unicode expressions
1599451b44SJordan Rupprecht# e.g.
1699451b44SJordan Rupprecht#(lldb) expr L"Hello"
1799451b44SJordan Rupprecht#(const wchar_t [6]) $0 = {
1899451b44SJordan Rupprecht#  [0] = \0\0\0\0
1999451b44SJordan Rupprecht#  [1] = \0\0\0\0
2099451b44SJordan Rupprecht#  [2] = \0\0\0\0
2199451b44SJordan Rupprecht#  [3] = \0\0\0\0
2299451b44SJordan Rupprecht#  [4] = H\0\0\0
2399451b44SJordan Rupprecht#  [5] = e\0\0\0
2499451b44SJordan Rupprecht#}
2599451b44SJordan Rupprecht
2699451b44SJordan Rupprecht
2799451b44SJordan Rupprechtclass UnicodeLiteralsTestCase(TestBase):
2899451b44SJordan Rupprecht
2999451b44SJordan Rupprecht    mydir = TestBase.compute_mydir(__file__)
3099451b44SJordan Rupprecht
3199451b44SJordan Rupprecht    def test_expr1(self):
3299451b44SJordan Rupprecht        """Test that the expression parser returns proper Unicode strings."""
3399451b44SJordan Rupprecht        self.rdar12991846(expr=1)
3499451b44SJordan Rupprecht
3599451b44SJordan Rupprecht    def test_expr2(self):
3699451b44SJordan Rupprecht        """Test that the expression parser returns proper Unicode strings."""
3799451b44SJordan Rupprecht        self.rdar12991846(expr=2)
3899451b44SJordan Rupprecht
3999451b44SJordan Rupprecht    def test_expr3(self):
4099451b44SJordan Rupprecht        """Test that the expression parser returns proper Unicode strings."""
4199451b44SJordan Rupprecht        self.rdar12991846(expr=3)
4299451b44SJordan Rupprecht
4399451b44SJordan Rupprecht    def rdar12991846(self, expr=None):
4499451b44SJordan Rupprecht        """Test that the expression parser returns proper Unicode strings."""
4599451b44SJordan Rupprecht        if self.getArchitecture() in ['i386']:
4699451b44SJordan Rupprecht            self.skipTest(
4799451b44SJordan Rupprecht                "Skipping because this test is known to crash on i386")
4899451b44SJordan Rupprecht
49*53eece04SRaphael Isemann        self.build()
50*53eece04SRaphael Isemann        lldbutil.run_to_source_breakpoint(self, "// Set break point at this line", lldb.SBFileSpec("main.cpp"))
5199451b44SJordan Rupprecht
5299451b44SJordan Rupprecht        if expr == 1:
5399451b44SJordan Rupprecht            self.expect('expression L"hello"', substrs=['hello'])
5499451b44SJordan Rupprecht
5599451b44SJordan Rupprecht        if expr == 2:
5699451b44SJordan Rupprecht            self.expect('expression u"hello"', substrs=['hello'])
5799451b44SJordan Rupprecht
5899451b44SJordan Rupprecht        if expr == 3:
5999451b44SJordan Rupprecht            self.expect('expression U"hello"', substrs=['hello'])
60