@@ -17,62 +17,111 @@ func getRemoveValuesCases(builder cmpMutableCollIntBuilder) []cmpMutableTestCase
1717 args : cmpMutableIntArgs {value : 1 },
1818 want1 : []int (nil ),
1919 want2 : map [int ]int {},
20+ want3 : 0 ,
2021 },
2122 {
2223 name : "RemoveValues() on one-item collection" ,
2324 coll : builder .One (),
2425 args : cmpMutableIntArgs {value : 111 },
2526 want1 : []int (nil ),
2627 want2 : map [int ]int {},
28+ want3 : 1 ,
2729 },
2830 {
2931 name : "RemoveValues() on three-item collection - first item" ,
3032 coll : builder .Three (),
3133 args : cmpMutableIntArgs {value : 111 },
3234 want1 : []int {222 , 333 },
3335 want2 : map [int ]int {222 : 1 , 333 : 1 },
36+ want3 : 1 ,
3437 },
3538 {
3639 name : "RemoveValues() on three-item collection - second item" ,
3740 coll : builder .Three (),
3841 args : cmpMutableIntArgs {value : 222 },
3942 want1 : []int {111 , 333 },
4043 want2 : map [int ]int {111 : 1 , 333 : 1 },
44+ want3 : 1 ,
4145 },
4246 {
4347 name : "RemoveValues() on three-item collection - third item" ,
4448 coll : builder .Three (),
4549 args : cmpMutableIntArgs {value : 333 },
4650 want1 : []int {111 , 222 },
4751 want2 : map [int ]int {111 : 1 , 222 : 1 },
52+ want3 : 1 ,
4853 },
4954 {
5055 name : "RemoveValues() on three-item collection, not found" ,
5156 coll : builder .Three (),
5257 args : cmpMutableIntArgs {value : 999 },
5358 want1 : []int {111 , 222 , 333 },
5459 want2 : map [int ]int {111 : 1 , 222 : 1 , 333 : 1 },
60+ want3 : 0 ,
5561 },
5662 {
5763 name : "RemoveValues() on six-item collection, 2 `111` found " ,
5864 coll : builder .SixWithDuplicates (),
5965 args : cmpMutableIntArgs {value : 111 },
6066 want1 : []int {222 , 333 , 222 , 333 },
6167 want2 : map [int ]int {222 : 2 , 333 : 2 },
68+ want3 : 2 ,
6269 },
6370 {
6471 name : "RemoveValues() on six-item collection, 2 `222` found " ,
6572 coll : builder .SixWithDuplicates (),
6673 args : cmpMutableIntArgs {value : 222 },
6774 want1 : []int {111 , 333 , 111 , 333 },
6875 want2 : map [int ]int {111 : 2 , 333 : 2 },
76+ want3 : 2 ,
6977 },
7078 {
7179 name : "RemoveValues() on six-item collection, 2 `333` found " ,
7280 coll : builder .SixWithDuplicates (),
7381 args : cmpMutableIntArgs {value : 333 },
7482 want1 : []int {111 , 222 , 111 , 222 },
7583 want2 : map [int ]int {111 : 2 , 222 : 2 },
84+ want3 : 2 ,
85+ },
86+ {
87+ name : "RemoveValues() on six-item collection, one found" ,
88+ coll : builder .SixWithDuplicates (),
89+ args : cmpMutableIntArgs {values : []int {111 }},
90+ want1 : []int {222 , 333 , 222 , 333 },
91+ want2 : map [int ]int {222 : 2 , 333 : 2 },
92+ want3 : 2 ,
93+ },
94+ {
95+ name : "RemoveValues() on six-item collection, two found" ,
96+ coll : builder .SixWithDuplicates (),
97+ args : cmpMutableIntArgs {values : []int {111 , 222 }},
98+ want1 : []int {333 , 333 },
99+ want2 : map [int ]int {333 : 2 },
100+ want3 : 4 ,
101+ },
102+ {
103+ name : "RemoveValues() on six-item collection, three found" ,
104+ coll : builder .SixWithDuplicates (),
105+ args : cmpMutableIntArgs {values : []int {111 , 222 , 333 }},
106+ want1 : []int (nil ),
107+ want2 : map [int ]int {},
108+ want3 : 6 ,
109+ },
110+ {
111+ name : "RemoveValues() on six-item collection, none found" ,
112+ coll : builder .SixWithDuplicates (),
113+ args : cmpMutableIntArgs {values : []int {999 , 888 , 777 }},
114+ want1 : []int {111 , 222 , 333 , 111 , 222 , 333 },
115+ want2 : map [int ]int {111 : 2 , 222 : 2 , 333 : 2 },
116+ want3 : 0 ,
117+ },
118+ {
119+ name : "RemoveValues() on six-item collection, empty values" ,
120+ coll : builder .SixWithDuplicates (),
121+ args : cmpMutableIntArgs {values : []int {}},
122+ want1 : []int {111 , 222 , 333 , 111 , 222 , 333 },
123+ want2 : map [int ]int {111 : 2 , 222 : 2 , 333 : 2 },
124+ want3 : 0 ,
76125 },
77126 }
78127}
@@ -81,7 +130,12 @@ func testRemoveValues(t *testing.T, builder cmpMutableCollIntBuilder) {
81130 cases := getRemoveValuesCases (builder )
82131 for _ , tt := range cases {
83132 t .Run (tt .name , func (t * testing.T ) {
84- tt .coll .RemoveValues (tt .args .value )
133+ var count int
134+ if tt .args .values != nil {
135+ count = tt .coll .RemoveValues (tt .args .values ... )
136+ } else {
137+ count = tt .coll .RemoveValues (tt .args .value )
138+ }
85139 actualSlice := builder .extractRawValues (tt .coll )
86140 actualVC := builder .extractUnderlyingValsCount (tt .coll )
87141 if ! reflect .DeepEqual (actualSlice , tt .want1 ) {
@@ -90,6 +144,9 @@ func testRemoveValues(t *testing.T, builder cmpMutableCollIntBuilder) {
90144 if ! reflect .DeepEqual (actualVC , tt .want2 ) {
91145 t .Errorf ("RemoveValues() did not remove correctly from values counter" )
92146 }
147+ if count != tt .want3 {
148+ t .Errorf ("RemoveValues() returned wrong count: %v, but wanted %v" , count , tt .want3 )
149+ }
93150 })
94151 }
95152}
0 commit comments