-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexample_test.go
80 lines (74 loc) · 1.38 KB
/
example_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package merge
import (
"fmt"
"reflect"
"testing"
)
func TestExample(t *testing.T) {
type User struct {
Name string
LastName string
}
//Declare type that contains map to merge
type Data struct {
Users Map[string, User] // same as map[string]User
Blacklist Slice[string] // same as []string
}
actual := Data{
Blacklist: []string{"sammy1789"},
Users: map[string]User{
"johnny76": {
Name: "Jonh",
LastName: "Smith",
},
"sammy1789": {
Name: "Samuel",
LastName: "Smith",
},
},
}
addUsers := map[string]User{
"willy16": {
Name: "William",
LastName: "Darrel",
},
"jenny12": {
Name: "Jennifer",
LastName: "Gunning",
},
}
addBlacklist := []string{"deleted_user_111"}
//merge
actual.Users.Merge(addUsers)
actual.Blacklist.Merge(addBlacklist)
fmt.Println("merged result", actual)
//validate
expected := Data{
Blacklist: []string{"sammy1789", "deleted_user_111"},
Users: map[string]User{
"johnny76": {
Name: "Jonh",
LastName: "Smith",
},
"sammy1789": {
Name: "Samuel",
LastName: "Smith",
},
"willy16": {
Name: "William",
LastName: "Darrel",
},
"jenny12": {
Name: "Jennifer",
LastName: "Gunning",
},
},
}
deepEqual := reflect.DeepEqual(
expected,
actual,
)
if !deepEqual {
t.Fatal("Expected:", expected, "Actual:", actual)
}
}