test to verify map => struct
Mitchell Hashimoto
3 years ago
2419 | 2419 | } |
2420 | 2420 | } |
2421 | 2421 | |
2422 | func TestDecode_mapToStruct(t *testing.T) { | |
2423 | type Target struct { | |
2424 | String string | |
2425 | StringPtr *string | |
2426 | } | |
2427 | ||
2428 | expected := Target{ | |
2429 | String: "hello", | |
2430 | } | |
2431 | ||
2432 | var target Target | |
2433 | err := Decode(map[string]interface{}{ | |
2434 | "string": "hello", | |
2435 | "StringPtr": "goodbye", | |
2436 | }, &target) | |
2437 | if err != nil { | |
2438 | t.Fatalf("got error: %s", err) | |
2439 | } | |
2440 | ||
2441 | // Pointers fail reflect test so do those manually | |
2442 | if target.StringPtr == nil || *target.StringPtr != "goodbye" { | |
2443 | t.Fatalf("bad: %#v", target) | |
2444 | } | |
2445 | target.StringPtr = nil | |
2446 | ||
2447 | if !reflect.DeepEqual(target, expected) { | |
2448 | t.Fatalf("bad: %#v", target) | |
2449 | } | |
2450 | } | |
2451 | ||
2422 | 2452 | func testSliceInput(t *testing.T, input map[string]interface{}, expected *Slice) { |
2423 | 2453 | var result Slice |
2424 | 2454 | err := Decode(input, &result) |