1// Copyright 2022 The Gitea Authors. All rights reserved.
2// SPDX-License-Identifier: MIT
3
4package container
5
6import (
7 "slices"
8 "testing"
9
10 "github.com/stretchr/testify/assert"
11)
12
13func TestSet(t *testing.T) {
14 s := make(Set[string])
15
16 assert.True(t, s.Add("key1"))
17 assert.False(t, s.Add("key1"))
18 assert.True(t, s.Add("key2"))
19
20 assert.True(t, s.Contains("key1"))
21 assert.True(t, s.Contains("key2"))
22 assert.False(t, s.Contains("key3"))
23
24 assert.True(t, s.Remove("key2"))
25 assert.False(t, s.Contains("key2"))
26
27 assert.False(t, s.Remove("key3"))
28
29 s.AddMultiple("key4", "key5")
30 assert.True(t, s.Contains("key4"))
31 assert.True(t, s.Contains("key5"))
32
33 values := s.Values()
34 called := 0
35 for value := range s.Seq() {
36 called++
37 assert.True(t, slices.Contains(values, value))
38 }
39 assert.Equal(t, len(values), called)
40
41 s = SetOf("key6", "key7")
42 assert.False(t, s.Contains("key1"))
43 assert.True(t, s.Contains("key6"))
44 assert.True(t, s.Contains("key7"))
45
46 assert.True(t, s.IsSubset([]string{"key6", "key7"}))
47 assert.False(t, s.IsSubset([]string{"key1"}))
48
49 assert.True(t, s.IsSubset([]string{}))
50}