1
1
from testutils import assert_raises
2
2
import json
3
- from io import StringIO
3
+ from io import StringIO , BytesIO
4
4
5
5
def round_trip_test (obj ):
6
6
# serde_json and Python's json module produce slightly differently spaced
@@ -15,7 +15,7 @@ def json_dump(obj):
15
15
return f .getvalue ()
16
16
17
17
def json_load (obj ):
18
- f = StringIO (obj )
18
+ f = StringIO (obj ) if isinstance ( obj , str ) else BytesIO ( bytes ( obj ))
19
19
return json .load (f )
20
20
21
21
assert '"string"' == json .dumps ("string" )
@@ -70,42 +70,92 @@ def json_load(obj):
70
70
assert json .dumps ({'3' : 'abc' }) == json .dumps ({3 : 'abc' })
71
71
72
72
assert 1 == json .loads ("1" )
73
+ assert 1 == json .loads (b"1" )
74
+ assert 1 == json .loads (bytearray (b"1" ))
73
75
assert 1 == json_load ("1" )
76
+ assert 1 == json_load (b"1" )
77
+ assert 1 == json_load (bytearray (b"1" ))
74
78
75
79
assert - 1 == json .loads ("-1" )
80
+ assert - 1 == json .loads (b"-1" )
81
+ assert - 1 == json .loads (bytearray (b"-1" ))
76
82
assert - 1 == json_load ("-1" )
83
+ assert - 1 == json_load (b"-1" )
84
+ assert - 1 == json_load (bytearray (b"-1" ))
77
85
78
86
assert 1.0 == json .loads ("1.0" )
87
+ assert 1.0 == json .loads (b"1.0" )
88
+ assert 1.0 == json .loads (bytearray (b"1.0" ))
79
89
assert 1.0 == json_load ("1.0" )
90
+ assert 1.0 == json_load (b"1.0" )
91
+ assert 1.0 == json_load (bytearray (b"1.0" ))
80
92
81
93
assert - 1.0 == json .loads ("-1.0" )
94
+ assert - 1.0 == json .loads (b"-1.0" )
95
+ assert - 1.0 == json .loads (bytearray (b"-1.0" ))
82
96
assert - 1.0 == json_load ("-1.0" )
97
+ assert - 1.0 == json_load (b"-1.0" )
98
+ assert - 1.0 == json_load (bytearray (b"-1.0" ))
83
99
84
100
assert "str" == json .loads ('"str"' )
101
+ assert "str" == json .loads (b'"str"' )
102
+ assert "str" == json .loads (bytearray (b'"str"' ))
85
103
assert "str" == json_load ('"str"' )
104
+ assert "str" == json_load (b'"str"' )
105
+ assert "str" == json_load (bytearray (b'"str"' ))
86
106
87
107
assert True is json .loads ('true' )
108
+ assert True is json .loads (b'true' )
109
+ assert True is json .loads (bytearray (b'true' ))
88
110
assert True is json_load ('true' )
111
+ assert True is json_load (b'true' )
112
+ assert True is json_load (bytearray (b'true' ))
89
113
90
114
assert False is json .loads ('false' )
115
+ assert False is json .loads (b'false' )
116
+ assert False is json .loads (bytearray (b'false' ))
91
117
assert False is json_load ('false' )
118
+ assert False is json_load (b'false' )
119
+ assert False is json_load (bytearray (b'false' ))
92
120
93
121
assert None is json .loads ('null' )
122
+ assert None is json .loads (b'null' )
123
+ assert None is json .loads (bytearray (b'null' ))
94
124
assert None is json_load ('null' )
125
+ assert None is json_load (b'null' )
126
+ assert None is json_load (bytearray (b'null' ))
95
127
96
128
assert [] == json .loads ('[]' )
129
+ assert [] == json .loads (b'[]' )
130
+ assert [] == json .loads (bytearray (b'[]' ))
97
131
assert [] == json_load ('[]' )
132
+ assert [] == json_load (b'[]' )
133
+ assert [] == json_load (bytearray (b'[]' ))
98
134
99
135
assert ['a' ] == json .loads ('["a"]' )
136
+ assert ['a' ] == json .loads (b'["a"]' )
137
+ assert ['a' ] == json .loads (bytearray (b'["a"]' ))
100
138
assert ['a' ] == json_load ('["a"]' )
139
+ assert ['a' ] == json_load (b'["a"]' )
140
+ assert ['a' ] == json_load (bytearray (b'["a"]' ))
101
141
102
142
assert [['a' ], 'b' ] == json .loads ('[["a"], "b"]' )
143
+ assert [['a' ], 'b' ] == json .loads (b'[["a"], "b"]' )
144
+ assert [['a' ], 'b' ] == json .loads (bytearray (b'[["a"], "b"]' ))
103
145
assert [['a' ], 'b' ] == json_load ('[["a"], "b"]' )
146
+ assert [['a' ], 'b' ] == json_load (b'[["a"], "b"]' )
147
+ assert [['a' ], 'b' ] == json_load (bytearray (b'[["a"], "b"]' ))
104
148
105
149
class String (str ): pass
150
+ class Bytes (bytes ): pass
151
+ class ByteArray (bytearray ): pass
106
152
107
153
assert "string" == json .loads (String ('"string"' ))
154
+ assert "string" == json .loads (Bytes (b'"string"' ))
155
+ assert "string" == json .loads (ByteArray (b'"string"' ))
108
156
assert "string" == json_load (String ('"string"' ))
157
+ assert "string" == json_load (Bytes (b'"string"' ))
158
+ assert "string" == json_load (ByteArray (b'"string"' ))
109
159
110
160
assert '"string"' == json .dumps (String ("string" ))
111
161
assert '"string"' == json_dump (String ("string" ))
0 commit comments