Skip to content

Commit fd4e901

Browse files
committed
default recursion reset test
1 parent 15757e0 commit fd4e901

1 file changed

Lines changed: 21 additions & 11 deletions

File tree

test/test_default.py

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,18 @@
88
import orjson
99

1010

11+
class Recursive:
12+
13+
def __init__(self, cur):
14+
self.cur = cur
15+
16+
def default(obj):
17+
if obj.cur != 0:
18+
obj.cur -= 1
19+
return obj
20+
return obj.cur
21+
22+
1123
class TypeTests(unittest.TestCase):
1224

1325
def test_default_not_callable(self):
@@ -141,22 +153,20 @@ def test_default_recursion(self):
141153
"""
142154
dumps() default recursion limit
143155
"""
144-
class Recursive:
145-
146-
def __init__(self, cur):
147-
self.cur = cur
148-
149-
def default(obj):
150-
if obj.cur != 0:
151-
obj.cur -= 1
152-
return obj
153-
return obj.cur
154-
155156
self.assertEqual(
156157
orjson.dumps(Recursive(5), default=default),
157158
b'0',
158159
)
159160

161+
def test_default_recursion_reset(self):
162+
"""
163+
dumps() default recursion limit reset
164+
"""
165+
self.assertEqual(
166+
orjson.dumps([Recursive(5), {'a': 'b'}, Recursive(5), Recursive(5)], default=default),
167+
b'[0,{"a":"b"},0,0]',
168+
)
169+
160170
def test_default_recursion_infinite(self):
161171
"""
162172
dumps() default infinite recursion

0 commit comments

Comments
 (0)