github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/util/mapmerge_test.go (about)

     1  package util
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  )
     8  
     9  func TestMerge(t *testing.T) {
    10  	var base = map[string]string{
    11  		"a": "b",
    12  		"c": "10",
    13  		"y": "z",
    14  	}
    15  
    16  	var overlay = map[string]string{
    17  		"a": "z",
    18  		"c": "10",
    19  		"d": "e",
    20  	}
    21  
    22  	merged := MergeMaps(base, overlay)
    23  	require.Equal(t, merged, map[string]string{
    24  		"a": "z",
    25  		"c": "10",
    26  		"d": "e",
    27  		"y": "z",
    28  	})
    29  }
    30  
    31  func TestCopy(t *testing.T) {
    32  	var base = map[string]string{
    33  		"a": "b",
    34  		"c": "10",
    35  		"y": "z",
    36  	}
    37  
    38  	copy := CopyMap(base)
    39  	require.EqualValues(t, base, copy)
    40  	require.NotSame(t, base, copy)
    41  }
    42  
    43  func TestNilCopy(t *testing.T) {
    44  	var base map[string]string
    45  
    46  	copy := CopyMap(base)
    47  	require.EqualValues(t, base, copy)
    48  	require.NotSame(t, base, copy)
    49  }
    50  
    51  func TestNilBase(t *testing.T) {
    52  	var overlay = map[string]string{
    53  		"a": "z",
    54  		"c": "10",
    55  		"d": "e",
    56  	}
    57  
    58  	merged := MergeMaps(nil, overlay)
    59  	require.Equal(t, merged, overlay)
    60  }
    61  
    62  func TestNilOverlay(t *testing.T) {
    63  	var base = map[string]string{
    64  		"a": "b",
    65  		"c": "10",
    66  		"y": "z",
    67  	}
    68  
    69  	merged := MergeMaps(base, nil)
    70  	require.Equal(t, merged, base)
    71  }
    72  
    73  // TestImmutability tests that both given maps are unaltered
    74  func TestImmutability(t *testing.T) {
    75  	var base = map[string]string{
    76  		"a": "b",
    77  		"c": "10",
    78  		"y": "z",
    79  	}
    80  
    81  	var overlay = map[string]string{
    82  		"a": "z",
    83  		"c": "10",
    84  		"d": "e",
    85  	}
    86  
    87  	beforeBase := CopyMap(base)
    88  	beforeOverlay := CopyMap(overlay)
    89  	require.EqualValues(t, base, beforeBase)
    90  	require.EqualValues(t, overlay, beforeOverlay)
    91  
    92  	MergeMaps(base, overlay)
    93  
    94  	require.EqualValues(t, base, beforeBase)
    95  	require.EqualValues(t, overlay, beforeOverlay)
    96  }