summaryrefslogtreecommitdiff
path: root/simplejson/tests/test_iterable.py
diff options
context:
space:
mode:
Diffstat (limited to 'simplejson/tests/test_iterable.py')
-rw-r--r--simplejson/tests/test_iterable.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/simplejson/tests/test_iterable.py b/simplejson/tests/test_iterable.py
new file mode 100644
index 0000000..4b37d00
--- /dev/null
+++ b/simplejson/tests/test_iterable.py
@@ -0,0 +1,31 @@
+import unittest
+from StringIO import StringIO
+
+import simplejson as json
+
+def iter_dumps(obj, **kw):
+ return ''.join(json.JSONEncoder(**kw).iterencode(obj))
+
+def sio_dump(obj, **kw):
+ sio = StringIO()
+ json.dumps(obj, **kw)
+ return sio.getvalue()
+
+class TestIterable(unittest.TestCase):
+ def test_iterable(self):
+ l = [1, 2, 3]
+ for dumps in (json.dumps, iter_dumps, sio_dump):
+ expect = dumps(l)
+ default_expect = dumps(sum(l))
+ # Default is False
+ self.assertRaises(TypeError, dumps, iter(l))
+ self.assertRaises(TypeError, dumps, iter(l), iterable_as_array=False)
+ self.assertEqual(expect, dumps(iter(l), iterable_as_array=True))
+ # Ensure that the "default" gets called
+ self.assertEqual(default_expect, dumps(iter(l), default=sum))
+ self.assertEqual(default_expect, dumps(iter(l), iterable_as_array=False, default=sum))
+ # Ensure that the "default" does not get called
+ self.assertEqual(
+ default_expect,
+ dumps(iter(l), iterable_as_array=True, default=sum))
+ \ No newline at end of file