v2 / vlib / v / tests / options / option_selector_unwrapping_test.v
44 lines · 40 sloc · 808 bytes · c7e00b395b3b5f4ed39ef658cc5a1610d3501118
Raw
1module main
2
3@[heap]
4interface IGameObject {
5mut:
6 name string
7 parent ?&IGameObject
8 next ?&IGameObject
9 child ?&IGameObject
10 last_child ?&IGameObject
11 add_child(mut o IGameObject)
12}
13
14@[heap]
15struct GameObject implements IGameObject {
16mut:
17 name string
18 parent ?&IGameObject
19 next ?&IGameObject
20 child ?&IGameObject
21 last_child ?&IGameObject
22}
23
24fn (mut gameobject GameObject) add_child(mut o IGameObject) {
25 o.parent = gameobject
26 if gameobject.last_child != none {
27 gameobject.last_child.next = o
28 } else {
29 gameobject.child = o
30 }
31 gameobject.last_child = o
32}
33
34fn test_main() {
35 mut v1 := &GameObject{
36 name: 'v1'
37 }
38 mut v2 := &GameObject{
39 name: 'v2'
40 }
41 v1.add_child(mut v2)
42 assert v1.child? == IGameObject(v2)
43 assert v1.last_child? == IGameObject(v2)
44}
45