mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-10 16:42: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