v

Зеркало из https://github.com/vlang/v
Форк
0
/x
/
encode_struct_todo_test.vv 
216 строк · 10.0 Кб
1
import x.json2 as json
2
import time
3

4
const fixed_time = time.new(
5
	year: 2022
6
	month: 3
7
	day: 11
8
	hour: 13
9
	minute: 54
10
	second: 25
11
)
12

13
type StringAlias = string
14
type BoolAlias = bool
15
type IntAlias = int
16
type TimeAlias = time.Time
17
type StructAlias = StructType[int]
18
type EnumAlias = Enumerates
19

20
type SumTypes = bool | int | string
21

22
enum Enumerates {
23
	a
24
	b
25
	c
26
	d
27
	e = 99
28
	f
29
}
30

31
struct StructType[T] {
32
mut:
33
	val T
34
}
35

36
struct StructTypeOption[T] {
37
mut:
38
	val ?T
39
}
40

41
struct StructTypePointer[T] {
42
mut:
43
	val &T
44
}
45

46
fn test_option_types() {
47
	assert json.encode(StructTypeOption[Enumerates]{ val: Enumerates.a }) == '{"val":0}'
48
	assert json.encode(StructTypeOption[Enumerates]{ val: Enumerates.d }) == '{"val":3}'
49
	assert json.encode(StructTypeOption[Enumerates]{ val: Enumerates.e }) == '{"val":99}'
50
	assert json.encode(StructTypeOption[Enumerates]{ val: Enumerates.f }) == '{"val":100}'
51
}
52

53
fn test_option_alias() {
54
	assert json.encode(StructTypeOption[BoolAlias]{ val: none }) == '{}'
55
	assert json.encode(StructTypeOption[BoolAlias]{}) == '{"val":false}'
56
	assert json.encode(StructTypeOption[BoolAlias]{ val: false }) == '{"val":false}'
57
	assert json.encode(StructTypeOption[BoolAlias]{ val: true }) == '{"val":true}'
58

59
	assert json.encode(StructTypeOption[IntAlias]{ val: none }) == '{}'
60
	assert json.encode(StructTypeOption[IntAlias]{}) == '{"val":0}'
61
	assert json.encode(StructTypeOption[IntAlias]{ val: 0 }) == '{"val":0}'
62
	assert json.encode(StructTypeOption[IntAlias]{ val: 1 }) == '{"val":1}'
63

64
	assert json.encode(StructTypeOption[EnumAlias]{}) == '{"val":0}'
65
	assert json.encode(StructTypeOption[EnumAlias]{ val: Enumerates.a }) == '{"val":0}'
66
	assert json.encode(StructTypeOption[EnumAlias]{ val: Enumerates.d }) == '{"val":3}'
67
	assert json.encode(StructTypeOption[EnumAlias]{ val: Enumerates.e }) == '{"val":99}'
68
	assert json.encode(StructTypeOption[EnumAlias]{ val: Enumerates.f }) == '{"val":100}'
69
}
70

71
fn test_alias() {
72
	assert json.encode(StructType[EnumAlias]{}) == '{"val":0}'
73
	assert json.encode(StructType[EnumAlias]{ val: Enumerates.a }) == '{"val":0}'
74
	assert json.encode(StructType[EnumAlias]{ val: Enumerates.d }) == '{"val":3}'
75
	assert json.encode(StructType[EnumAlias]{ val: Enumerates.e }) == '{"val":99}'
76
	assert json.encode(StructType[EnumAlias]{ val: Enumerates.f }) == '{"val":100}'
77
}
78

79
fn test_sumtypes() {
80
	assert json.encode(StructType[SumTypes]{}) == '{}'
81
	assert json.encode(StructType[SumTypes]{ val: '' }) == '{"val":""}'
82
	assert json.encode(StructType[SumTypes]{ val: 'a' }) == '{"val":"a"}'
83

84
	assert json.encode(StructType[SumTypes]{ val: false }) == '{"val":false}'
85
	assert json.encode(StructType[SumTypes]{ val: true }) == '{"val":true}'
86

87
	assert json.encode(StructType[SumTypes]{ val: 0 }) == '{"val":0}'
88
	assert json.encode(StructType[SumTypes]{ val: 1 }) == '{"val":1}'
89

90
	assert json.encode(StructType[StructType[SumTypes]]{
91
		val: StructType[SumTypes]{
92
			val: 1
93
		}
94
	}) == '{"val":{"val":1}}'
95
}
96

