@@ -17,45 +17,163 @@ limitations under the License.
17
17
package buffer
18
18
19
19
import (
20
- "reflect"
21
20
"testing"
22
21
)
23
22
24
- func TestGrowth (t * testing.T ) {
23
+ func TestGrowthGrowing (t * testing.T ) {
25
24
t .Parallel ()
26
- x := 10
27
- g := NewRingGrowing (1 )
28
- for i := 0 ; i < x ; i ++ {
29
- if e , a := i , g .readable ; ! reflect .DeepEqual (e , a ) {
30
- t .Fatalf ("expected equal, got %#v, %#v" , e , a )
31
- }
32
- g .WriteOne (i )
33
- }
34
- read := 0
35
- for g .readable > 0 {
36
- v , ok := g .ReadOne ()
37
- if ! ok {
38
- t .Fatal ("expected true" )
39
- }
40
- if read != v {
41
- t .Fatalf ("expected %#v==%#v" , read , v )
42
- }
43
- read ++
25
+ tests := map [string ]struct {
26
+ ring * TypedRingGrowing [int ]
27
+ initialSize int
28
+ }{
29
+ "implicit-zero" : {
30
+ ring : new (TypedRingGrowing [int ]),
31
+ },
32
+ "explicit-zero" : {
33
+ ring : NewTypedRingGrowing [int ](RingGrowingOptions {InitialSize : 0 }),
34
+ initialSize : 0 ,
35
+ },
36
+ "nonzero" : {
37
+ ring : NewTypedRingGrowing [int ](RingGrowingOptions {InitialSize : 1 }),
38
+ initialSize : 1 ,
39
+ },
44
40
}
45
- if x != read {
46
- t .Fatalf ("expected to have read %d items: %d" , x , read )
41
+
42
+ for name , test := range tests {
43
+ t .Run (name , func (t * testing.T ) {
44
+ initialSize := test .initialSize
45
+ g := test .ring
46
+
47
+ if expected , actual := 0 , g .Len (); expected != actual {
48
+ t .Fatalf ("expected Len to be %d, got %d" , expected , actual )
49
+ }
50
+ if expected , actual := initialSize , g .Cap (); expected != actual {
51
+ t .Fatalf ("expected Cap to be %d, got %d" , expected , actual )
52
+ }
53
+
54
+ x := 10
55
+ for i := 0 ; i < x ; i ++ {
56
+ if e , a := i , g .readable ; e != a {
57
+ t .Fatalf ("expected equal, got %#v, %#v" , e , a )
58
+ }
59
+ g .WriteOne (i )
60
+ }
61
+
62
+ if expected , actual := x , g .Len (); expected != actual {
63
+ t .Fatalf ("expected Len to be %d, got %d" , expected , actual )
64
+ }
65
+ if expected , actual := 16 , g .Cap (); expected != actual {
66
+ t .Fatalf ("expected Cap to be %d, got %d" , expected , actual )
67
+ }
68
+
69
+ read := 0
70
+ for g .readable > 0 {
71
+ v , ok := g .ReadOne ()
72
+ if ! ok {
73
+ t .Fatal ("expected true" )
74
+ }
75
+ if read != v {
76
+ t .Fatalf ("expected %#v==%#v" , read , v )
77
+ }
78
+ read ++
79
+ }
80
+ if x != read {
81
+ t .Fatalf ("expected to have read %d items: %d" , x , read )
82
+ }
83
+ if expected , actual := 0 , g .Len (); expected != actual {
84
+ t .Fatalf ("expected Len to be %d, got %d" , expected , actual )
85
+ }
86
+ if expected , actual := 16 , g .Cap (); expected != actual {
87
+ t .Fatalf ("expected Cap to be %d, got %d" , expected , actual )
88
+ }
89
+ })
47
90
}
48
- if g .readable != 0 {
49
- t .Fatalf ("expected readable to be zero: %d" , g .readable )
91
+
92
+ }
93
+
94
+ func TestGrowth (t * testing.T ) {
95
+ t .Parallel ()
96
+
97
+ tests := map [string ]struct {
98
+ ring * Ring [int ]
99
+ initialSize int
100
+ normalSize int
101
+ }{
102
+ "implicit-zero" : {
103
+ ring : new (Ring [int ]),
104
+ },
105
+ "explicit-zero" : {
106
+ ring : NewRing [int ](RingOptions {InitialSize : 0 , NormalSize : 0 }),
107
+ initialSize : 0 ,
108
+ normalSize : 0 ,
109
+ },
110
+ "smaller-initial-size" : {
111
+ ring : NewRing [int ](RingOptions {InitialSize : 1 , NormalSize : 2 }),
112
+ initialSize : 1 ,
113
+ normalSize : 2 ,
114
+ },
115
+ "smaller-normal-size" : {
116
+ ring : NewRing [int ](RingOptions {InitialSize : 2 , NormalSize : 1 }),
117
+ initialSize : 2 ,
118
+ normalSize : 1 ,
119
+ },
50
120
}
51
- if 16 != g .n {
52
- t .Fatalf ("expected N to be 16: %d" , g .n )
121
+
122
+ for name , test := range tests {
123
+ t .Run (name , func (t * testing.T ) {
124
+ initialSize := test .initialSize
125
+ normalSize := test .normalSize
126
+ g := test .ring
127
+
128
+ if expected , actual := 0 , g .Len (); expected != actual {
129
+ t .Fatalf ("expected Len to be %d, got %d" , expected , actual )
130
+ }
131
+ if expected , actual := initialSize , g .Cap (); expected != actual {
132
+ t .Fatalf ("expected Cap to be %d, got %d" , expected , actual )
133
+ }
134
+
135
+ x := 10
136
+ for i := 0 ; i < x ; i ++ {
137
+ if e , a := i , g .growing .readable ; e != a {
138
+ t .Fatalf ("expected equal, got %#v, %#v" , e , a )
139
+ }
140
+ g .WriteOne (i )
141
+ }
142
+
143
+ if expected , actual := x , g .Len (); expected != actual {
144
+ t .Fatalf ("expected Len to be %d, got %d" , expected , actual )
145
+ }
146
+ if expected , actual := 16 , g .Cap (); expected != actual {
147
+ t .Fatalf ("expected Cap to be %d, got %d" , expected , actual )
148
+ }
149
+
150
+ read := 0
151
+ for g .growing .readable > 0 {
152
+ v , ok := g .ReadOne ()
153
+ if ! ok {
154
+ t .Fatal ("expected true" )
155
+ }
156
+ if read != v {
157
+ t .Fatalf ("expected %#v==%#v" , read , v )
158
+ }
159
+ read ++
160
+ }
161
+ if x != read {
162
+ t .Fatalf ("expected to have read %d items: %d" , x , read )
163
+ }
164
+ if expected , actual := 0 , g .Len (); expected != actual {
165
+ t .Fatalf ("expected Len to be %d, got %d" , expected , actual )
166
+ }
167
+ if expected , actual := normalSize , g .Cap (); expected != actual {
168
+ t .Fatalf ("expected Cap to be %d, got %d" , expected , actual )
169
+ }
170
+ })
53
171
}
54
172
}
55
173
56
174
func TestEmpty (t * testing.T ) {
57
175
t .Parallel ()
58
- g := NewRingGrowing ( 1 )
176
+ g := NewTypedRingGrowing [ struct {}]( RingGrowingOptions { InitialSize : 1 } )
59
177
_ , ok := g .ReadOne ()
60
178
if ok != false {
61
179
t .Fatal ("expected false" )
0 commit comments