199451b44SJordan Rupprecht# encoding: utf-8
299451b44SJordan Rupprecht"""
399451b44SJordan RupprechtTest lldb data formatter subsystem.
499451b44SJordan Rupprecht"""
599451b44SJordan Rupprecht
699451b44SJordan Rupprecht
799451b44SJordan Rupprechtimport lldb
899451b44SJordan Rupprechtfrom lldbsuite.test.decorators import *
999451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import *
1099451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil
1199451b44SJordan Rupprecht
1299451b44SJordan Rupprechtfrom ObjCDataFormatterTestCase import ObjCDataFormatterTestCase
1399451b44SJordan Rupprecht
1499451b44SJordan Rupprecht
1599451b44SJordan Rupprechtclass ObjCDataFormatterNSContainer(ObjCDataFormatterTestCase):
1699451b44SJordan Rupprecht
1799451b44SJordan Rupprecht    def test_nscontainers_with_run_command(self):
1899451b44SJordan Rupprecht        """Test formatters for  NS container classes."""
19*9d5e95d0SJonas Devlieghere        self.appkit_tester_impl(self.nscontainers_data_formatter_commands, False)
2099451b44SJordan Rupprecht
2199451b44SJordan Rupprecht    def nscontainers_data_formatter_commands(self):
2299451b44SJordan Rupprecht        self.expect(
234eabb120SJim Ingham            'frame variable newArray nsDictionary newDictionary nscfDictionary cfDictionaryRef newMutableDictionary copyDictionary newMutableDictionaryRef cfarray_ref mutable_array_ref',
2499451b44SJordan Rupprecht            substrs=[
2599451b44SJordan Rupprecht                '(NSArray *) newArray = ',
2699451b44SJordan Rupprecht                ' @"50 elements"',
2799451b44SJordan Rupprecht                '(NSDictionary *) nsDictionary = ',
2899451b44SJordan Rupprecht                ' 2 key/value pairs',
2999451b44SJordan Rupprecht                '(NSDictionary *) newDictionary = ',
3099451b44SJordan Rupprecht                ' 12 key/value pairs',
318f5beb4cSMed Ismail Bennani                '(NSDictionary *) nscfDictionary = ',
328f5beb4cSMed Ismail Bennani                ' 4 key/value pairs',
3399451b44SJordan Rupprecht                '(CFDictionaryRef) cfDictionaryRef = ',
340eba9de7SMed Ismail Bennani                ' 2 key/value pairs',
3599451b44SJordan Rupprecht                '(NSDictionary *) newMutableDictionary = ',
3699451b44SJordan Rupprecht                ' 21 key/value pairs',
374eabb120SJim Ingham                '(NSMutableDictionary *) copyDictionary = ',
384eabb120SJim Ingham                ' 21 key/value pairs',
3976e3a27cSJonas Devlieghere                '(CFMutableDictionaryRef) newMutableDictionaryRef = ',
4076e3a27cSJonas Devlieghere                ' 21 key/value pairs',
4199451b44SJordan Rupprecht                '(CFArrayRef) cfarray_ref = ',
4299451b44SJordan Rupprecht                ' @"3 elements"',
4399451b44SJordan Rupprecht                '(CFMutableArrayRef) mutable_array_ref = ',
4499451b44SJordan Rupprecht                ' @"11 elements"',
4599451b44SJordan Rupprecht            ])
4699451b44SJordan Rupprecht
474eabb120SJim Ingham        self.expect('frame var -d run-target copyDictionary[10]',
484eabb120SJim Ingham                    substrs=['@"bar9"', '@"foo"'])
494eabb120SJim Ingham
5099451b44SJordan Rupprecht        self.expect(
518f5beb4cSMed Ismail Bennani            'frame variable -d run-target *nscfDictionary',
528f5beb4cSMed Ismail Bennani            patterns=[
538f5beb4cSMed Ismail Bennani                '\(__NSCFDictionary\) \*nscfDictionary =',
548f5beb4cSMed Ismail Bennani                'key = 0x.* @"foo"',
558f5beb4cSMed Ismail Bennani                'value = 0x.* @"foo"',
568f5beb4cSMed Ismail Bennani                'key = 0x.* @"bar"',
578f5beb4cSMed Ismail Bennani                'value = 0x.* @"bar"',
588f5beb4cSMed Ismail Bennani                'key = 0x.* @"baz"',
598f5beb4cSMed Ismail Bennani                'value = 0x.* @"baz"',
608f5beb4cSMed Ismail Bennani                'key = 0x.* @"quux"',
618f5beb4cSMed Ismail Bennani                'value = 0x.* @"quux"',
628f5beb4cSMed Ismail Bennani                ])
638f5beb4cSMed Ismail Bennani
648f5beb4cSMed Ismail Bennani
658f5beb4cSMed Ismail Bennani        self.expect(
660eba9de7SMed Ismail Bennani            'frame variable -d run-target *cfDictionaryRef',
670eba9de7SMed Ismail Bennani            patterns=[
680eba9de7SMed Ismail Bennani                '\(const __CFDictionary\) \*cfDictionaryRef =',
690eba9de7SMed Ismail Bennani                'key = 0x.* @"foo"',
700eba9de7SMed Ismail Bennani                'value = 0x.* @"foo"',
710eba9de7SMed Ismail Bennani                'key = 0x.* @"bar"',
720eba9de7SMed Ismail Bennani                'value = 0x.* @"bar"',
730eba9de7SMed Ismail Bennani                ])
740eba9de7SMed Ismail Bennani
750eba9de7SMed Ismail Bennani
760eba9de7SMed Ismail Bennani        self.expect(
770eba9de7SMed Ismail Bennani          'frame var nscfSet cfSetRef',
788f5beb4cSMed Ismail Bennani          substrs=[
798f5beb4cSMed Ismail Bennani          '(NSSet *) nscfSet = ',
808f5beb4cSMed Ismail Bennani          '2 elements',
810eba9de7SMed Ismail Bennani          '(CFSetRef) cfSetRef = ',
820eba9de7SMed Ismail Bennani          '2 elements',
838f5beb4cSMed Ismail Bennani          ])
848f5beb4cSMed Ismail Bennani
858f5beb4cSMed Ismail Bennani        self.expect(
868f5beb4cSMed Ismail Bennani          'frame variable -d run-target *nscfSet',
878f5beb4cSMed Ismail Bennani          patterns=[
888f5beb4cSMed Ismail Bennani              '\(__NSCFSet\) \*nscfSet =',
898f5beb4cSMed Ismail Bennani              '\[0\] = 0x.* @".*"',
908f5beb4cSMed Ismail Bennani              '\[1\] = 0x.* @".*"',
918f5beb4cSMed Ismail Bennani                    ])
928f5beb4cSMed Ismail Bennani
938f5beb4cSMed Ismail Bennani        self.expect(
940eba9de7SMed Ismail Bennani          'frame variable -d run-target *cfSetRef',
950eba9de7SMed Ismail Bennani          patterns=[
960eba9de7SMed Ismail Bennani              '\(const __CFSet\) \*cfSetRef =',
970eba9de7SMed Ismail Bennani              '\[0\] = 0x.* @".*"',
980eba9de7SMed Ismail Bennani              '\[1\] = 0x.* @".*"',
990eba9de7SMed Ismail Bennani                    ])
1000eba9de7SMed Ismail Bennani
1010eba9de7SMed Ismail Bennani        self.expect(
10299451b44SJordan Rupprecht            'frame variable iset1 iset2 imset',
10399451b44SJordan Rupprecht            substrs=['4 indexes', '512 indexes', '10 indexes'])
10499451b44SJordan Rupprecht
10599451b44SJordan Rupprecht        self.expect(
10699451b44SJordan Rupprecht            'frame variable binheap_ref',
10799451b44SJordan Rupprecht            substrs=['(CFBinaryHeapRef) binheap_ref = ', '@"21 items"'])
10899451b44SJordan Rupprecht
10999451b44SJordan Rupprecht        self.expect(
11099451b44SJordan Rupprecht            'expression -d run -- (NSArray*)[NSArray new]',
11199451b44SJordan Rupprecht            substrs=['@"0 elements"'])
112