Jelajahi Sumber

Unit test for mergeTypeMaps

Michael Dresser 5 tahun lalu
induk
melakukan
d589e87c10
1 mengubah file dengan 124 tambahan dan 0 penghapusan
  1. 124 0
      pkg/costmodel/costmodel_test.go

+ 124 - 0
pkg/costmodel/costmodel_test.go

@@ -0,0 +1,124 @@
+package costmodel
+
+import (
+	"reflect"
+	"testing"
+)
+
+func TestMergeTypeMaps(t *testing.T) {
+	cases := []struct {
+		name     string
+		map1     map[nodeIdentifierNoProviderID]string
+		map2     map[nodeIdentifierNoProviderID]string
+		expected map[nodeIdentifierNoProviderID]string
+	}{
+		{
+			name:     "both empty",
+			map1:     map[nodeIdentifierNoProviderID]string{},
+			map2:     map[nodeIdentifierNoProviderID]string{},
+			expected: map[nodeIdentifierNoProviderID]string{},
+		},
+		{
+			name: "map2 empty",
+			map1: map[nodeIdentifierNoProviderID]string{
+				nodeIdentifierNoProviderID{
+					Cluster: "cluster1",
+					Name:    "node1",
+				}: "type1",
+			},
+			map2: map[nodeIdentifierNoProviderID]string{},
+			expected: map[nodeIdentifierNoProviderID]string{
+				nodeIdentifierNoProviderID{
+					Cluster: "cluster1",
+					Name:    "node1",
+				}: "type1",
+			},
+		},
+		{
+			name: "map2 empty",
+			map1: map[nodeIdentifierNoProviderID]string{},
+			map2: map[nodeIdentifierNoProviderID]string{
+				nodeIdentifierNoProviderID{
+					Cluster: "cluster1",
+					Name:    "node1",
+				}: "type1",
+			},
+			expected: map[nodeIdentifierNoProviderID]string{
+				nodeIdentifierNoProviderID{
+					Cluster: "cluster1",
+					Name:    "node1",
+				}: "type1",
+			},
+		},
+		{
+			name: "no overlap",
+			map1: map[nodeIdentifierNoProviderID]string{
+				nodeIdentifierNoProviderID{
+					Cluster: "cluster1",
+					Name:    "node1",
+				}: "type1",
+			},
+			map2: map[nodeIdentifierNoProviderID]string{
+				nodeIdentifierNoProviderID{
+					Cluster: "cluster1",
+					Name:    "node2",
+				}: "type2",
+				nodeIdentifierNoProviderID{
+					Cluster: "cluster1",
+					Name:    "node4",
+				}: "type4",
+			},
+			expected: map[nodeIdentifierNoProviderID]string{
+				nodeIdentifierNoProviderID{
+					Cluster: "cluster1",
+					Name:    "node1",
+				}: "type1",
+				nodeIdentifierNoProviderID{
+					Cluster: "cluster1",
+					Name:    "node2",
+				}: "type2",
+				nodeIdentifierNoProviderID{
+					Cluster: "cluster1",
+					Name:    "node4",
+				}: "type4",
+			},
+		},
+		{
+			name: "with overlap",
+			map1: map[nodeIdentifierNoProviderID]string{
+				nodeIdentifierNoProviderID{
+					Cluster: "cluster1",
+					Name:    "node1",
+				}: "type1",
+			},
+			map2: map[nodeIdentifierNoProviderID]string{
+				nodeIdentifierNoProviderID{
+					Cluster: "cluster1",
+					Name:    "node2",
+				}: "type2",
+				nodeIdentifierNoProviderID{
+					Cluster: "cluster1",
+					Name:    "node1",
+				}: "type4",
+			},
+			expected: map[nodeIdentifierNoProviderID]string{
+				nodeIdentifierNoProviderID{
+					Cluster: "cluster1",
+					Name:    "node1",
+				}: "type1",
+				nodeIdentifierNoProviderID{
+					Cluster: "cluster1",
+					Name:    "node2",
+				}: "type2",
+			},
+		},
+	}
+
+	for _, testCase := range cases {
+		result := mergeTypeMaps(testCase.map1, testCase.map2)
+
+		if !reflect.DeepEqual(result, testCase.expected) {
+			t.Errorf("mergeTypeMaps case %s failed. Got %+v but expected %+v", testCase.name, result, testCase.expected)
+		}
+	}
+}