github.com/ccpgames/viper@v1.1.1/util_test.go (about)

     1  // Copyright © 2016 Steve Francia <spf@spf13.com>.
     2  //
     3  // Use of this source code is governed by an MIT-style
     4  // license that can be found in the LICENSE file.
     5  
     6  // Viper is a application configuration system.
     7  // It believes that applications can be configured a variety of ways
     8  // via flags, ENVIRONMENT variables, configuration files retrieved
     9  // from the file system, or a remote key/value store.
    10  
    11  package viper
    12  
    13  import (
    14  	"reflect"
    15  	"testing"
    16  )
    17  
    18  func TestCopyAndInsensitiviseMap(t *testing.T) {
    19  	var (
    20  		given = map[string]interface{}{
    21  			"Foo": 32,
    22  			"Bar": map[interface{}]interface {
    23  			}{
    24  				"ABc": "A",
    25  				"cDE": "B"},
    26  		}
    27  		expected = map[string]interface{}{
    28  			"foo": 32,
    29  			"bar": map[string]interface {
    30  			}{
    31  				"abc": "A",
    32  				"cde": "B"},
    33  		}
    34  	)
    35  
    36  	got := copyAndInsensitiviseMap(given)
    37  
    38  	if !reflect.DeepEqual(got, expected) {
    39  		t.Fatalf("Got %q\nexpected\n%q", got, expected)
    40  	}
    41  
    42  	if _, ok := given["foo"]; ok {
    43  		t.Fatal("Input map changed")
    44  	}
    45  
    46  	if _, ok := given["bar"]; ok {
    47  		t.Fatal("Input map changed")
    48  	}
    49  
    50  	m := given["Bar"].(map[interface{}]interface{})
    51  	if _, ok := m["ABc"]; !ok {
    52  		t.Fatal("Input map changed")
    53  	}
    54  }