summaryrefslogtreecommitdiffstats
path: root/lldb/test/lang/cpp/global_operators/TestCppGlobalOperators.py
diff options
context:
space:
mode:
authorPaul Herman <paulherman@google.com>2015-08-19 21:44:56 +0000
committerPaul Herman <paulherman@google.com>2015-08-19 21:44:56 +0000
commit641e1987d6a4aa299d8c65de31c5cadd10ed4fe8 (patch)
tree62f46b70790fab5bff45011c29801021b7a11451 /lldb/test/lang/cpp/global_operators/TestCppGlobalOperators.py
parent1cd076eb34980ae49cf11e5d2c21363269b8a117 (diff)
downloadbcm5719-llvm-641e1987d6a4aa299d8c65de31c5cadd10ed4fe8.tar.gz
bcm5719-llvm-641e1987d6a4aa299d8c65de31c5cadd10ed4fe8.zip
Fix evaluation of global operators in C++
llvm-svn: 245508
Diffstat (limited to 'lldb/test/lang/cpp/global_operators/TestCppGlobalOperators.py')
-rw-r--r--lldb/test/lang/cpp/global_operators/TestCppGlobalOperators.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/lldb/test/lang/cpp/global_operators/TestCppGlobalOperators.py b/lldb/test/lang/cpp/global_operators/TestCppGlobalOperators.py
new file mode 100644
index 00000000000..99be02e1a9e
--- /dev/null
+++ b/lldb/test/lang/cpp/global_operators/TestCppGlobalOperators.py
@@ -0,0 +1,72 @@
+"""
+Test that global operators are found and evaluated.
+"""
+import lldb
+from lldbtest import *
+import lldbutil
+
+class TestCppGlobalOperators(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ @skipUnlessDarwin
+ @dsym_test
+ def test_with_dsym_and_run_command(self):
+ self.buildDsym()
+ self.check()
+
+ @dwarf_test
+ def test_with_dwarf_and_run_command(self):
+ self.buildDwarf()
+ self.check()
+
+ def setUp(self):
+ TestBase.setUp(self)
+
+ def check(self):
+ # Get main source file
+ src_file = "main.cpp"
+ src_file_spec = lldb.SBFileSpec(src_file)
+ self.assertTrue(src_file_spec.IsValid(), "Main source file")
+
+ # Get the path of the executable
+ cwd = self.get_process_working_directory()
+ exe_file = "a.out"
+ exe_path = os.path.join(cwd, exe_file)
+
+ # Load the executable
+ target = self.dbg.CreateTarget(exe_path)
+ self.assertTrue(target.IsValid(), VALID_TARGET)
+
+ # Break on main function
+ main_breakpoint = target.BreakpointCreateBySourceRegex("// break here", src_file_spec)
+ self.assertTrue(main_breakpoint.IsValid() and main_breakpoint.GetNumLocations() >= 1, VALID_BREAKPOINT)
+
+ # Launch the process
+ args = None
+ env = None
+ process = target.LaunchSimple(args, env, cwd)
+ self.assertTrue(process.IsValid(), PROCESS_IS_VALID)
+
+ # Get the thread of the process
+ self.assertTrue(process.GetState() == lldb.eStateStopped, PROCESS_STOPPED)
+ thread = lldbutil.get_stopped_thread(process, lldb.eStopReasonBreakpoint)
+
+ # Check if global operators are evaluated
+ frame = thread.GetSelectedFrame()
+
+ test_result = frame.EvaluateExpression("operator==(s1, s2)")
+ self.assertTrue(test_result.IsValid() and test_result.GetValue() == "false", "operator==(s1, s2) = false")
+
+ test_result = frame.EvaluateExpression("operator==(s1, s3)")
+ self.assertTrue(test_result.IsValid() and test_result.GetValue() == "true", "operator==(s1, s3) = true")
+
+ test_result = frame.EvaluateExpression("operator==(s2, s3)")
+ self.assertTrue(test_result.IsValid() and test_result.GetValue() == "false", "operator==(s2, s3) = false")
+
+
+if __name__ == '__main__':
+ import atexit
+ lldb.SBDebugger.Initialize()
+ atexit.register(lambda: lldb.SBDebugger.Terminate())
+ unittest2.main()
OpenPOWER on IntegriCloud