summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/lang/cpp/bitfields/TestCppBitfields.py
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lang/cpp/bitfields/TestCppBitfields.py')
-rw-r--r--lldb/packages/Python/lldbsuite/test/lang/cpp/bitfields/TestCppBitfields.py105
1 files changed, 105 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/bitfields/TestCppBitfields.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/bitfields/TestCppBitfields.py
new file mode 100644
index 00000000000..696e5647f13
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/bitfields/TestCppBitfields.py
@@ -0,0 +1,105 @@
+"""Show bitfields and check that they display correctly."""
+
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+
+class CppBitfieldsTestCase(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ def setUp(self):
+ # Call super's setUp().
+ TestBase.setUp(self)
+ # Find the line number to break inside main().
+ self.line = line_number('main.cpp', '// Set break point at this line.')
+
+ # BitFields exhibit crashes in record layout on Windows
+ # (http://llvm.org/pr21800)
+ @skipIfWindows
+ def test_and_run_command(self):
+ """Test 'frame variable ...' on a variable with bitfields."""
+ self.build()
+
+ lldbutil.run_to_source_breakpoint(self, '// Set break point at this line.',
+ lldb.SBFileSpec("main.cpp", False))
+
+ # The stop reason of the thread should be breakpoint.
+ self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
+ substrs=['stopped',
+ 'stop reason = breakpoint'])
+
+ # The breakpoint should have a hit count of 1.
+ self.expect("breakpoint list -f", BREAKPOINT_HIT_ONCE,
+ substrs=[' resolved, hit count = 1'])
+
+ self.expect("expr (lba.a)", VARIABLES_DISPLAYED_CORRECTLY,
+ substrs=['unsigned int', '2'])
+ self.expect("expr (lbb.b)", VARIABLES_DISPLAYED_CORRECTLY,
+ substrs=['unsigned int', '3'])
+ self.expect("expr (lbc.c)", VARIABLES_DISPLAYED_CORRECTLY,
+ substrs=['unsigned int', '4'])
+ self.expect("expr (lbd.a)", VARIABLES_DISPLAYED_CORRECTLY,
+ substrs=['unsigned int', '5'])
+ self.expect("expr (clang_example.f.a)", VARIABLES_DISPLAYED_CORRECTLY,
+ substrs=['uint64_t', '1'])
+
+ self.expect(
+ "frame variable --show-types lba",
+ VARIABLES_DISPLAYED_CORRECTLY,
+ substrs=[
+ '(int:32) = ',
+ '(unsigned int:20) a = 2',
+ ])
+
+ self.expect(
+ "frame variable --show-types lbb",
+ VARIABLES_DISPLAYED_CORRECTLY,
+ substrs=[
+ '(unsigned int:1) a = 1',
+ '(int:31) =',
+ '(unsigned int:20) b = 3',
+ ])
+
+ self.expect(
+ "frame variable --show-types lbc",
+ VARIABLES_DISPLAYED_CORRECTLY,
+ substrs=[
+ '(int:22) =',
+ '(unsigned int:1) a = 1',
+ '(unsigned int:1) b = 0',
+ '(unsigned int:5) c = 4',
+ '(unsigned int:1) d = 1',
+ '(int:2) =',
+ '(unsigned int:20) e = 20',
+ ])
+
+ self.expect(
+ "frame variable --show-types lbd",
+ VARIABLES_DISPLAYED_CORRECTLY,
+ substrs=[
+ '(char [3]) arr = "abc"',
+ '(int:32) =',
+ '(unsigned int:20) a = 5',
+ ])
+
+ self.expect(
+ "frame variable --show-types clang_example",
+ VARIABLES_DISPLAYED_CORRECTLY,
+ substrs=[
+ '(int:22) =',
+ '(uint64_t:1) a = 1',
+ '(uint64_t:1) b = 0',
+ '(uint64_t:1) c = 1',
+ '(uint64_t:1) d = 0',
+ '(uint64_t:1) e = 1',
+ '(uint64_t:1) f = 0',
+ '(uint64_t:1) g = 1',
+ '(uint64_t:1) h = 0',
+ '(uint64_t:1) i = 1',
+ '(uint64_t:1) j = 0',
+ '(uint64_t:1) k = 1',
+ ])
+
OpenPOWER on IntegriCloud