@@ -13,7 +13,7 @@ import (
13
13
)
14
14
15
15
func TestIntroducedHistory_OneBuildContext (t * testing.T ) {
16
- input := map [ string ] map [ string ] * internal.UnitSymbol {}
16
+ input := internal .NewSymbolHistory ()
17
17
for _ , s := range []struct {
18
18
name , version string
19
19
}{
@@ -22,57 +22,50 @@ func TestIntroducedHistory_OneBuildContext(t *testing.T) {
22
22
{"Foo.A" , "v1.2.0" },
23
23
{"Bar" , "v1.1.0" },
24
24
} {
25
- if _ , ok := input [s .version ]; ! ok {
26
- input [s .version ] = map [string ]* internal.UnitSymbol {}
27
- }
28
- us := & internal.UnitSymbol {
29
- SymbolMeta : internal.SymbolMeta {
30
- Name : s .name ,
31
- },
32
- }
25
+ sm := internal.SymbolMeta {Name : s .name }
33
26
for _ , b := range internal .BuildContexts {
34
- us . AddBuildContext ( b )
27
+ input . AddSymbol ( sm , s . version , b )
35
28
}
36
- input [s.version ][s.name ] = us
37
29
}
38
- want := map [string ]map [string ]* internal.UnitSymbol {
39
- "v1.0.0" : {
40
- "Foo" : & internal.UnitSymbol {
41
- SymbolMeta : internal.SymbolMeta {
42
- Name : "Foo" ,
43
- },
44
- },
45
- },
46
- "v1.1.0" : {
47
- "Bar" : & internal.UnitSymbol {
48
- SymbolMeta : internal.SymbolMeta {
49
- Name : "Bar" ,
50
- },
51
- },
52
- },
53
- "v1.2.0" : {
54
- "Foo.A" : & internal.UnitSymbol {
55
- SymbolMeta : internal.SymbolMeta {
56
- Name : "Foo.A" ,
57
- },
58
- },
59
- },
30
+ want := internal .NewSymbolHistory ()
31
+ want .AddSymbol (
32
+ internal.SymbolMeta {Name : "Foo" },
33
+ "v1.0.0" ,
34
+ internal .BuildContextAll ,
35
+ )
36
+ want .AddSymbol (
37
+ internal.SymbolMeta {Name : "Bar" },
38
+ "v1.1.0" ,
39
+ internal .BuildContextAll ,
40
+ )
41
+ want .AddSymbol (
42
+ internal.SymbolMeta {Name : "Foo.A" },
43
+ "v1.2.0" ,
44
+ internal .BuildContextAll ,
45
+ )
46
+ got , err := IntroducedHistory (input )
47
+ if err != nil {
48
+ t .Fatal (err )
60
49
}
61
- got := LegacyIntroducedHistory (input )
62
- if diff := cmp .Diff (want , got , cmpopts .IgnoreFields (internal.UnitSymbol {}, "builds" )); diff != "" {
50
+ if diff := cmp .Diff (want , got ,
51
+ cmp .AllowUnexported (internal.UnitSymbol {}, internal.SymbolHistory {}),
52
+ cmpopts .IgnoreFields (internal.UnitSymbol {}, "builds" )); diff != "" {
63
53
t .Errorf ("mismatch (-want, +got):\n %s" , diff )
64
54
}
65
- for _ , nts := range got {
66
- for _ , g := range nts {
67
- if ! g .InAll () {
68
- t .Errorf ("got build contexts = %v; want all" , g .BuildContexts ())
55
+ for _ , v := range got .Versions () {
56
+ nts := got .SymbolsAtVersion (v )
57
+ for _ , stu := range nts {
58
+ for _ , g := range stu {
59
+ if ! g .InAll () {
60
+ t .Errorf ("got build contexts = %v; want all" , g .BuildContexts ())
61
+ }
69
62
}
70
63
}
71
64
}
72
65
}
73
66
74
67
func TestIntroducedHistory_MultiGOOS (t * testing.T ) {
75
- input := map [ string ] map [ string ] * internal.UnitSymbol {}
68
+ input := internal .NewSymbolHistory ()
76
69
for _ , s := range []struct {
77
70
name , version string
78
71
build internal.BuildContext
@@ -88,55 +81,36 @@ func TestIntroducedHistory_MultiGOOS(t *testing.T) {
88
81
{"Foo" , "v1.1.0" , internal .BuildContextJS },
89
82
{"Foo.A" , "v1.2.0" , internal .BuildContextJS },
90
83
} {
91
- if _ , ok := input [s .version ]; ! ok {
92
- input [s .version ] = map [string ]* internal.UnitSymbol {}
93
- }
94
- us , ok := input [s.version ][s.name ]
95
- if ! ok {
96
- us = & internal.UnitSymbol {
97
- SymbolMeta : internal.SymbolMeta {
98
- Name : s .name ,
99
- },
100
- }
101
- input [s.version ][s.name ] = us
102
- }
103
- us .AddBuildContext (s .build )
84
+ sm := internal.SymbolMeta {Name : s .name }
85
+ input .AddSymbol (sm , s .version , s .build )
104
86
}
105
87
106
- withBuilds := func (name string , builds ... internal.BuildContext ) * internal.UnitSymbol {
107
- us := & internal.UnitSymbol {
108
- SymbolMeta : internal.SymbolMeta {
109
- Name : name ,
110
- },
111
- }
88
+ want := internal .NewSymbolHistory ()
89
+ withSym := func (name , v string , builds []internal.BuildContext ) {
90
+ s := internal.SymbolMeta {Name : name }
112
91
for _ , b := range builds {
113
- us . AddBuildContext ( b )
92
+ want . AddSymbol ( s , v , b )
114
93
}
115
- return us
116
94
}
117
- want := map [string ]map [string ]* internal.UnitSymbol {
118
- "v1.0.0" : {
119
- "Bar" : withBuilds ("Bar" , internal .BuildContextAll ),
120
- "Foo" : withBuilds ("Foo" , internal .BuildContextLinux , internal .BuildContextWindows ),
121
- },
122
- "v1.1.0" : {
123
- "Foo" : withBuilds ("Foo" , internal .BuildContextJS ),
124
- "Foo.A" : withBuilds ("Foo.A" , internal .BuildContextLinux ),
125
- },
126
- "v1.2.0" : {
127
- "Foo.A" : withBuilds ("Foo.A" , internal .BuildContextJS ),
128
- },
95
+ for _ , s := range []struct {
96
+ n , v string
97
+ builds []internal.BuildContext
98
+ }{
99
+ {"Bar" , "v1.0.0" , []internal.BuildContext {internal .BuildContextAll }},
100
+ {"Foo" , "v1.0.0" , []internal.BuildContext {internal .BuildContextLinux , internal .BuildContextWindows }},
101
+ {"Foo" , "v1.1.0" , []internal.BuildContext {internal .BuildContextJS }},
102
+ {"Foo.A" , "v1.1.0" , []internal.BuildContext {internal .BuildContextLinux }},
103
+ {"Foo.A" , "v1.2.0" , []internal.BuildContext {internal .BuildContextJS }},
104
+ } {
105
+ withSym (s .n , s .v , s .builds )
106
+ }
107
+
108
+ got , err := IntroducedHistory (input )
109
+ if err != nil {
110
+ t .Fatal (err )
129
111
}
130
- got := LegacyIntroducedHistory ( input )
131
- if diff := cmp .Diff ( want , got , cmpopts . IgnoreFields ( internal.UnitSymbol {}, "builds" )); diff != "" {
112
+ if diff := cmp . Diff ( want , got ,
113
+ cmp .AllowUnexported ( internal.UnitSymbol {}, internal. SymbolHistory {} )); diff != "" {
132
114
t .Errorf ("mismatch (-want, +got):\n %s" , diff )
133
115
}
134
- for v , nts := range got {
135
- for n , g := range nts {
136
- w := want [v ][n ]
137
- if diff := cmp .Diff (w .BuildContexts (), g .BuildContexts ()); diff != "" {
138
- t .Errorf ("(%s %s): got build contexts = %v; want %v" , n , v , g .BuildContexts (), w .BuildContexts ())
139
- }
140
- }
141
- }
142
116
}
0 commit comments