mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-02-22 13:57:46 -05:00
- Add a new `Seq` function to the `Set` type, this returns an iterator over the values. - Convert some users of the `Values` method to allow for more optimal code. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6676 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org> Co-authored-by: Gusted <postmaster@gusted.xyz> Co-committed-by: Gusted <postmaster@gusted.xyz>
50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
// Copyright 2022 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package container
|
|
|
|
import (
|
|
"slices"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestSet(t *testing.T) {
|
|
s := make(Set[string])
|
|
|
|
assert.True(t, s.Add("key1"))
|
|
assert.False(t, s.Add("key1"))
|
|
assert.True(t, s.Add("key2"))
|
|
|
|
assert.True(t, s.Contains("key1"))
|
|
assert.True(t, s.Contains("key2"))
|
|
assert.False(t, s.Contains("key3"))
|
|
|
|
assert.True(t, s.Remove("key2"))
|
|
assert.False(t, s.Contains("key2"))
|
|
|
|
assert.False(t, s.Remove("key3"))
|
|
|
|
s.AddMultiple("key4", "key5")
|
|
assert.True(t, s.Contains("key4"))
|
|
assert.True(t, s.Contains("key5"))
|
|
|
|
values := s.Values()
|
|
called := 0
|
|
for value := range s.Seq() {
|
|
called++
|
|
assert.True(t, slices.Contains(values, value))
|
|
}
|
|
assert.EqualValues(t, len(values), called)
|
|
|
|
s = SetOf("key6", "key7")
|
|
assert.False(t, s.Contains("key1"))
|
|
assert.True(t, s.Contains("key6"))
|
|
assert.True(t, s.Contains("key7"))
|
|
|
|
assert.True(t, s.IsSubset([]string{"key6", "key7"}))
|
|
assert.False(t, s.IsSubset([]string{"key1"}))
|
|
|
|
assert.True(t, s.IsSubset([]string{}))
|
|
}
|