1*9d5e95d0SJonas Devlieghere# encoding: utf-8
2*9d5e95d0SJonas Devlieghere"""
3*9d5e95d0SJonas DevlieghereTest lldb data formatter subsystem.
4*9d5e95d0SJonas Devlieghere"""
5*9d5e95d0SJonas Devlieghere
6*9d5e95d0SJonas Devliegherefrom __future__ import print_function
7*9d5e95d0SJonas Devlieghere
8*9d5e95d0SJonas Devlieghereimport lldb
9*9d5e95d0SJonas Devliegherefrom lldbsuite.test.decorators import *
10*9d5e95d0SJonas Devliegherefrom lldbsuite.test.lldbtest import *
11*9d5e95d0SJonas Devliegherefrom lldbsuite.test import lldbutil
12*9d5e95d0SJonas Devlieghere
13*9d5e95d0SJonas Devliegherefrom ObjCDataFormatterTestCase import ObjCDataFormatterTestCase
14*9d5e95d0SJonas Devlieghere
15*9d5e95d0SJonas Devlieghere
16*9d5e95d0SJonas Devlieghereclass ObjCDataFormatterNSNumber(ObjCDataFormatterTestCase):
17*9d5e95d0SJonas Devlieghere
18*9d5e95d0SJonas Devlieghere    @skipUnlessDarwin
19*9d5e95d0SJonas Devlieghere    def test_nsnumber_with_run_command(self):
20*9d5e95d0SJonas Devlieghere        """Test formatters for  NS container classes."""
21*9d5e95d0SJonas Devlieghere        self.appkit_tester_impl(self.nscontainers_data_formatter_commands, True)
22*9d5e95d0SJonas Devlieghere
23*9d5e95d0SJonas Devlieghere    @skipUnlessDarwin
24*9d5e95d0SJonas Devlieghere    def test_nsnumber_with_run_command_no_const(self):
25*9d5e95d0SJonas Devlieghere        """Test formatters for  NS container classes."""
26*9d5e95d0SJonas Devlieghere        self.appkit_tester_impl(self.nscontainers_data_formatter_commands, False)
27*9d5e95d0SJonas Devlieghere
28*9d5e95d0SJonas Devlieghere    def nscontainers_data_formatter_commands(self):
29*9d5e95d0SJonas Devlieghere        self.expect(
30*9d5e95d0SJonas Devlieghere            'frame variable newArray nsDictionary newDictionary nscfDictionary cfDictionaryRef newMutableDictionary cfarray_ref mutable_array_ref',
31*9d5e95d0SJonas Devlieghere            substrs=[
32*9d5e95d0SJonas Devlieghere                '(NSArray *) newArray = ', '@"50 elements"',
33*9d5e95d0SJonas Devlieghere                '(NSDictionary *) nsDictionary = ', ' 2 key/value pairs',
34*9d5e95d0SJonas Devlieghere                '(NSDictionary *) newDictionary = ', ' 12 key/value pairs',
35*9d5e95d0SJonas Devlieghere                '(CFDictionaryRef) cfDictionaryRef = ', ' 2 key/value pairs',
36*9d5e95d0SJonas Devlieghere                '(NSDictionary *) newMutableDictionary = ', ' 21 key/value pairs',
37*9d5e95d0SJonas Devlieghere                '(CFArrayRef) cfarray_ref = ', '@"3 elements"',
38*9d5e95d0SJonas Devlieghere                '(CFMutableArrayRef) mutable_array_ref = ', '@"11 elements"'
39*9d5e95d0SJonas Devlieghere            ])
40*9d5e95d0SJonas Devlieghere
41*9d5e95d0SJonas Devlieghere        numbers = [ ("num1", "(int)5"),
42*9d5e95d0SJonas Devlieghere                    ("num2", "(float)3.140000"),
43*9d5e95d0SJonas Devlieghere                    ("num3", "(double)3.14"),
44*9d5e95d0SJonas Devlieghere                    ("num4", "(int128_t)18446744073709551614"),
45*9d5e95d0SJonas Devlieghere                    ("num5", "(char)65"),
46*9d5e95d0SJonas Devlieghere                    ("num6", "(long)255"),
47*9d5e95d0SJonas Devlieghere                    ("num7", "(long)2000000"),
48*9d5e95d0SJonas Devlieghere                    ("num8_Y", "YES"),
49*9d5e95d0SJonas Devlieghere                    ("num8_N", "NO"),
50*9d5e95d0SJonas Devlieghere                    ("num9", "(short)-31616"),
51*9d5e95d0SJonas Devlieghere                    ("num_at1", "(int)12"),
52*9d5e95d0SJonas Devlieghere                    ("num_at2", "(int)-12"),
53*9d5e95d0SJonas Devlieghere                    ("num_at3", "(double)12.5"),
54*9d5e95d0SJonas Devlieghere                    ("num_at4", "(double)-12.5"),
55*9d5e95d0SJonas Devlieghere                    ("num_at5", "(char)97"),
56*9d5e95d0SJonas Devlieghere                    ("num_at6", "(float)42.123"),
57*9d5e95d0SJonas Devlieghere                    ("num_at7", "(double)43.123"),
58*9d5e95d0SJonas Devlieghere                    ("num_at8", "(long)12345"),
59*9d5e95d0SJonas Devlieghere                    ("num_at9", "17375808098308635870"),
60*9d5e95d0SJonas Devlieghere                    ("num_at9b", "-1070935975400915746"),
61*9d5e95d0SJonas Devlieghere                    ("num_at10", "YES"),
62*9d5e95d0SJonas Devlieghere                    ("num_at11", "NO"),
63*9d5e95d0SJonas Devlieghere        ]
64*9d5e95d0SJonas Devlieghere
65*9d5e95d0SJonas Devlieghere        for var, res in numbers:
66*9d5e95d0SJonas Devlieghere            self.expect('frame variable ' + var, substrs=[res])
67*9d5e95d0SJonas Devlieghere
68