| package mergo |
| |
| import ( |
| "testing" |
| ) |
| |
| func TestMapInterfaceWithMultipleLayer(t *testing.T) { |
| m1 := map[string]interface{}{ |
| "k1": map[string]interface{}{ |
| "k1.1": "v1", |
| }, |
| } |
| |
| m2 := map[string]interface{}{ |
| "k1": map[string]interface{}{ |
| "k1.1": "v2", |
| "k1.2": "v3", |
| }, |
| } |
| |
| if err := Map(&m1, m2, WithOverride); err != nil { |
| t.Fatalf("Error merging: %v", err) |
| } |
| |
| // Check overwrite of sub map works |
| expected := "v2" |
| actual := m1["k1"].(map[string]interface{})["k1.1"].(string) |
| if actual != expected { |
| t.Fatalf("Expected %v but got %v", |
| expected, |
| actual) |
| } |
| |
| // Check new key is merged |
| expected = "v3" |
| actual = m1["k1"].(map[string]interface{})["k1.2"].(string) |
| if actual != expected { |
| t.Fatalf("Expected %v but got %v", |
| expected, |
| actual) |
| } |
| } |