46 lines
683 B
Go
46 lines
683 B
Go
|
package common
|
||
|
|
||
|
import (
|
||
|
"reflect"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestDecodeConfig(t *testing.T) {
|
||
|
type Local struct {
|
||
|
Foo string
|
||
|
Bar string
|
||
|
}
|
||
|
|
||
|
raws := []interface{}{
|
||
|
map[string]interface{}{
|
||
|
"foo": "bar",
|
||
|
},
|
||
|
map[string]interface{}{
|
||
|
"bar": "baz",
|
||
|
"baz": "what",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
var result Local
|
||
|
md, err := DecodeConfig(&result, raws...)
|
||
|
if err != nil {
|
||
|
t.Fatalf("err: %s", err)
|
||
|
}
|
||
|
|
||
|
if result.Foo != "bar" {
|
||
|
t.Fatalf("invalid: %#v", result.Foo)
|
||
|
}
|
||
|
|
||
|
if result.Bar != "baz" {
|
||
|
t.Fatalf("invalid: %#v", result.Bar)
|
||
|
}
|
||
|
|
||
|
if md == nil {
|
||
|
t.Fatal("metadata should not be nil")
|
||
|
}
|
||
|
|
||
|
if !reflect.DeepEqual(md.Unused, []string{"baz"}) {
|
||
|
t.Fatalf("unused: %#v", md.Unused)
|
||
|
}
|
||
|
}
|