1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/vlib/v/tests/generics_array_delete_test.v

90 lines
1.2 KiB
V

struct Set[T] {
mut:
field []T
}
fn (mut s Set[T]) add[T](value T) bool {
mut result := false
if value !in s.field {
s.field << value
result = true
}
return result
}
fn (mut s Set[T]) remove[T](value T) bool {
mut result := false
if value in s.field {
ndx := s.field.index(value)
s.field.delete(ndx)
result = true
}
return result
}
fn test_generics_array_delete() {
// int
mut set1 := Set[int]{}
mut added := set1.add(4)
println(added)
assert added
added = set1.add(3)
println(added)
assert added
added = set1.add(3)
println(added)
assert !added
println(set1)
mut removed := set1.remove(4)
println(removed)
assert removed
// f64
mut set2 := Set[f64]{}
added = set2.add(4.4)
println(added)
assert added
added = set2.add(3.3)
println(added)
assert added
added = set2.add(3.3)
println(added)
assert !added
println(set2)
removed = set2.remove(4.4)
println(removed)
assert removed
// string
mut set3 := Set[string]{}
added = set3.add('aaa')
println(added)
assert added
added = set3.add('bbb')
println(added)
assert added
added = set3.add('bbb')
println(added)
assert !added
println(set3)
removed = set3.remove('aaa')
println(removed)
assert removed
}