v2 / vlib / v / tests / conditions / ifs / if_cond_with_option_test.v
41 lines · 33 sloc · 600 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1import rand
2
3interface Sample {
4mut:
5 get_next() int
6}
7
8struct SampleA {
9mut:
10 state int
11}
12
13fn (mut sample SampleA) get_next() int {
14 sample.state++
15 return sample.state
16}
17
18struct SampleB {
19mut:
20 state int = 1
21}
22
23fn (mut sample SampleB) get_next() int {
24 sample.state += 2
25 return sample.state
26}
27
28fn create_sampler() Sample {
29 return if rand.intn(1) or { 0 } == 0 { Sample(SampleA{}) } else { Sample(SampleB{}) }
30}
31
32fn test_if_cond_with_option() {
33 mut sample := create_sampler()
34 mut ret := sample.get_next()
35 println(ret)
36 assert ret == 1
37
38 ret = sample.get_next()
39 println(ret)
40 assert ret == 2
41}
42