1package mergo_test
2
3import (
4	"encoding/json"
5	"testing"
6
7	"github.com/imdario/mergo"
8)
9
10const issue138configuration string = `
11{
12	"Port": 80
13}
14`
15
16func TestIssue138(t *testing.T) {
17	type config struct {
18		Port uint16
19	}
20	type compatibleConfig struct {
21		Port float64
22	}
23
24	foo := make(map[string]interface{})
25	// encoding/json unmarshals numbers as float64
26	// https://golang.org/pkg/encoding/json/#Unmarshal
27	json.Unmarshal([]byte(issue138configuration), &foo)
28
29	err := mergo.Map(&config{}, foo)
30	if err == nil {
31		t.Error("expected type mismatch error, got nil")
32	} else {
33		if err.Error() != "type mismatch on Port field: found float64, expected uint16" {
34			t.Errorf("expected type mismatch error, got %q", err)
35		}
36	}
37
38	c := compatibleConfig{}
39	if err := mergo.Map(&c, foo); err != nil {
40		t.Error(err)
41	}
42}
43