mirror of https://github.com/fluxcd/cli-utils.git
118 lines
2.3 KiB
Go
118 lines
2.3 KiB
Go
// Copyright 2020 The Kubernetes Authors.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package object
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/fluxcd/cli-utils/pkg/kstatus/polling/testutil"
|
|
)
|
|
|
|
var resources = map[string]string{
|
|
"pod1": `
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: pod1
|
|
namespace: default
|
|
`,
|
|
"pod1dupe": `
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: pod1
|
|
namespace: default
|
|
`,
|
|
"pod2": `
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: pod2
|
|
namespace: default
|
|
`,
|
|
"pod3": `
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: pod3
|
|
namespace: default
|
|
`,
|
|
"pod4": `
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: pod4
|
|
namespace: default
|
|
`,
|
|
}
|
|
|
|
func TestUnstructuredSetEquals(t *testing.T) {
|
|
pod1 := testutil.YamlToUnstructured(t, resources["pod1"])
|
|
pod1dupe := testutil.YamlToUnstructured(t, resources["pod1dupe"])
|
|
pod2 := testutil.YamlToUnstructured(t, resources["pod2"])
|
|
pod3 := testutil.YamlToUnstructured(t, resources["pod3"])
|
|
pod4 := testutil.YamlToUnstructured(t, resources["pod4"])
|
|
|
|
testCases := map[string]struct {
|
|
setA UnstructuredSet
|
|
setB UnstructuredSet
|
|
isEqual bool
|
|
}{
|
|
"Empty sets": {
|
|
setA: UnstructuredSet{},
|
|
setB: UnstructuredSet{},
|
|
isEqual: true,
|
|
},
|
|
"Empty first set": {
|
|
setA: UnstructuredSet{},
|
|
setB: UnstructuredSet{pod1, pod2},
|
|
isEqual: false,
|
|
},
|
|
"Empty second set": {
|
|
setA: UnstructuredSet{pod1, pod2},
|
|
setB: UnstructuredSet{},
|
|
isEqual: false,
|
|
},
|
|
"Different order": {
|
|
setA: UnstructuredSet{pod1, pod2},
|
|
setB: UnstructuredSet{pod2, pod1},
|
|
isEqual: true,
|
|
},
|
|
"One item overlap": {
|
|
setA: UnstructuredSet{pod1, pod2},
|
|
setB: UnstructuredSet{pod2, pod3},
|
|
isEqual: false,
|
|
},
|
|
"Disjoint sets": {
|
|
setA: UnstructuredSet{pod1, pod2},
|
|
setB: UnstructuredSet{pod3, pod4},
|
|
isEqual: false,
|
|
},
|
|
"Duplicate pointer": {
|
|
setA: UnstructuredSet{pod1, pod1},
|
|
setB: UnstructuredSet{pod1},
|
|
isEqual: true,
|
|
},
|
|
"Duplicate value": {
|
|
setA: UnstructuredSet{pod1, pod1dupe},
|
|
setB: UnstructuredSet{pod1},
|
|
isEqual: true,
|
|
},
|
|
"Same value": {
|
|
setA: UnstructuredSet{pod1},
|
|
setB: UnstructuredSet{pod1dupe},
|
|
isEqual: true,
|
|
},
|
|
}
|
|
|
|
for name, tc := range testCases {
|
|
t.Run(name, func(t *testing.T) {
|
|
actual := tc.setA.Equal(tc.setB)
|
|
if tc.isEqual != actual {
|
|
t.Errorf("Equal expected (%t), got (%t)", tc.isEqual, actual)
|
|
}
|
|
})
|
|
}
|
|
}
|