// Copyright © 2016 Steve Francia <spf@spf13.com>. // // Use of this source code is governed by an MIT-style // license that can be found in the LICENSE file. // Viper is a application configuration system. // It believes that applications can be configured a variety of ways // via flags, ENVIRONMENT variables, configuration files retrieved // from the file system, or a remote key/value store. package viper import ( "reflect" "testing" ) func TestCopyAndInsensitiviseMap(t *testing.T) { var ( given = map[string]interface{}{ "Foo": 32, "Bar": map[interface{}]interface { }{ "ABc": "A", "cDE": "B"}, } expected = map[string]interface{}{ "foo": 32, "bar": map[string]interface { }{ "abc": "A", "cde": "B"}, } ) got := copyAndInsensitiviseMap(given) if !reflect.DeepEqual(got, expected) { t.Fatalf("Got %q\nexpected\n%q", got, expected) } if _, ok := given["foo"]; ok { t.Fatal("Input map changed") } if _, ok := given["bar"]; ok { t.Fatal("Input map changed") } m := given["Bar"].(map[interface{}]interface{}) if _, ok := m["ABc"]; !ok { t.Fatal("Input map changed") } }