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

118 lines
2.6 KiB
V

module datatypes
fn test_exists() {
mut set := Set[string]{}
set.add('foo')
assert set.exists('foo')
assert set.exists('bar') == false
}
fn test_remove() {
mut set := Set[string]{}
set.remove('foo')
set.add('foo')
assert set.exists('foo')
set.remove('foo')
assert set.exists('foo') == false
}
fn test_size() {
mut set := Set[string]{}
set.add('foo')
set.add('foo')
assert set.size() == 1
}
fn test_pop() {
mut set := Set[string]{}
set.add('foo')
set.pop() or { return }
assert set.exists('foo') == false
}
fn test_clear() {
mut set := Set[string]{}
set.add('foo')
set.clear()
assert set.size() == 0
}
fn test_rest() {
mut set := Set[string]{}
set.add('foo')
set.add('bar')
array := set.rest() or { return }
assert array.len == 1
}
fn test_equal() {
mut first_set := Set[string]{}
mut second_set := Set[string]{}
first_set.add('foo')
assert second_set != first_set
second_set.add('foo')
assert second_set == first_set
}
fn test_is_empty() {
mut set := Set[string]{}
assert set.is_empty()
set.add('foo')
assert set.is_empty() == false
}
fn test_union() {
mut first_set := Set[string]{}
mut second_set := Set[string]{}
first_set.add_all(['b', 'c', 'd'])
second_set.add_all(['a', 'e'])
mut third_set := first_set.@union(second_set)
assert third_set.exists('a')
assert third_set.exists('b')
assert third_set.exists('c')
assert third_set.exists('d')
assert third_set.exists('e')
}
fn test_intersection() {
mut first_set := Set[string]{}
first_set.add_all(['foo', 'bar', 'baz'])
mut second_set := Set[string]{}
second_set.add_all(['bar', 'baz', 'boo'])
mut third_set := first_set.intersection(second_set)
assert third_set.exists('foo') == false
assert third_set.exists('bar')
assert third_set.exists('baz')
assert third_set.exists('boo') == false
}
fn test_difference() {
mut first_set := Set[string]{}
mut second_set := Set[string]{}
first_set.add_all(['foo', 'bar', 'baz'])
second_set.add_all(['bar', 'baz', 'boo'])
mut third_set := first_set - second_set
assert third_set.exists('foo')
assert third_set.exists('bar') == false
assert third_set.exists('baz') == false
assert third_set.exists('boo') == false
first_set.clear()
second_set.clear()
third_set.clear()
first_set.add_all(['bar', 'baz', 'boo'])
second_set.add_all(['foo', 'bar', 'baz'])
third_set = first_set - second_set
assert third_set.exists('foo') == false
assert third_set.exists('bar') == false
assert third_set.exists('baz') == false
assert third_set.exists('boo')
}
fn test_subset() {
mut set := Set[string]{}
set.add_all(['a', 'b', 'c'])
mut subset := Set[string]{}
subset.add_all(['b', 'c'])
assert set.subset(subset)
}