aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/cli/internal/util/set_test.go
diff options
context:
space:
mode:
author简律纯 <hsiangnianian@outlook.com>2023-04-28 01:36:55 +0800
committer简律纯 <hsiangnianian@outlook.com>2023-04-28 01:36:55 +0800
commitfc8c5fdce62fb229202659408798a7b6c98f6e8b (patch)
tree7554f80e50de4af6fd255afa7c21bcdd58a7af34 /cli/internal/util/set_test.go
parentdd84b9d64fb98746a230cd24233ff50a562c39c9 (diff)
downloadHydroRoll-fc8c5fdce62fb229202659408798a7b6c98f6e8b.tar.gz
HydroRoll-fc8c5fdce62fb229202659408798a7b6c98f6e8b.zip
Diffstat (limited to 'cli/internal/util/set_test.go')
-rw-r--r--cli/internal/util/set_test.go149
1 files changed, 0 insertions, 149 deletions
diff --git a/cli/internal/util/set_test.go b/cli/internal/util/set_test.go
deleted file mode 100644
index 52736b4..0000000
--- a/cli/internal/util/set_test.go
+++ /dev/null
@@ -1,149 +0,0 @@
-package util
-
-import (
- "fmt"
- "testing"
-)
-
-func TestSetDifference(t *testing.T) {
- cases := []struct {
- Name string
- A, B []interface{}
- Expected []interface{}
- }{
- {
- "same",
- []interface{}{1, 2, 3},
- []interface{}{3, 1, 2},
- []interface{}{},
- },
-
- {
- "A has extra elements",
- []interface{}{1, 2, 3},
- []interface{}{3, 2},
- []interface{}{1},
- },
-
- {
- "B has extra elements",
- []interface{}{1, 2, 3},
- []interface{}{3, 2, 1, 4},
- []interface{}{},
- },
- }
-
- for i, tc := range cases {
- t.Run(fmt.Sprintf("%d-%s", i, tc.Name), func(t *testing.T) {
- one := make(Set)
- two := make(Set)
- expected := make(Set)
- for _, v := range tc.A {
- one.Add(v)
- }
- for _, v := range tc.B {
- two.Add(v)
- }
- for _, v := range tc.Expected {
- expected.Add(v)
- }
-
- actual := one.Difference(two)
- match := actual.Intersection(expected)
- if match.Len() != expected.Len() {
- t.Fatalf("bad: %#v", actual.List())
- }
- })
- }
-}
-
-func TestSetFilter(t *testing.T) {
- cases := []struct {
- Input []interface{}
- Expected []interface{}
- }{
- {
- []interface{}{1, 2, 3},
- []interface{}{1, 2, 3},
- },
-
- {
- []interface{}{4, 5, 6},
- []interface{}{4},
- },
-
- {
- []interface{}{7, 8, 9},
- []interface{}{},
- },
- }
-
- for i, tc := range cases {
- t.Run(fmt.Sprintf("%d-%#v", i, tc.Input), func(t *testing.T) {
- input := make(Set)
- expected := make(Set)
- for _, v := range tc.Input {
- input.Add(v)
- }
- for _, v := range tc.Expected {
- expected.Add(v)
- }
-
- actual := input.Filter(func(v interface{}) bool {
- return v.(int) < 5
- })
- match := actual.Intersection(expected)
- if match.Len() != expected.Len() {
- t.Fatalf("bad: %#v", actual.List())
- }
- })
- }
-}
-
-func TestSetCopy(t *testing.T) {
- a := make(Set)
- a.Add(1)
- a.Add(2)
-
- b := a.Copy()
- b.Add(3)
-
- diff := b.Difference(a)
-
- if diff.Len() != 1 {
- t.Fatalf("expected single diff value, got %#v", diff)
- }
-
- if !diff.Includes(3) {
- t.Fatalf("diff does not contain 3, got %#v", diff)
- }
-
-}
-
-func makeSet(n int) Set {
- ret := make(Set, n)
- for i := 0; i < n; i++ {
- ret.Add(i)
- }
- return ret
-}
-
-func BenchmarkSetIntersection_100_100000(b *testing.B) {
- small := makeSet(100)
- large := makeSet(100000)
-
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- small.Intersection(large)
- }
-}
-
-func BenchmarkSetIntersection_100000_100(b *testing.B) {
- small := makeSet(100)
- large := makeSet(100000)
-
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- large.Intersection(small)
- }
-}