97
fn test_option_sumtypes() {
98
	assert json.encode(StructTypeOption[SumTypes]{}) == '{}' // REVIEW
99

100
	assert json.encode(StructTypeOption[SumTypes]{ val: '' }) == '{"val":""}'
101
	assert json.encode(StructTypeOption[SumTypes]{ val: 'a' }) == '{"val":"a"}'
102

103
	assert json.encode(StructTypeOption[SumTypes]{ val: false }) == '{"val":false}'
104
	assert json.encode(StructTypeOption[SumTypes]{ val: true }) == '{"val":true}'
105

106
	assert json.encode(StructTypeOption[SumTypes]{ val: 0 }) == '{"val":0}'
107
	assert json.encode(StructTypeOption[SumTypes]{ val: 1 }) == '{"val":1}'
108
}
109

110
fn test_caos() {
111
	typed_string_struct := StructType[string]{
112
		val: 'a'
113
	}
114

115
	// StructType
116
	assert json.encode(StructType[StructType]{}) == 'TODO'
117
	assert json.encode(StructType[StructType[string]]{ val: typed_string_struct }) == 'TODO'
118
	assert json.encode(StructType[StructType[StringAlias]]{ val: typed_string_struct }) == 'TODO'
119
	assert json.encode(StructType[StructType[SumTypes]]{ val: typed_string_struct }) == 'TODO'
120

121
	assert json.encode(StructType[StructTypeOption]{typed_string_struct}) == 'TODO'
122
	assert json.encode(StructType[StructTypeOption[string]]{ val: StructType{'a'} }) == 'TODO'
123
	assert json.encode(StructType[StructTypeOption[StringAlias]]{typed_string_struct}) == 'TODO'
124
	assert json.encode(StructType[StructTypeOption[SumTypes]]{typed_string_struct}) == 'TODO'
125

126
	assert json.encode(StructType[StructTypePointer]{typed_string_struct}) == 'TODO'
127
	assert json.encode(StructType[StructTypePointer[string]]{typed_string_struct}) == 'TODO'
128
	assert json.encode(StructType[StructTypePointer[StringAlias]]{typed_string_struct}) == 'TODO'
129
	assert json.encode(StructType[StructTypePointer[SumTypes]]{typed_string_struct}) == 'TODO'
130

131
	// StructTypeOptional
132
	assert json.encode(StructTypeOption[StructType]{}) == 'TODO'
133
	assert json.encode(StructTypeOption[StructType[string]]{ val: '' }) == 'TODO'
134
	assert json.encode(StructTypeOption[StructType[StringAlias]]{ val: '' }) == 'TODO'
135
	assert json.encode(StructTypeOption[StructType[SumTypes]]{ val: '' }) == 'TODO'
136

137
	assert json.encode(StructTypeOption[StructTypeOption]{typed_string_struct}) == 'TODO'
138
	assert json.encode(StructTypeOption[StructTypeOption[string]]{ val: StructType{'a'} }) == 'TODO'
139
	assert json.encode(StructTypeOption[StructTypeOption[StringAlias]]{typed_string_struct}) == 'TODO'
140
	assert json.encode(StructTypeOption[StructTypeOption[SumTypes]]{typed_string_struct}) == 'TODO'
141

142
	assert json.encode(StructTypeOption[StructTypePointer]{typed_string_struct}) == 'TODO'
143
	assert json.encode(StructTypeOption[StructTypePointer[string]]{typed_string_struct}) == 'TODO'
144
	assert json.encode(StructTypeOption[StructTypePointer[StringAlias]]{typed_string_struct}) == 'TODO'
145
	assert json.encode(StructTypeOption[StructTypePointer[SumTypes]]{typed_string_struct}) == 'TODO'
146

147
	// StructTypePointer
148
	assert json.encode(StructTypePointer[StructType]{}) == 'TODO'
149
	assert json.encode(StructTypePointer[StructType[string]]{ val: '' }) == 'TODO'
150
	assert json.encode(StructTypePointer[StructType[StringAlias]]{ val: '' }) == 'TODO'
151
	assert json.encode(StructTypePointer[StructType[SumTypes]]{ val: '' }) == 'TODO'
152

153
	assert json.encode(StructTypePointer[StructTypeOption]{typed_string_struct}) == 'TODO'
154
	assert json.encode(StructTypePointer[StructTypeOption[string]]{ val: StructType{'a'} }) == 'TODO'
155
	assert json.encode(StructTypePointer[StructTypeOption[StringAlias]]{typed_string_struct}) == 'TODO'
156
	assert json.encode(StructTypePointer[StructTypeOption[SumTypes]]{typed_string_struct}) == 'TODO'
157

158
	assert json.encode(StructTypePointer[StructTypePointer]{typed_string_struct}) == 'TODO'
159
	assert json.encode(StructTypePointer[StructTypePointer[string]]{typed_string_struct}) == 'TODO'
160
	assert json.encode(StructTypePointer[StructTypePointer[StringAlias]]{typed_string_struct}) == 'TODO'
161
	assert json.encode(StructTypePointer[StructTypePointer[SumTypes]]{typed_string_struct}) == 'TODO'
162
}
163

