1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
# 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):
@skipUnlessDarwin
def test_nscontainers_with_run_command(self):
"""Test formatters for NS container classes."""
self.appkit_tester_impl(self.nscontainers_data_formatter_commands)
def nscontainers_data_formatter_commands(self):
self.expect(
'frame variable newArray nsDictionary newDictionary nscfDictionary cfDictionaryRef newMutableDictionary 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',
'(CFArrayRef) cfarray_ref = ',
' @"3 elements"',
'(CFMutableArrayRef) mutable_array_ref = ',
' @"11 elements"',
])
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"'])
|