v2 / vlib / x / json2 / tests / encode_struct_skippable_fields_test.v
148 lines · 128 sloc · 2.69 KB · 07c796b670d9e498ccb25605af189617f61ec295
Raw
1import time
2import x.json2 as json
3
4struct StructTypeSkippedFields[T] {
5mut:
6 val T @[json: '-']
7 val1 T
8 val2 T @[json: '-']
9 val3 T
10}
11
12struct StructTypeSkippedFields1[T] {
13mut:
14 val T
15 val1 T @[json: '-']
16 val2 T
17 val3 T @[json: '-']
18}
19
20struct StructTypeSkippedFields2[T] {
21mut:
22 val T @[json: '-']
23 val1 T @[json: '-']
24 val2 T @[json: '-']
25 val3 T @[json: '-']
26}
27
28struct StructTypeSkippedFields3[T, U, V] {
29mut:
30 val T @[json: '-']
31 val1 U
32 val2 V
33 val3 T @[json: '-']
34}
35
36struct StructTypeSkippedFields4 {
37mut:
38 val string @[json: '-']
39 val1 i64
40 val2 f64
41 val3 time.Time
42}
43
44struct StructTypeSkippedFields5 {
45mut:
46 val string @[json: '-']
47 val1 i64 @[json: '-']
48 val2 f64
49 val3 time.Time
50}
51
52struct StructTypeSkippedFields6 {
53mut:
54 val string @[json: '-']
55 val1 i64
56 val2 f64 @[json: '-']
57 val3 time.Time
58}
59
60struct StructTypeSkippedFields7 {
61mut:
62 val string
63 val1 i64 @[json: '-']
64 val2 f64 @[json: '-']
65 val3 time.Time
66}
67
68struct StructTypeSkippedFields8 {
69mut:
70 val string
71 val1 i64 @[json: '-']
72 val2 f64
73 val3 time.Time @[json: '-']
74}
75
76struct StructTypeSkippedFields9 {
77mut:
78 val string
79 val1 i64 @[skip]
80 val2 f64
81 val3 time.Time @[skip]
82}
83
84fn test_encode_struct_skipped_fields() {
85 assert json.encode(StructTypeSkippedFields[string]{
86 val: 'string_val'
87 val1: 'string_val1'
88 val2: 'string_val2'
89 val3: 'string_val3'
90 }) == '{"val1":"string_val1","val3":"string_val3"}'
91
92 assert json.encode(StructTypeSkippedFields1[string]{
93 val: 'string_val'
94 val1: 'string_val1'
95 val2: 'string_val2'
96 val3: 'string_val3'
97 }) == '{"val":"string_val","val2":"string_val2"}'
98
99 assert json.encode(StructTypeSkippedFields2[string]{
100 val: 'string_val'
101 val1: 'string_val1'
102 val2: 'string_val2'
103 val3: 'string_val3'
104 }) == '{}'
105
106 assert json.encode(StructTypeSkippedFields3[string, i64, f64]{
107 val: 'string_val'
108 val1: 1
109 val2: 1.0
110 val3: 'string_val'
111 }) == '{"val1":1,"val2":1}'
112
113 assert json.encode(StructTypeSkippedFields4{
114 val: 'string_val'
115 val1: 1
116 val2: 1.0
117 }) == '{"val1":1,"val2":1,"val3":"0000-01-01T00:00:00.000Z"}'
118
119 assert json.encode(StructTypeSkippedFields5{
120 val: 'string_val'
121 val1: 1
122 val2: 1.0
123 }) == '{"val2":1,"val3":"0000-01-01T00:00:00.000Z"}'
124
125 assert json.encode(StructTypeSkippedFields6{
126 val: 'string_val'
127 val1: 1
128 val2: 1.0
129 }) == '{"val1":1,"val3":"0000-01-01T00:00:00.000Z"}'
130
131 assert json.encode(StructTypeSkippedFields7{
132 val: 'string_val'
133 val1: 1
134 val2: 1.0
135 }) == '{"val":"string_val","val3":"0000-01-01T00:00:00.000Z"}'
136
137 assert json.encode(StructTypeSkippedFields8{
138 val: 'string_val'
139 val1: 1
140 val2: 1.0
141 }) == '{"val":"string_val","val2":1}'
142
143 assert json.encode(StructTypeSkippedFields9{
144 val: 'string_val'
145 val1: 1
146 val2: 1.0
147 }) == '{"val":"string_val","val2":1}'
148}
149