v2 / vlib / v / tests / generics / generics_array_delete_test.v
89 lines · 68 sloc · 1.2 KB · 6488041a749df9762348d019c4223908c476f2e2
Raw
1struct Set[T] {
2mut:
3 field []T
4}
5
6fn (mut s Set[T]) add[T](value T) bool {
7 mut result := false
8
9 if value !in s.field {
10 s.field << value
11 result = true
12 }
13
14 return result
15}
16
17fn (mut s Set[T]) remove[T](value T) bool {
18 mut result := false
19
20 if value in s.field {
21 ndx := s.field.index(value)
22 s.field.delete(ndx)
23 result = true
24 }
25
26 return result
27}
28
29fn test_generics_array_delete() {
30 // int
31 mut set1 := Set[int]{}
32
33 mut added := set1.add(4)
34 println(added)
35 assert added
36
37 added = set1.add(3)
38 println(added)
39 assert added
40
41 added = set1.add(3)
42 println(added)
43 assert !added
44
45 println(set1)
46 mut removed := set1.remove(4)
47 println(removed)
48 assert removed
49
50 // f64
51 mut set2 := Set[f64]{}
52
53 added = set2.add(4.4)
54 println(added)
55 assert added
56
57 added = set2.add(3.3)
58 println(added)
59 assert added
60
61 added = set2.add(3.3)
62 println(added)
63 assert !added
64
65 println(set2)
66 removed = set2.remove(4.4)
67 println(removed)
68 assert removed
69
70 // string
71 mut set3 := Set[string]{}
72
73 added = set3.add('aaa')
74 println(added)
75 assert added
76
77 added = set3.add('bbb')
78 println(added)
79 assert added
80
81 added = set3.add('bbb')
82 println(added)
83 assert !added
84
85 println(set3)
86 removed = set3.remove('aaa')
87 println(removed)
88 assert removed
89}
90