11import x.json2 as json
22
33const sample_data = {
4- 'int' : json.Any (int (1 ))
5- 'i64' : json.Any (i64 (128 ))
6- 'f32' : json.Any (f32 (2.0 ))
4+ 'u8' : json.Any (u8 (1 ))
5+ 'u16' : json.Any (u16 (2 ))
6+ 'u32' : json.Any (u32 (3 ))
7+ 'u64' : json.Any (u64 (4 ))
8+ 'i8' : json.Any (i8 (5 ))
9+ 'i16' : json.Any (i16 (6 ))
10+ 'i32' : json.Any (i32 (7 ))
11+ 'int' : json.Any (int (8 ))
12+ 'i64' : json.Any (i64 (9 ))
13+ 'f32' : json.Any (f32 (2.3 ))
714 'f64' : json.Any (f64 (1.283 ))
815 'bool' : json.Any (false )
916 'str' : json.Any ('test' )
@@ -23,9 +30,16 @@ fn is_null(f json.Any) bool {
2330
2431fn test_f32 () {
2532 // valid conversions
26- assert sample_data['int' ] or { 0 }.f32 () == 1.0
27- assert sample_data['i64' ] or { 0 }.f32 () == 128.0
28- assert sample_data['f32' ] or { 0 }.f32 () == 2.0
33+ assert sample_data['u8' ] or { 0 }.f32 () == 1.0
34+ assert sample_data['u16' ] or { 0 }.f32 () == 2.0
35+ assert sample_data['u32' ] or { 0 }.f32 () == 3.0
36+ assert sample_data['u64' ] or { 0 }.f32 () == 4.0
37+ assert sample_data['i8' ] or { 0 }.f32 () == 5.0
38+ assert sample_data['i16' ] or { 0 }.f32 () == 6.0
39+ assert sample_data['i32' ] or { 0 }.f32 () == 7.0
40+ assert sample_data['int' ] or { 0 }.f32 () == 8.0
41+ assert sample_data['i64' ] or { 0 }.f32 () == 9.0
42+ assert sample_data['f32' ] or { 0 }.f32 () == 2.3
2943 assert sample_data['f64' ] or { 0 }.f32 () == 1.2829999923706055
3044 // invalid conversions
3145 assert sample_data['bool' ] or { 0 }.f32 () == 0.0
@@ -37,9 +51,16 @@ fn test_f32() {
3751
3852fn test_f64 () {
3953 // valid conversions
40- assert sample_data['int' ] or { 0 }.f64 () == 1.0
41- assert sample_data['i64' ] or { 0 }.f64 () == 128.0
42- assert sample_data['f32' ] or { 0 }.f64 () == 2.0
54+ assert sample_data['u8' ] or { 0 }.f64 () == 1.0
55+ assert sample_data['u16' ] or { 0 }.f64 () == 2.0
56+ assert sample_data['u32' ] or { 0 }.f64 () == 3.0
57+ assert sample_data['u64' ] or { 0 }.f64 () == 4.0
58+ assert sample_data['i8' ] or { 0 }.f64 () == 5.0
59+ assert sample_data['i16' ] or { 0 }.f64 () == 6.0
60+ assert sample_data['i32' ] or { 0 }.f64 () == 7.0
61+ assert sample_data['int' ] or { 0 }.f64 () == 8.0
62+ assert sample_data['i64' ] or { 0 }.f64 () == 9.0
63+ assert sample_data['f32' ] or { 0 }.f64 () == 2.299999952316284
4364 assert sample_data['f64' ] or { 0 }.f64 () == 1.283
4465 // invalid conversions
4566 assert sample_data['bool' ] or { 0 }.f64 () == 0.0
@@ -49,10 +70,80 @@ fn test_f64() {
4970 assert sample_data['obj' ] or { 0 }.f64 () == 0.0
5071}
5172
73+ fn test_i8 () {
74+ // valid conversions
75+ assert sample_data['u8' ] or { 0 }.i8 () == 1
76+ assert sample_data['u16' ] or { 0 }.i8 () == 2
77+ assert sample_data['u32' ] or { 0 }.i8 () == 3
78+ assert sample_data['u64' ] or { 0 }.i8 () == 4
79+ assert sample_data['i8' ] or { 0 }.i8 () == 5
80+ assert sample_data['i16' ] or { 0 }.i8 () == 6
81+ assert sample_data['i32' ] or { 0 }.i8 () == 7
82+ assert sample_data['int' ] or { 0 }.i8 () == 8
83+ assert sample_data['i64' ] or { 0 }.i8 () == 9
84+ assert sample_data['f32' ] or { 0 }.i8 () == 2
85+ assert sample_data['f64' ] or { 0 }.i8 () == 1
86+ assert json.Any (true ).i8 () == 1
87+ assert json.Any ('123' ).i8 () == 123
88+ // invalid conversions
89+ assert sample_data['null' ] or { 0 }.i8 () == 0
90+ assert sample_data['arr' ] or { 0 }.i8 () == 0
91+ assert sample_data['obj' ] or { 0 }.i8 () == 0
92+ }
93+
94+ fn test_i16 () {
95+ // valid conversions
96+ assert sample_data['u8' ] or { 0 }.i16 () == 1
97+ assert sample_data['u16' ] or { 0 }.i16 () == 2
98+ assert sample_data['u32' ] or { 0 }.i16 () == 3
99+ assert sample_data['u64' ] or { 0 }.i16 () == 4
100+ assert sample_data['i8' ] or { 0 }.i16 () == 5
101+ assert sample_data['i16' ] or { 0 }.i16 () == 6
102+ assert sample_data['i32' ] or { 0 }.i16 () == 7
103+ assert sample_data['int' ] or { 0 }.i16 () == 8
104+ assert sample_data['i64' ] or { 0 }.i16 () == 9
105+ assert sample_data['f32' ] or { 0 }.i16 () == 2
106+ assert sample_data['f64' ] or { 0 }.i16 () == 1
107+ assert json.Any (true ).i16 () == 1
108+ assert json.Any ('123' ).i16 () == 123
109+ // invalid conversions
110+ assert sample_data['null' ] or { 0 }.i16 () == 0
111+ assert sample_data['arr' ] or { 0 }.i16 () == 0
112+ assert sample_data['obj' ] or { 0 }.i16 () == 0
113+ }
114+
115+ fn test_i32 () {
116+ // valid conversions
117+ assert sample_data['u8' ] or { 0 }.i32 () == 1
118+ assert sample_data['u16' ] or { 0 }.i32 () == 2
119+ assert sample_data['u32' ] or { 0 }.i32 () == 3
120+ assert sample_data['u64' ] or { 0 }.i32 () == 4
121+ assert sample_data['i8' ] or { 0 }.i32 () == 5
122+ assert sample_data['i16' ] or { 0 }.i32 () == 6
123+ assert sample_data['i32' ] or { 0 }.i32 () == 7
124+ assert sample_data['int' ] or { 0 }.i32 () == 8
125+ assert sample_data['i64' ] or { 0 }.i32 () == 9
126+ assert sample_data['f32' ] or { 0 }.i32 () == 2
127+ assert sample_data['f64' ] or { 0 }.i32 () == 1
128+ assert json.Any (true ).i32 () == 1
129+ assert json.Any ('123' ).i32 () == 123
130+ // invalid conversions
131+ assert sample_data['null' ] or { 0 }.i32 () == 0
132+ assert sample_data['arr' ] or { 0 }.i32 () == 0
133+ assert sample_data['obj' ] or { 0 }.i32 () == 0
134+ }
135+
52136fn test_int () {
53137 // valid conversions
54- assert sample_data['int' ] or { 0 }.int () == 1
55- assert sample_data['i64' ] or { 0 }.int () == 128
138+ assert sample_data['u8' ] or { 0 }.int () == 1
139+ assert sample_data['u16' ] or { 0 }.int () == 2
140+ assert sample_data['u32' ] or { 0 }.int () == 3
141+ assert sample_data['u64' ] or { 0 }.int () == 4
142+ assert sample_data['i8' ] or { 0 }.int () == 5
143+ assert sample_data['i16' ] or { 0 }.int () == 6
144+ assert sample_data['i32' ] or { 0 }.int () == 7
145+ assert sample_data['int' ] or { 0 }.int () == 8
146+ assert sample_data['i64' ] or { 0 }.int () == 9
56147 assert sample_data['f32' ] or { 0 }.int () == 2
57148 assert sample_data['f64' ] or { 0 }.int () == 1
58149 assert json.Any (true ).int () == 1
@@ -65,8 +156,15 @@ fn test_int() {
65156
66157fn test_i64 () {
67158 // valid conversions
68- assert sample_data['int' ] or { 0 }.i64 () == 1
69- assert sample_data['i64' ] or { 0 }.i64 () == 128
159+ assert sample_data['u8' ] or { 0 }.i64 () == 1
160+ assert sample_data['u16' ] or { 0 }.i64 () == 2
161+ assert sample_data['u32' ] or { 0 }.i64 () == 3
162+ assert sample_data['u64' ] or { 0 }.i64 () == 4
163+ assert sample_data['i8' ] or { 0 }.i64 () == 5
164+ assert sample_data['i16' ] or { 0 }.i64 () == 6
165+ assert sample_data['i32' ] or { 0 }.i64 () == 7
166+ assert sample_data['int' ] or { 0 }.i64 () == 8
167+ assert sample_data['i64' ] or { 0 }.i64 () == 9
70168 assert sample_data['f32' ] or { 0 }.i64 () == 2
71169 assert sample_data['f64' ] or { 0 }.i64 () == 1
72170 assert json.Any (true ).i64 () == 1
@@ -77,10 +175,101 @@ fn test_i64() {
77175 assert sample_data['obj' ] or { 0 }.i64 () == 0
78176}
79177
178+ fn test_u8 () {
179+ // valid conversions
180+ assert sample_data['u8' ] or { 0 }.u8 () == 1
181+ assert sample_data['u16' ] or { 0 }.u8 () == 2
182+ assert sample_data['u32' ] or { 0 }.u8 () == 3
183+ assert sample_data['u64' ] or { 0 }.u8 () == 4
184+ assert sample_data['i8' ] or { 0 }.u8 () == 5
185+ assert sample_data['i16' ] or { 0 }.u8 () == 6
186+ assert sample_data['i32' ] or { 0 }.u8 () == 7
187+ assert sample_data['int' ] or { 0 }.u8 () == 8
188+ assert sample_data['i64' ] or { 0 }.u8 () == 9
189+ assert sample_data['f32' ] or { 0 }.u8 () == 2
190+ assert sample_data['f64' ] or { 0 }.u8 () == 1
191+ assert json.Any (true ).u8 () == 1
192+ assert json.Any ('123' ).u8 () == 123
193+ // invalid conversions
194+ assert sample_data['null' ] or { 0 }.u8 () == 0
195+ assert sample_data['arr' ] or { 0 }.u8 () == 0
196+ assert sample_data['obj' ] or { 0 }.u8 () == 0
197+ }
198+
199+ fn test_u16 () {
200+ // valid conversions
201+ assert sample_data['u8' ] or { 0 }.u16 () == 1
202+ assert sample_data['u16' ] or { 0 }.u16 () == 2
203+ assert sample_data['u32' ] or { 0 }.u16 () == 3
204+ assert sample_data['u64' ] or { 0 }.u16 () == 4
205+ assert sample_data['i8' ] or { 0 }.u16 () == 5
206+ assert sample_data['i16' ] or { 0 }.u16 () == 6
207+ assert sample_data['i32' ] or { 0 }.u16 () == 7
208+ assert sample_data['int' ] or { 0 }.u16 () == 8
209+ assert sample_data['i64' ] or { 0 }.u16 () == 9
210+ assert sample_data['f32' ] or { 0 }.u16 () == 2
211+ assert sample_data['f64' ] or { 0 }.u16 () == 1
212+ assert json.Any (true ).u16 () == 1
213+ assert json.Any ('123' ).u16 () == 123
214+ // invalid conversions
215+ assert sample_data['null' ] or { 0 }.u16 () == 0
216+ assert sample_data['arr' ] or { 0 }.u16 () == 0
217+ assert sample_data['obj' ] or { 0 }.u16 () == 0
218+ }
219+
220+ fn test_u32 () {
221+ // valid conversions
222+ assert sample_data['u8' ] or { 0 }.u32 () == 1
223+ assert sample_data['u16' ] or { 0 }.u32 () == 2
224+ assert sample_data['u32' ] or { 0 }.u32 () == 3
225+ assert sample_data['u64' ] or { 0 }.u32 () == 4
226+ assert sample_data['i8' ] or { 0 }.u32 () == 5
227+ assert sample_data['i16' ] or { 0 }.u32 () == 6
228+ assert sample_data['i32' ] or { 0 }.u32 () == 7
229+ assert sample_data['int' ] or { 0 }.u32 () == 8
230+ assert sample_data['i64' ] or { 0 }.u32 () == 9
231+ assert sample_data['f32' ] or { 0 }.u32 () == 2
232+ assert sample_data['f64' ] or { 0 }.u32 () == 1
233+ assert json.Any (true ).u32 () == 1
234+ assert json.Any ('123' ).u32 () == 123
235+ // invalid conversions
236+ assert sample_data['null' ] or { 0 }.u32 () == 0
237+ assert sample_data['arr' ] or { 0 }.u32 () == 0
238+ assert sample_data['obj' ] or { 0 }.u32 () == 0
239+ }
240+
241+ fn test_u64 () {
242+ // valid conversions
243+ assert sample_data['u8' ] or { 0 }.u64 () == 1
244+ assert sample_data['u16' ] or { 0 }.u64 () == 2
245+ assert sample_data['u32' ] or { 0 }.u64 () == 3
246+ assert sample_data['u64' ] or { 0 }.u64 () == 4
247+ assert sample_data['i8' ] or { 0 }.u64 () == 5
248+ assert sample_data['i16' ] or { 0 }.u64 () == 6
249+ assert sample_data['i32' ] or { 0 }.u64 () == 7
250+ assert sample_data['int' ] or { 0 }.u64 () == 8
251+ assert sample_data['i64' ] or { 0 }.u64 () == 9
252+ assert sample_data['f32' ] or { 0 }.u64 () == 2
253+ assert sample_data['f64' ] or { 0 }.u64 () == 1
254+ assert json.Any (true ).u64 () == 1
255+ assert json.Any ('123' ).u64 () == 123
256+ // invalid conversions
257+ assert sample_data['null' ] or { 0 }.u64 () == 0
258+ assert sample_data['arr' ] or { 0 }.u64 () == 0
259+ assert sample_data['obj' ] or { 0 }.u64 () == 0
260+ }
261+
80262fn test_as_map () {
81- assert sample_data['int' ] or { 0 }.as_map ()['0' ] or { 0 }.int () == 1
82- assert sample_data['i64' ] or { 0 }.as_map ()['0' ] or { 0 }.i64 () == 128.0
83- assert sample_data['f32' ] or { 0 }.as_map ()['0' ] or { 0 }.f32 () == 2.0
263+ assert sample_data['u8' ] or { 0 }.as_map ()['0' ] or { 0 }.u8 () == 1
264+ assert sample_data['u16' ] or { 0 }.as_map ()['0' ] or { 0 }.u16 () == 2
265+ assert sample_data['u32' ] or { 0 }.as_map ()['0' ] or { 0 }.u32 () == 3
266+ assert sample_data['u64' ] or { 0 }.as_map ()['0' ] or { 0 }.u64 () == 4
267+ assert sample_data['i8' ] or { 0 }.as_map ()['0' ] or { 0 }.i8 () == 5
268+ assert sample_data['i16' ] or { 0 }.as_map ()['0' ] or { 0 }.i16 () == 6
269+ assert sample_data['i32' ] or { 0 }.as_map ()['0' ] or { 0 }.i32 () == 7
270+ assert sample_data['int' ] or { 0 }.as_map ()['0' ] or { 0 }.int () == 8
271+ assert sample_data['i64' ] or { 0 }.as_map ()['0' ] or { 0 }.i64 () == 9
272+ assert sample_data['f32' ] or { 0 }.as_map ()['0' ] or { 0 }.f32 () == 2.3
84273 assert sample_data['f64' ] or { 0 }.as_map ()['0' ] or { 0 }.f64 () == 1.283
85274 assert sample_data['bool' ] or { 0 }.as_map ()['0' ] or { 0 }.bool () == false
86275 assert sample_data['str' ] or { 0 }.as_map ()['0' ] or { 0 }.str () == 'test'
@@ -99,9 +288,16 @@ fn test_as_map_of_strings() {
99288}
100289
101290fn test_arr () {
102- assert sample_data['int' ] or { 0 }.arr ()[0 ].int () == 1
103- assert sample_data['i64' ] or { 0 }.arr ()[0 ].i64 () == 128.0
104- assert sample_data['f32' ] or { 0 }.arr ()[0 ].f32 () == 2.0
291+ assert sample_data['u8' ] or { 0 }.arr ()[0 ].u8 () == 1
292+ assert sample_data['u16' ] or { 0 }.arr ()[0 ].u16 () == 2
293+ assert sample_data['u32' ] or { 0 }.arr ()[0 ].u32 () == 3
294+ assert sample_data['u64' ] or { 0 }.arr ()[0 ].u64 () == 4
295+ assert sample_data['i8' ] or { 0 }.arr ()[0 ].i8 () == 5
296+ assert sample_data['i16' ] or { 0 }.arr ()[0 ].i16 () == 6
297+ assert sample_data['i32' ] or { 0 }.arr ()[0 ].i32 () == 7
298+ assert sample_data['int' ] or { 0 }.arr ()[0 ].int () == 8
299+ assert sample_data['i64' ] or { 0 }.arr ()[0 ].i64 () == 9
300+ assert sample_data['f32' ] or { 0 }.arr ()[0 ].f32 () == 2.3
105301 assert sample_data['f64' ] or { 0 }.arr ()[0 ].f64 () == 1.283
106302 assert sample_data['bool' ] or { 0 }.arr ()[0 ].bool () == false
107303 assert sample_data['str' ] or { 0 }.arr ()[0 ].str () == 'test'
@@ -114,6 +310,13 @@ fn test_bool() {
114310 // valid conversions
115311 assert sample_data['bool' ] or { 0 }.bool () == false
116312 assert json.Any ('true' ).bool () == true
313+ assert sample_data['u8' ] or { 0 }.bool () == true
314+ assert sample_data['u16' ] or { 0 }.bool () == true
315+ assert sample_data['u32' ] or { 0 }.bool () == true
316+ assert sample_data['u64' ] or { 0 }.bool () == true
317+ assert sample_data['i8' ] or { 0 }.bool () == true
318+ assert sample_data['i16' ] or { 0 }.bool () == true
319+ assert sample_data['i32' ] or { 0 }.bool () == true
117320 assert sample_data['int' ] or { 0 }.bool () == true
118321 assert sample_data['i64' ] or { 0 }.bool () == true
119322 assert sample_data['f32' ] or { 0 }.bool () == true
@@ -125,13 +328,20 @@ fn test_bool() {
125328}
126329
127330fn test_str () {
128- assert sample_data['int' ] or { 0 }.str () == '1'
129- assert sample_data['i64' ] or { 0 }.str () == '128'
130- assert sample_data['f32' ] or { 0 }.str () == '2'
331+ assert sample_data['u8' ] or { 0 }.str () == '1'
332+ assert sample_data['u16' ] or { 0 }.str () == '2'
333+ assert sample_data['u32' ] or { 0 }.str () == '3'
334+ assert sample_data['u64' ] or { 0 }.str () == '4'
335+ assert sample_data['i8' ] or { 0 }.str () == '5'
336+ assert sample_data['i16' ] or { 0 }.str () == '6'
337+ assert sample_data['i32' ] or { 0 }.str () == '7'
338+ assert sample_data['int' ] or { 0 }.str () == '8'
339+ assert sample_data['i64' ] or { 0 }.str () == '9'
340+ assert sample_data['f32' ] or { 0 }.str () == '2.299999952316284'
131341 assert sample_data['f64' ] or { 0 }.str () == '1.283'
132342 assert sample_data['bool' ] or { 0 }.str () == 'false'
133343 assert sample_data['str' ] or { 0 }.str () == 'test'
134344 assert sample_data['null' ] or { 0 }.str () == 'null'
135345 assert sample_data['arr' ] or { 'not lol' }.str () == '["lol"]'
136- assert sample_data.str () == '{"int ":1,"i64":128 ,"f32":2,"f64":1.283,"bool":false,"str":"test","null":null,"arr":["lol"],"obj":{"foo":10}}'
346+ assert sample_data.str () == '{"u8 ":1,"u16":2,"u32":3,"u64":4,"i8":5,"i16":6,"i32":7,"int":8," i64":9 ,"f32":2.299999952316284 ,"f64":1.283,"bool":false,"str":"test","null":null,"arr":["lol"],"obj":{"foo":10}}'
137347}
0 commit comments