@@ -109,18 +109,23 @@ func TestSlice_Range_Mutators(t *testing.T) {
109109 }
110110 }
111111 tests := [... ]struct {
112- name string
113- fn func (* testType ) func (key , value int ) bool
114- expectedPanic error
115- expected []int
112+ name string
113+ useRangeMutable bool
114+ fn func (* testType ) func (key , value int ) bool
115+ expectedPanic error
116+ expected []int
116117 }{
117- {"nop/plain range" , fnNop , nil , []int {0 , 0 , 0 , 1 , 1 , 2 , 2 , 3 , 3 }},
118+ {"nop/plain range" , false , fnNop , nil , []int {0 , 0 , 0 , 1 , 1 , 2 , 2 , 3 , 3 }},
119+ {"nop/mutable" , true , fnNop , nil , []int {0 , 0 , 0 , 1 , 1 , 2 , 2 , 3 , 3 }},
118120 // Mutating a value moves it to the end of the map.
119- {"mutateOne/plain range" , fnMutateOne , nil , []int {0 , 0 , 0 , 2 , 2 , 3 , 3 , 1 , 10 }},
121+ {"mutateOne/plain range" , false , fnMutateOne , nil , []int {0 , 0 , 0 , 2 , 2 , 3 , 3 , 1 , 10 }},
122+ {"mutateOne/mutable" , false , fnMutateOne , nil , []int {0 , 0 , 0 , 2 , 2 , 3 , 3 , 1 , 10 }},
120123 // Store a value moves it to the end of the map.
121- {"insertOne/plain range" , fnInsertOne , nil , []int {0 , 0 , 0 , 1 , 1 , 2 , 2 , 3 , 3 , 10 , 10 }},
124+ {"insertOne/plain range" , false , fnInsertOne , nil , []int {0 , 0 , 0 , 1 , 1 , 2 , 2 , 3 , 3 , 10 , 10 }},
125+ {"insertOne/mutable" , false , fnInsertOne , nil , []int {0 , 0 , 0 , 1 , 1 , 2 , 2 , 3 , 3 , 10 , 10 }},
122126 // This is why we need to some form of mutation support: observe the unexpected results.
123- {"deleteOdd/plain range" , fnDeleteOdd , errors .New ("" ), []int {0 , 0 , 0 , 2 , 2 }},
127+ {"deleteOdd/plain range" , false , fnDeleteOdd , errors .New ("" ), []int {0 , 0 , 0 , 2 , 2 }},
128+ {"deleteOdd/mutable" , true , fnDeleteOdd , nil , []int {0 , 0 , 0 , 2 , 2 }},
124129 }
125130 for _ , test := range tests {
126131 t .Run (test .name , func (t * testing.T ) {
@@ -133,7 +138,11 @@ func TestSlice_Range_Mutators(t *testing.T) {
133138 actualPanic = err .(error )
134139 }
135140 }()
136- input .Range (test .fn (& input ))
141+ if test .useRangeMutable {
142+ input .RangeMutable (test .fn (& input ))
143+ } else {
144+ input .Range (test .fn (& input ))
145+ }
137146 }()
138147 actual := transform (input )
139148 t1 , t2 := reflect .TypeOf (actualPanic ), reflect .TypeOf (test .expectedPanic )
0 commit comments