| 1 | // This tests that V can import and use enums from other modules, |
| 2 | // and that vfmt can handle all edge cases. |
| 3 | import geometry { Shape } |
| 4 | |
| 5 | enum Token { |
| 6 | aa = 2 |
| 7 | bb |
| 8 | cc |
| 9 | } |
| 10 | |
| 11 | fn test_map_with_enum_keys() { |
| 12 | mut m := map[Token]string{} |
| 13 | m[.aa] = 'abc' |
| 14 | m[Token.bb] = 'def' |
| 15 | assert m[Token.aa] == 'abc' |
| 16 | assert m[.bb] == 'def' |
| 17 | s := '${m}' |
| 18 | assert s == "{aa: 'abc', bb: 'def'}" |
| 19 | println(m) |
| 20 | } |
| 21 | |
| 22 | fn test_map_with_imported_enum_keys() { |
| 23 | mut fm := map[geometry.Form3D]string{} |
| 24 | fm[.cube] = 'a cube' |
| 25 | fm[geometry.Form3D.sphere] = 'a sphere' |
| 26 | assert fm[.invalid] == '' |
| 27 | assert geometry.Form3D.cube in fm |
| 28 | assert fm[.sphere] == 'a sphere' |
| 29 | } |
| 30 | |
| 31 | fn test_map_with_selective_imported_enum_keys() { |
| 32 | mut shapes := map[Shape]string{} |
| 33 | shapes[.circle] = 'a circle' |
| 34 | shapes[Shape.rectangle] = 'a rectangle' |
| 35 | assert shapes[.circle] == 'a circle' |
| 36 | shapes.delete(Shape.circle) |
| 37 | assert Shape.circle !in shapes |
| 38 | } |
| 39 | |