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