1d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen"""
2b1821b4d25d9c31437b8e97b9feccd1141b9388bJohnny ChenTest lldb Python API object's default constructor and make sure it is invalid
3d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chenafter initial construction.
4d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
5287e28b6dfc4f71113fe753223f165128acd4ff5Johnny ChenThere are also some cases of boundary condition testings sprinkled throughout
6287e28b6dfc4f71113fe753223f165128acd4ff5Johnny Chenthe tests where None is passed to SB API which expects (const char *) in the
7287e28b6dfc4f71113fe753223f165128acd4ff5Johnny ChenC++ API counterpart.  Passing None should not crash lldb!
8287e28b6dfc4f71113fe753223f165128acd4ff5Johnny Chen
915be1d0710fbbd52465e6981a484a6439afe4093Johnny ChenThere are three exceptions to the above general rules, though; API objects
1015be1d0710fbbd52465e6981a484a6439afe4093Johnny ChenSBCommadnReturnObject, SBStream, and SBSymbolContextList, are all valid objects
1115be1d0710fbbd52465e6981a484a6439afe4093Johnny Chenafter default construction.
12d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen"""
13d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
14d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chenimport os, time
15d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chenimport re
16d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chenimport unittest2
17d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chenimport lldb, lldbutil
18d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chenfrom lldbtest import *
19d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
20d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chenclass APIDefaultConstructorTestCase(TestBase):
21d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
22d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    mydir = os.path.join("python_api", "default-constructor")
23d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
24d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
25d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBAddress(self):
26d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBAddress()
27d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
28d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
29d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
301581e74f6217967228294b8079b6e2f908213d6dJohnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
311581e74f6217967228294b8079b6e2f908213d6dJohnny Chen        import sb_address
321581e74f6217967228294b8079b6e2f908213d6dJohnny Chen        sb_address.fuzz_obj(obj)
33d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
34d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
35d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBBlock(self):
36d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBBlock()
37d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
38d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
39d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
4007dd55a61f1cf76834df5f7e575af4686ab4bcacJohnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
4107dd55a61f1cf76834df5f7e575af4686ab4bcacJohnny Chen        import sb_block
4207dd55a61f1cf76834df5f7e575af4686ab4bcacJohnny Chen        sb_block.fuzz_obj(obj)
43d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
44d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
45d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBBreakpoint(self):
46d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBBreakpoint()
47d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
48d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
49d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
5015be1d0710fbbd52465e6981a484a6439afe4093Johnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
5115be1d0710fbbd52465e6981a484a6439afe4093Johnny Chen        import sb_breakpoint
5215be1d0710fbbd52465e6981a484a6439afe4093Johnny Chen        sb_breakpoint.fuzz_obj(obj)
53d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
54d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
55d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBBreakpointLocation(self):
56d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBBreakpointLocation()
57d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
58d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
59d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
60cd6377ee248eb5c7f0888b92bcbf52b79b6cea79Johnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
61cd6377ee248eb5c7f0888b92bcbf52b79b6cea79Johnny Chen        import sb_breakpointlocation
62cd6377ee248eb5c7f0888b92bcbf52b79b6cea79Johnny Chen        sb_breakpointlocation.fuzz_obj(obj)
63d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
64d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
65d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBBroadcaster(self):
66d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBBroadcaster()
67d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
68d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
69d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
7016c8872b2710c60b8b3798e618472952046be0b1Johnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
7116c8872b2710c60b8b3798e618472952046be0b1Johnny Chen        import sb_broadcaster
7216c8872b2710c60b8b3798e618472952046be0b1Johnny Chen        sb_broadcaster.fuzz_obj(obj)
73d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
74d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
75d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBCommandReturnObject(self):
76d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        """SBCommandReturnObject object is valid after default construction."""
77d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBCommandReturnObject()
78d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
79d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
80d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertTrue(obj)
81d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
82d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
83d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBCommunication(self):
84d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBCommunication()
85d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
86d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
87d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
88fa3263b9838cc113c31ac116dca250847aefeffeJohnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
89fa3263b9838cc113c31ac116dca250847aefeffeJohnny Chen        import sb_communication
90fa3263b9838cc113c31ac116dca250847aefeffeJohnny Chen        sb_communication.fuzz_obj(obj)
91d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
92d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
93d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBCompileUnit(self):
94d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBCompileUnit()
95d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
96d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
97d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
98165e54925078a564f524c8d795bbf3a17341777fJohnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
99165e54925078a564f524c8d795bbf3a17341777fJohnny Chen        import sb_compileunit
100165e54925078a564f524c8d795bbf3a17341777fJohnny Chen        sb_compileunit.fuzz_obj(obj)
101d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
102d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
103d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBDebugger(self):
104d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBDebugger()
105d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
106d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
107d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
10843fc089c932931492c73d2a02cea65958d498deeJohnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
10943fc089c932931492c73d2a02cea65958d498deeJohnny Chen        import sb_debugger
11043fc089c932931492c73d2a02cea65958d498deeJohnny Chen        sb_debugger.fuzz_obj(obj)
111d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
112d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
113d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBError(self):
114d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBError()
115d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
116d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
117d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
1183801c2cca7646d3d71bdbead8207a52c1d2a4722Johnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
1193801c2cca7646d3d71bdbead8207a52c1d2a4722Johnny Chen        import sb_error
1203801c2cca7646d3d71bdbead8207a52c1d2a4722Johnny Chen        sb_error.fuzz_obj(obj)
121d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
122d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
123d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBEvent(self):
124d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBEvent()
125cdb1b406c015a93d4b5bebc92785a1cce52cf022Johnny Chen        # This is just to test that typemap, as defined in lldb.swig, works.
12633b4be1d7ca14b25d0d57b5a2032971294980996Johnny Chen        obj2 = lldb.SBEvent(0, "abc")
127d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
128d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
129d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
130e4a2fd57ad24208cb4c602c3a017aabad8b2f314Johnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
131e4a2fd57ad24208cb4c602c3a017aabad8b2f314Johnny Chen        import sb_event
132e4a2fd57ad24208cb4c602c3a017aabad8b2f314Johnny Chen        sb_event.fuzz_obj(obj)
133d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
134d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
135d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBFileSpec(self):
136d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBFileSpec()
137287e28b6dfc4f71113fe753223f165128acd4ff5Johnny Chen        # This is just to test that FileSpec(None) does not crash.
138287e28b6dfc4f71113fe753223f165128acd4ff5Johnny Chen        obj2 = lldb.SBFileSpec(None, True)
139d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
140d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
141d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
1422fe615709082d0847d35c440b84be12a3ca45a20Johnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
1432fe615709082d0847d35c440b84be12a3ca45a20Johnny Chen        import sb_filespec
1442fe615709082d0847d35c440b84be12a3ca45a20Johnny Chen        sb_filespec.fuzz_obj(obj)
145d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
146d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
147d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBFrame(self):
148d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBFrame()
149d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
150d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
151d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
152c50be73025d175d0df95ea807abb1b2dec1f0e67Johnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
153c50be73025d175d0df95ea807abb1b2dec1f0e67Johnny Chen        import sb_frame
154c50be73025d175d0df95ea807abb1b2dec1f0e67Johnny Chen        sb_frame.fuzz_obj(obj)
155d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
156d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
157d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBFunction(self):
158d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBFunction()
159d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
160d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
161d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
162c50be73025d175d0df95ea807abb1b2dec1f0e67Johnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
163c50be73025d175d0df95ea807abb1b2dec1f0e67Johnny Chen        import sb_function
164c50be73025d175d0df95ea807abb1b2dec1f0e67Johnny Chen        sb_function.fuzz_obj(obj)
165d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
166d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
167d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBInputReader(self):
168d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBInputReader()
169d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
170d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
171d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
172b7b4947c5cd2ada69d9d3d4539557853ad9d2d7aJohnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
173b7b4947c5cd2ada69d9d3d4539557853ad9d2d7aJohnny Chen        import sb_inputreader
174b7b4947c5cd2ada69d9d3d4539557853ad9d2d7aJohnny Chen        sb_inputreader.fuzz_obj(obj)
175d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
176d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
177d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBInstruction(self):
178d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBInstruction()
179d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
180d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
181d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
1821d27c3a4a66a78e3e1b88243e498f83d6fd0ae06Johnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
1831d27c3a4a66a78e3e1b88243e498f83d6fd0ae06Johnny Chen        import sb_instruction
1841d27c3a4a66a78e3e1b88243e498f83d6fd0ae06Johnny Chen        sb_instruction.fuzz_obj(obj)
185d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
186d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
187d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBInstructionList(self):
188d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBInstructionList()
189d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
190d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
191d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
1921d27c3a4a66a78e3e1b88243e498f83d6fd0ae06Johnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
1931d27c3a4a66a78e3e1b88243e498f83d6fd0ae06Johnny Chen        import sb_instructionlist
1941d27c3a4a66a78e3e1b88243e498f83d6fd0ae06Johnny Chen        sb_instructionlist.fuzz_obj(obj)
195d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
196d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
197d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBLineEntry(self):
198d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBLineEntry()
199d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
200d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
201d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
202ca8f94a62934494db29d01a235f7d4eb6ee2089dJohnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
203ca8f94a62934494db29d01a235f7d4eb6ee2089dJohnny Chen        import sb_lineentry
204ca8f94a62934494db29d01a235f7d4eb6ee2089dJohnny Chen        sb_lineentry.fuzz_obj(obj)
205d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
206d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
207d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBListener(self):
208d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBListener()
209d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
210d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
211d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
212ff8e5ed3c017fa958c9cb0a39dc245f8b8453e7bJohnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
213ff8e5ed3c017fa958c9cb0a39dc245f8b8453e7bJohnny Chen        import sb_listener
214ff8e5ed3c017fa958c9cb0a39dc245f8b8453e7bJohnny Chen        sb_listener.fuzz_obj(obj)
215d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
216d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
217d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBModule(self):
218d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBModule()
219d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
220d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
221d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
222b7a9d64b2558ed5b8c15ce37de47fc7dd33004e8Johnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
223b7a9d64b2558ed5b8c15ce37de47fc7dd33004e8Johnny Chen        import sb_module
224b7a9d64b2558ed5b8c15ce37de47fc7dd33004e8Johnny Chen        sb_module.fuzz_obj(obj)
225d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
226d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
227d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBProcess(self):
228d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBProcess()
229d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
230d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
231d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
232b7a9d64b2558ed5b8c15ce37de47fc7dd33004e8Johnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
233b7a9d64b2558ed5b8c15ce37de47fc7dd33004e8Johnny Chen        import sb_process
234b7a9d64b2558ed5b8c15ce37de47fc7dd33004e8Johnny Chen        sb_process.fuzz_obj(obj)
235d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
236d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
2377e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen    def test_SBSection(self):
2387e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen        obj = lldb.SBSection()
2397e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen        if self.TraceOn():
2407e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen            print obj
2417e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen        self.assertFalse(obj)
2427e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
2437e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen        import sb_section
2447e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen        sb_section.fuzz_obj(obj)
2457e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen
2467e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen    @python_api_test
247d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBStream(self):
248d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        """SBStream object is valid after default construction."""
249d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBStream()
250d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
251d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
252d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertTrue(obj)
253d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
254d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
255d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBStringList(self):
256d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBStringList()
257d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
258d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
259d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
2602287366b1427dcafd8b45e6c2de939d70eaebbd3Johnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
2612287366b1427dcafd8b45e6c2de939d70eaebbd3Johnny Chen        import sb_stringlist
2622287366b1427dcafd8b45e6c2de939d70eaebbd3Johnny Chen        sb_stringlist.fuzz_obj(obj)
263d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
264d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
265d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBSymbol(self):
266d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBSymbol()
267d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
268d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
269d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
270f0e0bc01569e6513a4f88cb5aa2aca30878f4628Johnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
271f0e0bc01569e6513a4f88cb5aa2aca30878f4628Johnny Chen        import sb_symbol
272f0e0bc01569e6513a4f88cb5aa2aca30878f4628Johnny Chen        sb_symbol.fuzz_obj(obj)
273d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
274d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
275d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBSymbolContext(self):
276d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBSymbolContext()
277d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
278d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
279d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
280f0e0bc01569e6513a4f88cb5aa2aca30878f4628Johnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
281f0e0bc01569e6513a4f88cb5aa2aca30878f4628Johnny Chen        import sb_symbolcontext
282f0e0bc01569e6513a4f88cb5aa2aca30878f4628Johnny Chen        sb_symbolcontext.fuzz_obj(obj)
283d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
284d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
285d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBSymbolContextList(self):
2869a39f597b4b6b10fc9704682eae51a5beff013f1Johnny Chen        """SBSymbolContextList object is valid after default construction."""
287d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBSymbolContextList()
288d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
289d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
290cd0f93876e9067135593e1e39f4d7f6fc29e24a3Johnny Chen        self.assertTrue(obj)
291d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
292d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
293d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBTarget(self):
294d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBTarget()
295d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
296d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
297d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
298e657fbc20b4d5199ad2daae85678f0038df5095dJohnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
299e657fbc20b4d5199ad2daae85678f0038df5095dJohnny Chen        import sb_target
300e657fbc20b4d5199ad2daae85678f0038df5095dJohnny Chen        sb_target.fuzz_obj(obj)
301d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
302d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
303d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBThread(self):
304d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBThread()
305d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
306d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
307d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
308e657fbc20b4d5199ad2daae85678f0038df5095dJohnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
309e657fbc20b4d5199ad2daae85678f0038df5095dJohnny Chen        import sb_thread
310e657fbc20b4d5199ad2daae85678f0038df5095dJohnny Chen        sb_thread.fuzz_obj(obj)
311d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
312d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
313d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBType(self):
31474597b88726aade190d4768062a10a67a07cd059Johnny Chen        try:
31574597b88726aade190d4768062a10a67a07cd059Johnny Chen            obj = lldb.SBType()
31674597b88726aade190d4768062a10a67a07cd059Johnny Chen            if self.TraceOn():
31774597b88726aade190d4768062a10a67a07cd059Johnny Chen                print obj
31874597b88726aade190d4768062a10a67a07cd059Johnny Chen            self.assertFalse(obj)
31974597b88726aade190d4768062a10a67a07cd059Johnny Chen            # If we reach here, the test fails.
32074597b88726aade190d4768062a10a67a07cd059Johnny Chen            self.fail("lldb.SBType() should fail, not succeed!")
32174597b88726aade190d4768062a10a67a07cd059Johnny Chen        except:
32274597b88726aade190d4768062a10a67a07cd059Johnny Chen            # Exception is expected.
32374597b88726aade190d4768062a10a67a07cd059Johnny Chen            return
32474597b88726aade190d4768062a10a67a07cd059Johnny Chen
32574597b88726aade190d4768062a10a67a07cd059Johnny Chen        # Unreachable code because lldb.SBType() should fail.
326446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
327446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen        import sb_type
328446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen        sb_type.fuzz_obj(obj)
329d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
330d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
33174597b88726aade190d4768062a10a67a07cd059Johnny Chen    def test_SBTypeList(self):
3320c64baff28c9340f84fa566df1bf9426ddd2dc31Johnny Chen        """SBTypeList object is valid after default construction."""
33374597b88726aade190d4768062a10a67a07cd059Johnny Chen        obj = lldb.SBTypeList()
334a6c1be6e7fdc713d7b276a8f760d4a38e92bd6a1Johnny Chen        if self.TraceOn():
335a6c1be6e7fdc713d7b276a8f760d4a38e92bd6a1Johnny Chen            print obj
3360c64baff28c9340f84fa566df1bf9426ddd2dc31Johnny Chen        self.assertTrue(obj)
337a6c1be6e7fdc713d7b276a8f760d4a38e92bd6a1Johnny Chen
338a6c1be6e7fdc713d7b276a8f760d4a38e92bd6a1Johnny Chen    @python_api_test
339d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBValue(self):
340d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBValue()
341d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
342d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
343d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
344446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
345446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen        import sb_value
346446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen        sb_value.fuzz_obj(obj)
347d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
348d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    @python_api_test
349d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    def test_SBValueList(self):
350d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        obj = lldb.SBValueList()
351d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        if self.TraceOn():
352d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen            print obj
353d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen        self.assertFalse(obj)
354446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
355446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen        import sb_valuelist
356446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen        sb_valuelist.fuzz_obj(obj)
357d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
358b59194fb66c078765887a3156e4c2bc32a95543fJohnny Chen    @python_api_test
359ecd4feb5111432d2878e95461220c720cb2d24c8Johnny Chen    def test_SBWatchpoint(self):
360ecd4feb5111432d2878e95461220c720cb2d24c8Johnny Chen        obj = lldb.SBWatchpoint()
361b59194fb66c078765887a3156e4c2bc32a95543fJohnny Chen        if self.TraceOn():
362b59194fb66c078765887a3156e4c2bc32a95543fJohnny Chen            print obj
363b59194fb66c078765887a3156e4c2bc32a95543fJohnny Chen        self.assertFalse(obj)
364b59194fb66c078765887a3156e4c2bc32a95543fJohnny Chen        # Do fuzz testing on the invalid obj, it should not crash lldb.
365ecd4feb5111432d2878e95461220c720cb2d24c8Johnny Chen        import sb_watchpoint
366ecd4feb5111432d2878e95461220c720cb2d24c8Johnny Chen        sb_watchpoint.fuzz_obj(obj)
367b59194fb66c078765887a3156e4c2bc32a95543fJohnny Chen
368d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen
369d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chenif __name__ == '__main__':
370d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    import atexit
371d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    lldb.SBDebugger.Initialize()
372d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    atexit.register(lambda: lldb.SBDebugger.Terminate())
373d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen    unittest2.main()
374