1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

x.json2: refactor/fix json2.encode, add more tests (#16790)

This commit is contained in:
Hitalo Souza
2023-01-05 10:17:38 -03:00
committed by GitHub
parent e3aee748ac
commit 8f217c00e5
2 changed files with 207 additions and 113 deletions

View File

@ -56,6 +56,12 @@ fn test_types() {
assert json.encode(StructType[time.Time]{}) == '{"val":"0000-00-00T00:00:00.000Z"}'
assert json.encode(StructType[time.Time]{ val: fixed_time }) == '{"val":"2022-03-11T13:54:25.000Z"}'
assert json.encode(StructType[StructType[int]]{
val: StructType[int]{
val: 1
}
}) == '{"val":{"val":1}}'
}
fn test_optional_types() {
@ -75,6 +81,7 @@ fn test_optional_types() {
assert json.encode(StructTypeOptional[int]{ val: 1 }) == '{"val":1}'
assert json.encode(StructTypeOptional[time.Time]{}) == '{}'
assert json.encode(StructTypeOptional[time.Time]{ val: time.Time{} }) == '{"val":"0000-00-00T00:00:00.000Z"}'
assert json.encode(StructTypeOptional[time.Time]{ val: fixed_time }) == '{"val":"2022-03-11T13:54:25.000Z"}'
}
@ -119,15 +126,63 @@ fn test_array() {
assert json.encode(StructType[[]bool]{ val: [true] }) == '{"val":[true]}'
assert json.encode(StructType[[]bool]{ val: [false] }) == '{"val":[false]}'
assert json.encode(StructType[[]bool]{ val: [false, true, false] }) == '{"val":[false,true,false]}'
array_of_struct := [StructType[bool]{
val: true
}, StructType[bool]{
val: false
}]
assert json.encode(StructType[[]StructType[bool]]{ val: array_of_struct }) == '{"val":[{"val":true},{"val":false}]}'
}
fn test_optional_array() {
assert json.encode(StructTypeOptional[[]int]{ val: none }) == '{}'
assert json.encode(StructTypeOptional[[]string]{}) == '{}'
assert json.encode(StructTypeOptional[[]string]{ val: [] }) == '{"val":[]}'
assert json.encode(StructTypeOptional[[]string]{ val: ['0'] }) == '{"val":["0"]}'
assert json.encode(StructTypeOptional[[]string]{ val: ['1'] }) == '{"val":["1"]}'
assert json.encode(StructTypeOptional[[]int]{}) == '{}'
assert json.encode(StructTypeOptional[[]int]{ val: [] }) == '{"val":[]}'
assert json.encode(StructTypeOptional[[]int]{ val: [0] }) == '{"val":[0]}'
assert json.encode(StructTypeOptional[[]int]{ val: [1] }) == '{"val":[1]}'
assert json.encode(StructTypeOptional[[]int]{ val: [0, 1, 0, 2, 3, 2, 5, 1] }) == '{"val":[0,1,0,2,3,2,5,1]}'
assert json.encode(StructTypeOptional[[]byte]{}) == '{}'
assert json.encode(StructTypeOptional[[]byte]{ val: [] }) == '{"val":[]}'
assert json.encode(StructTypeOptional[[]byte]{ val: [byte(0)] }) == '{"val":[0]}'
assert json.encode(StructTypeOptional[[]byte]{ val: [byte(1)] }) == '{"val":[1]}'
assert json.encode(StructTypeOptional[[]byte]{ val: [byte(0), 1, 0, 2, 3, 2, 5, 1] }) == '{"val":[0,1,0,2,3,2,5,1]}'
assert json.encode(StructTypeOptional[[]i64]{}) == '{}'
assert json.encode(StructTypeOptional[[]i64]{ val: [] }) == '{"val":[]}'
assert json.encode(StructTypeOptional[[]i64]{ val: [i64(0)] }) == '{"val":[0]}'
assert json.encode(StructTypeOptional[[]i64]{ val: [i64(1)] }) == '{"val":[1]}'
assert json.encode(StructTypeOptional[[]i64]{ val: [i64(0), 1, 0, 2, 3, 2, 5, 1] }) == '{"val":[0,1,0,2,3,2,5,1]}'
assert json.encode(StructTypeOptional[[]u64]{}) == '{}'
assert json.encode(StructTypeOptional[[]u64]{ val: [] }) == '{"val":[]}'
assert json.encode(StructTypeOptional[[]u64]{ val: [u64(0)] }) == '{"val":[0]}'
assert json.encode(StructTypeOptional[[]u64]{ val: [u64(1)] }) == '{"val":[1]}'
assert json.encode(StructTypeOptional[[]u64]{ val: [u64(0), 1, 0, 2, 3, 2, 5, 1] }) == '{"val":[0,1,0,2,3,2,5,1]}'
assert json.encode(StructTypeOptional[[]f64]{}) == '{}'
assert json.encode(StructTypeOptional[[]f64]{ val: [] }) == '{"val":[]}'
assert json.encode(StructTypeOptional[[]f64]{ val: [f64(0)] }) == '{"val":[0.0]}'
assert json.encode(StructTypeOptional[[]f64]{ val: [f64(1)] }) == '{"val":[1.0]}'
assert json.encode(StructTypeOptional[[]f64]{ val: [f64(0), 1, 0, 2, 3, 2, 5, 1] }) == '{"val":[0.0,1.0,0.0,2.0,3.0,2.0,5.0,1.0]}'
assert json.encode(StructTypeOptional[[]bool]{}) == '{}'
assert json.encode(StructTypeOptional[[]bool]{ val: [] }) == '{"val":[]}'
assert json.encode(StructTypeOptional[[]bool]{ val: [true] }) == '{"val":[true]}'
assert json.encode(StructTypeOptional[[]bool]{ val: [false] }) == '{"val":[false]}'
assert json.encode(StructTypeOptional[[]bool]{ val: [false, true, false] }) == '{"val":[false,true,false]}'
array_of_struct := [StructType[bool]{
val: true
}, StructType[bool]{
val: false
}]
assert json.encode(StructTypeOptional[[]StructType[bool]]{ val: array_of_struct }) == '{"val":[{"val":true},{"val":false}]}'
}
fn test_alias() {