v/vlib/v/tests/map_enum_keys_test.v

39 lines
881 B
V

// This tests that V can import and use enums from other modules,
// and that vfmt can handle all edge cases.
import geometry { Shape }
enum Token {
aa = 2
bb
cc
}
fn test_map_with_enum_keys() {
mut m := map[Token]string{}
m[.aa] = 'abc'
m[Token.bb] = 'def'
assert m[Token.aa] == 'abc'
assert m[.bb] == 'def'
s := '$m'
assert s == "{aa: 'abc', bb: 'def'}"
println(m)
}
fn test_map_with_imported_enum_keys() {
mut fm := map[geometry.Form3D]string{}
fm[.cube] = 'a cube'
fm[geometry.Form3D.sphere] = 'a sphere'
assert fm[.invalid] == ''
assert geometry.Form3D.cube in fm
assert fm[.sphere] == 'a sphere'
}
fn test_map_with_selective_imported_enum_keys() {
mut shapes := map[Shape]string{}
shapes[.circle] = 'a circle'
shapes[Shape.rectangle] = 'a rectangle'
assert shapes[.circle] == 'a circle'
shapes.delete(Shape.circle)
assert Shape.circle !in shapes
}