blob: 375aefe36422c522db7fa66a30a193a7a38126de [file] [log] [blame]
# encoding: utf-8
"""
Test lldb data formatter subsystem.
"""
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
from ObjCDataFormatterTestCase import ObjCDataFormatterTestCase
class ObjCDataFormatterNSContainer(ObjCDataFormatterTestCase):
def test_nscontainers_with_run_command(self):
"""Test formatters for NS container classes."""
self.appkit_tester_impl(self.nscontainers_data_formatter_commands, False)
def nscontainers_data_formatter_commands(self):
self.expect(
'frame variable newArray nsDictionary newDictionary nscfDictionary cfDictionaryRef newMutableDictionary copyDictionary newMutableDictionaryRef cfarray_ref mutable_array_ref',
substrs=[
'(NSArray *) newArray = ',
' @"50 elements"',
'(NSDictionary *) nsDictionary = ',
' 2 key/value pairs',
'(NSDictionary *) newDictionary = ',
' 12 key/value pairs',
'(NSDictionary *) nscfDictionary = ',
' 4 key/value pairs',
'(CFDictionaryRef) cfDictionaryRef = ',
' 2 key/value pairs',
'(NSDictionary *) newMutableDictionary = ',
' 21 key/value pairs',
'(NSMutableDictionary *) copyDictionary = ',
' 21 key/value pairs',
'(CFMutableDictionaryRef) newMutableDictionaryRef = ',
' 21 key/value pairs',
'(CFArrayRef) cfarray_ref = ',
' @"3 elements"',
'(CFMutableArrayRef) mutable_array_ref = ',
' @"11 elements"',
])
self.expect('frame var -d run-target copyDictionary[10]',
substrs=['@"bar9"', '@"foo"'])
self.expect(
'frame variable -d run-target *nscfDictionary',
patterns=[
'\(__NSCFDictionary\) \*nscfDictionary =',
'key = 0x.* @"foo"',
'value = 0x.* @"foo"',
'key = 0x.* @"bar"',
'value = 0x.* @"bar"',
'key = 0x.* @"baz"',
'value = 0x.* @"baz"',
'key = 0x.* @"quux"',
'value = 0x.* @"quux"',
])
self.expect(
'frame variable -d run-target *cfDictionaryRef',
patterns=[
'\(const __CFDictionary\) \*cfDictionaryRef =',
'key = 0x.* @"foo"',
'value = 0x.* @"foo"',
'key = 0x.* @"bar"',
'value = 0x.* @"bar"',
])
self.expect(
'frame var nscfSet cfSetRef',
substrs=[
'(NSSet *) nscfSet = ',
'2 elements',
'(CFSetRef) cfSetRef = ',
'2 elements',
])
self.expect(
'frame variable -d run-target *nscfSet',
patterns=[
'\(__NSCFSet\) \*nscfSet =',
'\[0\] = 0x.* @".*"',
'\[1\] = 0x.* @".*"',
])
self.expect(
'frame variable -d run-target *cfSetRef',
patterns=[
'\(const __CFSet\) \*cfSetRef =',
'\[0\] = 0x.* @".*"',
'\[1\] = 0x.* @".*"',
])
self.expect(
'frame variable iset1 iset2 imset',
substrs=['4 indexes', '512 indexes', '10 indexes'])
self.expect(
'frame variable binheap_ref',
substrs=['(CFBinaryHeapRef) binheap_ref = ', '@"21 items"'])
self.expect(
'expression -d run -- (NSArray*)[NSArray new]',
substrs=['@"0 elements"'])