164
fn test_caos_array() {
165
	typed_string_struct := [StructType[string]{
166
		val: 'a'
167
	}]
168

169
	// StructType
170
	assert json.encode(StructType[[]StructType]{}) == 'TODO'
171
	assert json.encode(StructType[[]StructType[string]]{ val: typed_string_struct }) == 'TODO'
172
	assert json.encode(StructType[[]StructType[StringAlias]]{ val: typed_string_struct }) == 'TODO'
173
	assert json.encode(StructType[[]StructType[SumTypes]]{ val: typed_string_struct }) == 'TODO'
174

175
	assert json.encode(StructType[[]StructTypeOption]{typed_string_struct}) == 'TODO'
176
	assert json.encode(StructType[[]StructTypeOption[string]]{ val: StructType{'a'} }) == 'TODO'
177
	assert json.encode(StructType[[]StructTypeOption[StringAlias]]{typed_string_struct}) == 'TODO'
178
	assert json.encode(StructType[[]StructTypeOption[SumTypes]]{typed_string_struct}) == 'TODO'
179

180
	assert json.encode(StructType[[]StructTypePointer]{typed_string_struct}) == 'TODO'
181
	assert json.encode(StructType[[]StructTypePointer[string]]{typed_string_struct}) == 'TODO'
182
	assert json.encode(StructType[[]StructTypePointer[StringAlias]]{typed_string_struct}) == 'TODO'
183
	assert json.encode(StructType[[]StructTypePointer[SumTypes]]{typed_string_struct}) == 'TODO'
184

185
	// StructTypeOptional
186
	assert json.encode(StructTypeOption[[]StructType]{}) == 'TODO'
187
	assert json.encode(StructTypeOption[[]StructType[string]]{ val: '' }) == 'TODO'
188
	assert json.encode(StructTypeOption[[]StructType[StringAlias]]{ val: '' }) == 'TODO'
189
	assert json.encode(StructTypeOption[[]StructType[SumTypes]]{ val: '' }) == 'TODO'
190

191
	assert json.encode(StructTypeOption[[]StructTypeOption]{typed_string_struct}) == 'TODO'
192
	assert json.encode(StructTypeOption[[]StructTypeOption[string]]{ val: StructType{'a'} }) == 'TODO'
193
	assert json.encode(StructTypeOption[[]StructTypeOption[StringAlias]]{typed_string_struct}) == 'TODO'
194
	assert json.encode(StructTypeOption[[]StructTypeOption[SumTypes]]{typed_string_struct}) == 'TODO'
195

196
	assert json.encode(StructTypeOption[[]StructTypePointer]{typed_string_struct}) == 'TODO'
197
	assert json.encode(StructTypeOption[[]StructTypePointer[string]]{typed_string_struct}) == 'TODO'
198
	assert json.encode(StructTypeOption[[]StructTypePointer[StringAlias]]{typed_string_struct}) == 'TODO'
199
	assert json.encode(StructTypeOption[[]StructTypePointer[SumTypes]]{typed_string_struct}) == 'TODO'
200

201
	// StructTypePointer
202
	assert json.encode(StructTypePointer[[]StructType]{}) == 'TODO'
203
	assert json.encode(StructTypePointer[[]StructType[string]]{ val: '' }) == 'TODO'
204
	assert json.encode(StructTypePointer[[]StructType[StringAlias]]{ val: '' }) == 'TODO'
205
	assert json.encode(StructTypePointer[[]StructType[SumTypes]]{ val: '' }) == 'TODO'
206

207
	assert json.encode(StructTypePointer[[]StructTypeOption]{typed_string_struct}) == 'TODO'
208
	assert json.encode(StructTypePointer[[]StructTypeOption[string]]{ val: StructType{'a'} }) == 'TODO'
209
	assert json.encode(StructTypePointer[[]StructTypeOption[StringAlias]]{typed_string_struct}) == 'TODO'
210
	assert json.encode(StructTypePointer[[]StructTypeOption[SumTypes]]{typed_string_struct}) == 'TODO'
211

212
	assert json.encode(StructTypePointer[[]StructTypePointer]{typed_string_struct}) == 'TODO'
213
	assert json.encode(StructTypePointer[[]StructTypePointer[string]]{typed_string_struct}) == 'TODO'
214
	assert json.encode(StructTypePointer[[]StructTypePointer[StringAlias]]{typed_string_struct}) == 'TODO'
215
	assert json.encode(StructTypePointer[[]StructTypePointer[SumTypes]]{typed_string_struct}) == 'TODO'
216
}
217

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.