diff --git a/simplejson/tests/test_namedtuple.py b/simplejson/tests/test_namedtuple.py index 19ad88f008ebcb095c28c67c12bdc91426661054_c2ltcGxlanNvbi90ZXN0cy90ZXN0X25hbWVkdHVwbGUucHk=..84965bcb8d87a9e3578adeac5b14cc8dd41a11ed_c2ltcGxlanNvbi90ZXN0cy90ZXN0X25hbWVkdHVwbGUucHk= 100644 --- a/simplejson/tests/test_namedtuple.py +++ b/simplejson/tests/test_namedtuple.py @@ -21,5 +21,19 @@ Value = namedtuple('Value', ['value']) Point = namedtuple('Point', ['x', 'y']) +class DuckValue(object): + def __init__(self, *args): + self.value = Value(*args) + + def _asdict(self): + return self.value._asdict() + +class DuckPoint(object): + def __init__(self, *args): + self.point = Point(*args) + + def _asdict(self): + return self.point._asdict() + class TestNamedTuple(unittest.TestCase): def test_namedtuple_dumps(self): @@ -24,4 +38,4 @@ class TestNamedTuple(unittest.TestCase): def test_namedtuple_dumps(self): - for v in [Value(1), Point(1, 2)]: + for v in [Value(1), Point(1, 2), DuckValue(1), DuckPoint(1, 2)]: d = v._asdict() @@ -27,5 +41,4 @@ d = v._asdict() - l = list(v) self.assertEqual(d, json.loads(json.dumps(v))) self.assertEqual( d, @@ -35,6 +48,10 @@ d, json.loads(json.dumps(v, namedtuple_as_object=True, tuple_as_array=False))) + + def test_namedtuple_dumps_false(self): + for v in [Value(1), Point(1, 2)]: + l = list(v) self.assertEqual( l, json.loads(json.dumps(v, namedtuple_as_object=False))) @@ -42,5 +59,5 @@ tuple_as_array=False, namedtuple_as_object=False) def test_namedtuple_dump(self): - for v in [Value(1), Point(1, 2)]: + for v in [Value(1), Point(1, 2), DuckValue(1), DuckPoint(1, 2)]: d = v._asdict() @@ -46,5 +63,4 @@ d = v._asdict() - l = list(v) sio = StringIO() json.dump(v, sio) self.assertEqual(d, json.loads(sio.getvalue())) @@ -62,6 +78,10 @@ self.assertEqual( d, json.loads(sio.getvalue())) + + def test_namedtuple_dump_false(self): + for v in [Value(1), Point(1, 2)]: + l = list(v) sio = StringIO() json.dump(v, sio, namedtuple_as_object=False) self.assertEqual(