@@ -178,3 +178,73 @@ def test_check_yajl_version_warnsOnlyWhenMismatchedVersions(self):
178178
179179 def test_checkYajlPyAndYajlHaveSameVersion (self ):
180180 self .failUnless (yajl .check_yajl_version ())
181+
182+ def test_YajlGen_callsYajlGenFreeWhenDone (self ):
183+ self .mock ('yajl.yajl_gen.byref' , tracker = None )
184+ self .mock ('yajl.yajl.yajl_gen_alloc' )
185+ self .mock ('yajl.yajl.yajl_gen_free' )
186+ g = yajl .YajlGen ()
187+ del g
188+ self .assertSameTrace (
189+ 'Called yajl.yajl.yajl_gen_alloc(None, None)\n '
190+ 'Called yajl.yajl.yajl_gen_free(None)\n '
191+ )
192+
193+ def _yajl_gen_sample (self , g ):
194+ g .yajl_gen_map_open ()
195+ g .yajl_gen_string ("a" )
196+ g .yajl_gen_array_open ()
197+ g .yajl_gen_null ()
198+ g .yajl_gen_bool (True )
199+ g .yajl_gen_integer (1 )
200+ g .yajl_gen_double (2.2 )
201+ g .yajl_gen_number (str (3 ))
202+ yield g .yajl_gen_get_buf ()
203+ g .yajl_gen_string ("b" )
204+ g .yajl_gen_array_close ()
205+ g .yajl_gen_map_close ()
206+ yield g .yajl_gen_get_buf ()
207+
208+ def test_YajlGen_streamedOUtput (self ):
209+ g = yajl .YajlGen (beautify = False )
210+ results = list (self ._yajl_gen_sample (g ))
211+ self .failUnlessEqual (',"b"]}' , results [1 ])
212+
213+ def test_YajlGen_minimizeOUtput (self ):
214+ g = yajl .YajlGen (beautify = False )
215+ results = self ._yajl_gen_sample (g )
216+ self .failUnlessEqual (
217+ '{"a":[null,true,1,2.2,3,"b"]}' ,
218+ '' .join (results ))
219+
220+ def test_YajlGen_beautifyOUtput (self ):
221+ g = yajl .YajlGen (beautify = True )
222+ results = self ._yajl_gen_sample (g )
223+ self .failUnlessEqual (
224+ '{\n '
225+ ' "a": [\n '
226+ ' null,\n '
227+ ' true,\n '
228+ ' 1,\n '
229+ ' 2.2,\n '
230+ ' 3,\n '
231+ ' "b"\n '
232+ ' ]\n '
233+ '}\n ' ,
234+ '' .join (results ))
235+
236+ def test_YajlGen_indentOUtput (self ):
237+ g = yajl .YajlGen (beautify = True , indent = "**" )
238+ results = self ._yajl_gen_sample (g )
239+ self .failUnlessEqual (
240+ '{\n '
241+ '**"a": [\n '
242+ '****null,\n '
243+ '****true,\n '
244+ '****1,\n '
245+ '****2.2,\n '
246+ '****3,\n '
247+ '****"b"\n '
248+ '**]\n '
249+ '}\n ' ,
250+ '' .join (results ))
0 commit comments