# 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.runCmd("settings set target.prefer-dynamic-value no-dynamic-values") 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"'] )