blob: 002e53eb4ec02c61928c9de3a44ee341236fca77 [file] [log] [blame]
// Copyright 2025 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package bazel2gn
import (
"testing"
"github.com/google/go-cmp/cmp"
)
func TestMustMergeMaps(t *testing.T) {
tests := []struct {
name string
m1 map[string]string
m2 map[string]string
want map[string]string
}{
{
name: "two empty maps",
m1: map[string]string{},
m2: map[string]string{},
want: map[string]string{},
},
{
name: "first map empty",
m1: map[string]string{},
m2: map[string]string{"a": "b"},
want: map[string]string{"a": "b"},
},
{
name: "second map empty",
m1: map[string]string{"a": "b"},
m2: map[string]string{},
want: map[string]string{"a": "b"},
},
{
name: "no overlapping keys",
m1: map[string]string{
"a": "b",
"b": "c",
},
m2: map[string]string{
"c": "d",
},
want: map[string]string{
"a": "b",
"b": "c",
"c": "d",
},
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
got := mustMergeMaps(tc.m1, tc.m2)
if diff := cmp.Diff(tc.want, got); diff != "" {
t.Errorf("mustMergeMaps(%v, %v) got result diff (-want, +got):\n%s", tc.m1, tc.m2, diff)
}
})
}
}
func TestMustMergeMapsPanic(t *testing.T) {
tests := []struct {
name string
m1 map[string]string
m2 map[string]string
}{
{
name: "overlapping keys",
m1: map[string]string{"a": "b"},
m2: map[string]string{"a": "c"},
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
defer func() {
if r := recover(); r == nil {
t.Error("mustMergeMaps didn't panic as expected")
}
}()
mustMergeMaps(tc.m1, tc.m2)
})
}
}