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) }