File: struct_test.go

package info (click to toggle)
golang-github-json-iterator-go 1.1.12-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie, trixie-proposed-updates
  • size: 916 kB
  • sloc: sh: 19; makefile: 3
file content (404 lines) | stat: -rw-r--r-- 5,823 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
package test

import "time"

func init() {
	structFields1To11()
	testCases = append(testCases,
		(*struct1Alias)(nil),
		(*struct {
			F [4]*string
		})(nil),
		(*struct {
			F [4]string
		})(nil),
		(*struct {
			F1 [4]stringAlias
			F2 arrayAlis
		})(nil),
		(*struct {
			F1 [4]string
			F2 [4]string
			F3 [4]string
		})(nil),
		(*struct {
			F [4]struct {
				F1 string
				F2 string
				F3 string
			}
		})(nil),
		(*struct{})(nil),
		(*structEmpty)(nil),
		(*struct {
			Byte1   byte
			Byte2   byte
			Bool1   bool
			Bool2   bool
			Int8    int8
			Int16   int16
			Int32   int32
			Int64   int64
			Uint8   uint8
			Uint16  uint16
			Uint32  uint32
			Uint64  uint64
			Float32 float32
			Float64 float64
			String1 string
			String2 string
		})(nil),
		(*struct {
			F float64
		})(nil),
		(*struct {
			F float64Alias
		})(nil),
		(*struct {
			F1 float64
			F2 float64
			F3 float64
		})(nil),
		(*struct {
			F1 float64Alias
			F2 float64Alias
			F3 float64Alias
		})(nil),
		(*struct {
			F int32
		})(nil),
		(*struct {
			F int32Alias
		})(nil),
		(*struct {
			F1 int32
			F2 int32
			F3 int32
		})(nil),
		(*struct {
			F1 int32Alias
			F2 int32Alias
			F3 int32Alias
		})(nil),
		(*struct {
			F int64
		})(nil),
		(*struct {
			F map[int32]*string
		})(nil),
		(*struct {
			F map[int32]string
		})(nil),
		(*struct {
			F map[int32]struct {
				F1 string
				F2 string
				F3 string
			}
		})(nil),
		(*struct {
			F map[string]*string
		})(nil),
		(*struct {
			F map[string]string
		})(nil),
		(*struct {
			F map[string]struct {
				F1 string
				F2 string
				F3 string
			}
		})(nil),
		(*struct {
			F *float64
		})(nil),
		(*struct {
			F1 *float64Alias
			F2 ptrFloat64Alias
			F3 *ptrFloat64Alias
		})(nil),
		(*struct {
			F *int32
		})(nil),
		(*struct {
			F1 *int32Alias
			F2 ptrInt32Alias
			F3 *ptrInt32Alias
		})(nil),
		(*struct {
			F **struct{}
		})(nil),
		(*struct {
			F **struct {
				F1 string
				F2 string
				F3 string
			}
		})(nil),
		(*struct {
			F *string
		})(nil),
		(*struct {
			F1 *stringAlias
			F2 ptrStringAlias
			F3 *ptrStringAlias
		})(nil),
		(*struct {
			F *struct{}
		})(nil),
		(*struct {
			F *struct {
				F1 string
				F2 string
				F3 string
			}
		})(nil),
		(*struct {
			F1 *float64
			F2 *float64
			F3 *float64
		})(nil),
		(*struct {
			F1 *int32
			F2 *int32
			F3 *int32
		})(nil),
		(*struct {
			F1 *string
			F2 *string
			F3 *string
		})(nil),
		(*struct {
			F []*string
		})(nil),
		(*struct {
			F []string
		})(nil),
		(*struct {
			F1 []stringAlias
			F2 stringAlias
		})(nil),
		(*struct {
			F1 []string
			F2 []string
			F3 []string
		})(nil),
		(*struct {
			F []struct {
				F1 string
				F2 string
				F3 string
			}
		})(nil),
		(*struct {
			F string
		})(nil),
		(*struct {
			F stringAlias
		})(nil),
		(*struct {
			F1 string
			F2 string
			F3 string
		})(nil),
		(*struct {
			F1 stringAlias
			F2 stringAlias
			F3 stringAlias
		})(nil),
		(*struct {
			F1 struct{}
			F2 struct{}
			F3 struct{}
		})(nil),
		(*struct {
			F struct{}
		})(nil),
		(*struct {
			F structEmpty
		})(nil),
		(*struct {
			F struct {
				F1 float32
				F2 float32
				F3 float32
			}
		})(nil),
		(*struct {
			F struct {
				F float32
			}
		})(nil),
		(*struct {
			F struct2
		})(nil),
		(*struct {
			F struct {
				F1 int32
				F2 int32
				F3 int32
			}
		})(nil),
		(*struct {
			F struct {
				F1 string
				F2 string
				F3 string
			}
		})(nil),
		(*struct {
			F struct3
		})(nil),
		(*struct {
			TF1 struct {
				F2 int
				F1 *withTime
			}
		})(nil),
		(*DeeplyNested)(nil),
	)
}

func structFields1To11() {
	testCases = append(testCases,
		(*struct {
			Field1 string
		})(nil),
		(*struct {
			Field1 string
			Field2 string
		})(nil),
		(*struct {
			Field1 string
			Field2 string
			Field3 string
		})(nil),
		(*struct {
			Field1 string
			Field2 string
			Field3 string
			Field4 string
		})(nil),
		(*struct {
			Field1 string
			Field2 string
			Field3 string
			Field4 string
			Field5 string
		})(nil),
		(*struct {
			Field1 string
			Field2 string
			Field3 string
			Field4 string
			Field5 string
			Field6 string
		})(nil),
		(*struct {
			Field1 string
			Field2 string
			Field3 string
			Field4 string
			Field5 string
			Field6 string
			Field7 string
		})(nil),
		(*struct {
			Field1 string
			Field2 string
			Field3 string
			Field4 string
			Field5 string
			Field6 string
			Field7 string
			Field8 string
		})(nil),
		(*struct {
			Field1 string
			Field2 string
			Field3 string
			Field4 string
			Field5 string
			Field6 string
			Field7 string
			Field8 string
			Field9 string
		})(nil),
		(*struct {
			Field1  string
			Field2  string
			Field3  string
			Field4  string
			Field5  string
			Field6  string
			Field7  string
			Field8  string
			Field9  string
			Field10 string
		})(nil),
		(*struct {
			Field1  string
			Field2  string
			Field3  string
			Field4  string
			Field5  string
			Field6  string
			Field7  string
			Field8  string
			Field9  string
			Field10 string
			Field11 string
		})(nil),
	)
}

type struct1 struct {
	Byte1   byte
	Byte2   byte
	Bool1   bool
	Bool2   bool
	Int8    int8
	Int16   int16
	Int32   int32
	Uint8   uint8
	Uint16  uint16
	Uint32  uint32
	Float32 float32
	Float64 float64
	String1 string
	String2 string
}
type struct1Alias struct1

type struct2 struct {
	F float64
}
type struct3 struct {
	F1 stringAlias
	F2 stringAlias
	F3 stringAlias
}

type withTime struct {
	time.Time
}

func (t *withTime) UnmarshalJSON(b []byte) error {
	return nil
}
func (t withTime) MarshalJSON() ([]byte, error) {
	return []byte(`"fake"`), nil
}

type YetYetAnotherObject struct {
	Field string
}
type YetAnotherObject struct {
	Field *YetYetAnotherObject
}
type AnotherObject struct {
	Field *YetAnotherObject
}
type DeeplyNested struct {
	Me *AnotherObject
}