mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
32 lines
930 B
V
32 lines
930 B
V
// NB: this test should be able to run without warnings/errors
|
|
|
|
type SumType = bool | int | string
|
|
|
|
fn test_reading_from_a_map_of_sumtype_values() {
|
|
mut values := map[string]SumType{}
|
|
values['abc'] = 'xyz'
|
|
values['xyz'] = 123
|
|
values['xxx'] = true
|
|
println(unsafe { values['abcz'] }) // no warning/error, due to the unsafe{}
|
|
if value := values['abc'] {
|
|
eprintln('existing key `abc` is present, value: $value')
|
|
assert true
|
|
}
|
|
if (values['abc'] or { 'zzzz' }) is string {
|
|
eprintln('existing key `abc` is present, value is a string')
|
|
assert true
|
|
}
|
|
if (values['abc'] or { 123 }) is int {
|
|
eprintln('the existing keyed value is an int')
|
|
assert false
|
|
}
|
|
if (values['something else'] or { 'zzzz' }) is string {
|
|
eprintln('default value for non existing key is a string')
|
|
assert true
|
|
}
|
|
if (values['something else'] or { 123 }) is int {
|
|
eprintln('default value for non existing key is an int')
|
|
assert true
|
|
}
|
|
}
|