mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-11 17:12:51 +00:00
Add resource id set.
This commit is contained in:
30
api/resource/idset.go
Normal file
30
api/resource/idset.go
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
// Copyright 2020 The Kubernetes Authors.
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
package resource
|
||||||
|
|
||||||
|
import "sigs.k8s.io/kustomize/api/resid"
|
||||||
|
|
||||||
|
type IdSet struct {
|
||||||
|
ids map[resid.ResId]bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func MakeIdSet(slice []*Resource) *IdSet {
|
||||||
|
set := make(map[resid.ResId]bool)
|
||||||
|
for _, r := range slice {
|
||||||
|
id := r.CurId()
|
||||||
|
if _, ok := set[id]; !ok {
|
||||||
|
set[id] = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return &IdSet{ids: set}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s IdSet) Contains(id resid.ResId) bool {
|
||||||
|
_, ok := s.ids[id]
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s IdSet) Size() int {
|
||||||
|
return len(s.ids)
|
||||||
|
}
|
||||||
32
api/resource/idset_test.go
Normal file
32
api/resource/idset_test.go
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
// Copyright 2020 The Kubernetes Authors.
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
package resource_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
. "sigs.k8s.io/kustomize/api/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestIdSet_Empty(t *testing.T) {
|
||||||
|
s := MakeIdSet([]*Resource{})
|
||||||
|
assert.Equal(t, 0, s.Size())
|
||||||
|
assert.False(t, s.Contains(testDeployment.CurId()))
|
||||||
|
assert.False(t, s.Contains(testConfigMap.CurId()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestIdSet_One(t *testing.T) {
|
||||||
|
s := MakeIdSet([]*Resource{testDeployment})
|
||||||
|
assert.Equal(t, 1, s.Size())
|
||||||
|
assert.True(t, s.Contains(testDeployment.CurId()))
|
||||||
|
assert.False(t, s.Contains(testConfigMap.CurId()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestIdSet_Two(t *testing.T) {
|
||||||
|
s := MakeIdSet([]*Resource{testDeployment, testConfigMap})
|
||||||
|
assert.Equal(t, 2, s.Size())
|
||||||
|
assert.True(t, s.Contains(testDeployment.CurId()))
|
||||||
|
assert.True(t, s.Contains(testConfigMap.CurId()))
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user