@@ -227,18 +227,71 @@ func BenchmarkSurface_LinesIterator(b *testing.B) {
227227}
228228
229229func TestSurface_SetMany (t * testing.T ) {
230- // temporary test
231- canvas := pi .NewCanvas (4 , 4 )
232- canvas .SetMany (1 , 1 ,
233- 2 , 3 , 4 , 5 )
234- canvas .SetMany (- 1 , 0 ,
235- 2 , 3 , 4 , 5 )
236- canvas .SetMany (0 , - 1 ,
237- 2 , 3 , 4 , 5 )
238- canvas .SetMany (3 , 3 ,
239- 2 , 3 , 4 , 5 )
240- canvas .SetMany (4 , 4 ,
241- 2 , 3 , 4 , 5 )
230+ t .Run ("inside surface" , func (t * testing.T ) {
231+ surface := pi .NewSurface [rune ](3 , 2 )
232+ // when
233+ surface .SetMany (1 , 0 , 'a' , 'b' , 'c' , 'd' )
234+ // then
235+ expected := pi .NewSurface [rune ](3 , 2 )
236+ expected .Set (1 , 0 , 'a' )
237+ expected .Set (2 , 0 , 'b' )
238+ expected .Set (0 , 1 , 'c' )
239+ expected .Set (1 , 1 , 'd' )
240+
241+ pitest .AssertSurfaceEqual (t , expected , surface )
242+ })
243+
244+ t .Run ("partially outside left" , func (t * testing.T ) {
245+ surface := pi .NewSurface [rune ](3 , 2 )
246+ // when
247+ surface .SetMany (- 1 , 0 , 'a' , 'b' , 'c' )
248+ // then
249+ expected := pi .NewSurface [rune ](3 , 2 )
250+ expected .Set (0 , 0 , 'b' )
251+ expected .Set (1 , 0 , 'c' )
252+
253+ pitest .AssertSurfaceEqual (t , expected , surface )
254+ })
255+
256+ t .Run ("partially outside top" , func (t * testing.T ) {
257+ surface := pi .NewSurface [rune ](2 , 2 )
258+ // when
259+ surface .SetMany (0 , - 1 , 'a' , 'b' , 'c' )
260+ // then
261+ expected := pi .NewSurface [rune ](2 , 2 )
262+ expected .Set (0 , 0 , 'c' )
263+
264+ pitest .AssertSurfaceEqual (t , expected , surface )
265+ })
266+
267+ t .Run ("start far left with too few values" , func (t * testing.T ) {
268+ surface := pi .NewSurface [rune ](2 , 2 )
269+ original := surface .Clone ()
270+ // when
271+ surface .SetMany (- 3 , 0 , 'a' )
272+ // then
273+ pitest .AssertSurfaceEqual (t , original , surface )
274+ })
275+
276+ t .Run ("outside bottom-right" , func (t * testing.T ) {
277+ surface := pi .NewSurface [rune ](2 , 2 )
278+ original := surface .Clone ()
279+ // when
280+ surface .SetMany (2 , 2 , 'a' , 'b' )
281+ // then
282+ pitest .AssertSurfaceEqual (t , original , surface )
283+ })
284+
285+ t .Run ("truncate at surface end" , func (t * testing.T ) {
286+ surface := pi .NewSurface [rune ](2 , 2 )
287+ // when
288+ surface .SetMany (1 , 1 , 'a' , 'b' )
289+ // then
290+ expected := pi .NewSurface [rune ](2 , 2 )
291+ expected .Set (1 , 1 , 'a' )
292+
293+ pitest .AssertSurfaceEqual (t , expected , surface )
294+ })
242295}
243296
244297func TestSurface_Clear (t * testing.T ) {
0 commit comments