diff options
| -rw-r--r-- | lldb/test/foundation/Makefile | 2 | ||||
| -rw-r--r-- | lldb/test/foundation/TestConstStrings.py | 64 | ||||
| -rw-r--r-- | lldb/test/foundation/const-strings.m | 3 |
3 files changed, 68 insertions, 1 deletions
diff --git a/lldb/test/foundation/Makefile b/lldb/test/foundation/Makefile index bcf886b02a0..43e0bb5d256 100644 --- a/lldb/test/foundation/Makefile +++ b/lldb/test/foundation/Makefile @@ -1,6 +1,8 @@ LEVEL = ../make OBJC_SOURCES := main.m my-base.m +#OBJC_SOURCES := const-strings.m + LDFLAGS = $(CFLAGS) -lobjc -framework Foundation include $(LEVEL)/Makefile.rules diff --git a/lldb/test/foundation/TestConstStrings.py b/lldb/test/foundation/TestConstStrings.py new file mode 100644 index 00000000000..6ec3f0a0b4b --- /dev/null +++ b/lldb/test/foundation/TestConstStrings.py @@ -0,0 +1,64 @@ +""" +Test that objective-c constant strings are generated correctly by the expression +parser. +""" + +import os, time +import unittest2 +import lldb +from lldbtest import * + +@unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin") +class ConstStringTestCase(TestBase): + + mydir = "foundation" + d = {'OBJC_SOURCES': 'const-strings.m'} + + def test_break_with_dsym(self): + """Test constant string generation amd comparison by the expression parser.""" + self.buildDsym(dictionary=self.d) + self.objc_const_strings() + + def test_break_with_dwarf(self): + """Test constant string generation amd comparison by the expression parser.""" + self.buildDwarf(dictionary=self.d) + self.objc_const_strings() + + def setUp(self): + # Call super's setUp(). + TestBase.setUp(self) + # Find the line number to break inside main(). + self.main_source = "const-strings.m" + self.line = line_number(self.main_source, '// Set breakpoint here.') + + def objc_const_strings(self): + """Test constant string generation amd comparison by the expression parser.""" + exe = os.path.join(os.getcwd(), "a.out") + self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) + + self.expect("breakpoint set -f %s -l %d" % (self.main_source, self.line), + BREAKPOINT_CREATED, + startstr = "Breakpoint created: 1: file ='%s', line = %d, locations = 1" % + (self.main_source, self.line)) + + self.runCmd("run", RUN_SUCCEEDED) + self.runCmd("process status") + + self.expect('expression (int)[str compare:@"hello"]', + startstr = "(int) $0 = 0") + self.expect('expression (int)[str compare:@"world"]', + startstr = "(int) $1 = -1") + + # Test empty strings, too. + self.expect('expression (int)[@"" length]', + startstr = "(int) $2 = 0") + + self.expect('expression (int)[@"123" length]', + startstr = "(int) $3 = 3") + + +if __name__ == '__main__': + import atexit + lldb.SBDebugger.Initialize() + atexit.register(lambda: lldb.SBDebugger.Terminate()) + unittest2.main() diff --git a/lldb/test/foundation/const-strings.m b/lldb/test/foundation/const-strings.m index 07c408a84a4..8a43abee7b8 100644 --- a/lldb/test/foundation/const-strings.m +++ b/lldb/test/foundation/const-strings.m @@ -17,7 +17,8 @@ int main () NSString *str = [NSString stringWithCString:"hello" encoding:NSASCIIStringEncoding]; - NSLog(@"String \"%@\" has length %d", str, [str length]); // Breakpoint 1 + NSLog(@"String \"%@\" has length %lu", str, [str length]); // Set breakpoint here. [pool drain]; + return 0; } |

