summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals
diff options
context:
space:
mode:
authorSean Callanan <scallanan@apple.com>2016-02-12 18:42:00 +0000
committerSean Callanan <scallanan@apple.com>2016-02-12 18:42:00 +0000
commitabece15858a8b6c66574279f60e27c6a1e52bebd (patch)
tree8a39414d77e1d2c6f404bd6e56d90454532b24ff /lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals
parentfd02aad8fdc057a8c408553fcdaa1883f6f58f07 (diff)
downloadbcm5719-llvm-abece15858a8b6c66574279f60e27c6a1e52bebd.tar.gz
bcm5719-llvm-abece15858a8b6c66574279f60e27c6a1e52bebd.zip
Renamed TestRdar12991846 to the more descriptive TestUnicodeLiterals.
Test cases should not be named after PR or Radar numbers. It's fine to annotate them with these numbers in comments, however. llvm-svn: 260699
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals')
-rw-r--r--lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/Makefile8
-rw-r--r--lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/TestUnicodeLiterals.py86
-rw-r--r--lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/main.cpp21
3 files changed, 115 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/Makefile
new file mode 100644
index 00000000000..1476447db35
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/Makefile
@@ -0,0 +1,8 @@
+LEVEL = ../../../make
+
+CXX_SOURCES := main.cpp
+CFLAGS := -g -O0 -std=c++11
+
+clean: OBJECTS+=$(wildcard main.d.*)
+
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/TestUnicodeLiterals.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/TestUnicodeLiterals.py
new file mode 100644
index 00000000000..dc327a9ea8a
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/TestUnicodeLiterals.py
@@ -0,0 +1,86 @@
+# coding=utf8
+"""
+Test that the expression parser returns proper Unicode strings.
+"""
+
+from __future__ import print_function
+
+
+
+import unittest2
+import os, time
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+# this test case fails because of rdar://12991846
+# the expression parser does not deal correctly with Unicode expressions
+# e.g.
+#(lldb) expr L"Hello"
+#(const wchar_t [6]) $0 = {
+# [0] = \0\0\0\0
+# [1] = \0\0\0\0
+# [2] = \0\0\0\0
+# [3] = \0\0\0\0
+# [4] = H\0\0\0
+# [5] = e\0\0\0
+#}
+
+class UnicodeLiteralsTestCase(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ @unittest2.expectedFailure("rdar://18684408")
+ @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24489: Name lookup not working correctly on Windows")
+ def test_expr1(self):
+ """Test that the expression parser returns proper Unicode strings."""
+ self.build()
+ self.rdar12991846(expr=1)
+
+ @unittest2.expectedFailure("rdar://18684408")
+ @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24489: Name lookup not working correctly on Windows")
+ def test_expr2(self):
+ """Test that the expression parser returns proper Unicode strings."""
+ self.build()
+ self.rdar12991846(expr=2)
+
+ @unittest2.expectedFailure("rdar://18684408")
+ @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24489: Name lookup not working correctly on Windows")
+ def test_expr3(self):
+ """Test that the expression parser returns proper Unicode strings."""
+ self.build()
+ self.rdar12991846(expr=3)
+
+ def setUp(self):
+ # Call super's setUp().
+ TestBase.setUp(self)
+ # Find the line number to break for main.cpp.
+ self.source = 'main.cpp'
+ self.line = line_number(self.source, '// Set break point at this line.')
+
+ def rdar12991846(self, expr=None):
+ """Test that the expression parser returns proper Unicode strings."""
+ if self.getArchitecture() in ['i386']:
+ self.skipTest("Skipping because this test is known to crash on i386")
+
+ exe = os.path.join(os.getcwd(), "a.out")
+
+ # Create a target by the debugger.
+ target = self.dbg.CreateTarget(exe)
+ self.assertTrue(target, VALID_TARGET)
+
+ # Break on the struct declration statement in main.cpp.
+ lldbutil.run_break_set_by_file_and_line (self, "main.cpp", self.line)
+
+ # Now launch the process, and do not stop at entry point.
+ process = target.LaunchSimple (None, None, self.get_process_working_directory())
+
+ if not process:
+ self.fail("SBTarget.Launch() failed")
+
+ if expr == 1: self.expect('expression L"hello"', substrs = ['hello'])
+
+ if expr == 2: self.expect('expression u"hello"', substrs = ['hello'])
+
+ if expr == 3: self.expect('expression U"hello"', substrs = ['hello'])
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/main.cpp b/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/main.cpp
new file mode 100644
index 00000000000..fda951a7899
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/main.cpp
@@ -0,0 +1,21 @@
+//===-- main.c --------------------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+
+int main (int argc, char const *argv[])
+{
+ auto cs16 = u"hello world ྒྙྐ";
+ auto cs32 = U"hello world ྒྙྐ";
+ char16_t *s16 = (char16_t *)u"ﺸﺵۻ";
+ char32_t *s32 = (char32_t *)U"ЕЙРГЖО";
+ s32 = nullptr; // Set break point at this line.
+ s32 = (char32_t *)U"෴";
+ s16 = (char16_t *)u"色ハ匂ヘト散リヌルヲ";
+ return 0;
+}
OpenPOWER on IntegriCloud