vq / vlib / v / tests / interfaces / interface_with_option_field_test.v
32 lines · 26 sloc · 523 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1import time
2
3interface InterfaceObject {
4mut:
5 duration ?time.Duration
6 update()
7}
8
9struct Object {
10mut:
11 duration ?time.Duration
12}
13
14fn (mut obj Object) update() {
15 duration := obj.duration or { time.second }
16 println(duration)
17}
18
19struct FooObject {
20 Object
21}
22
23fn (mut obj FooObject) update() {
24 duration := obj.duration or { time.millisecond * 500 }
25 println(duration)
26}
27
28fn test_interface_with_option_field() {
29 mut object := InterfaceObject(FooObject{})
30 println(object)
31 assert '${object.duration}' == 'Option(none)'
32}
33