@@ -159,15 +159,51 @@ func BenchmarkSurface_SetArea(b *testing.B) {
159159}
160160
161161func TestSurface_SetSurface (t * testing.T ) {
162- // temporary test
163- surface := pi .NewSurface [int ](4 , 4 )
164- src := pi .NewSurface [int ](2 , 2 )
165-
166- surface .SetSurface (- 1 , 0 , src )
167- surface .SetSurface (0 , - 1 , src )
168- surface .SetSurface (3 , 3 , src )
169- surface .SetSurface (2 , 2 , src )
170- surface .SetSurface (4 , 4 , src )
162+ src := pi .NewSurface [rune ](2 , 2 )
163+ src .SetAll (
164+ 'a' , 'b' ,
165+ 'c' , 'd' ,
166+ )
167+
168+ t .Run ("inside destination" , func (t * testing.T ) {
169+ dst := pi .NewSurface [rune ](4 , 4 )
170+ // when
171+ dst .SetSurface (1 , 1 , src )
172+ // then
173+ expected := pi .NewSurface [rune ](4 , 4 )
174+ expected .SetMany (1 , 1 , 'a' , 'b' )
175+ expected .SetMany (1 , 2 , 'c' , 'd' )
176+ pitest .AssertSurfaceEqual (t , expected , dst )
177+ })
178+
179+ t .Run ("partially outside top-left" , func (t * testing.T ) {
180+ dst := pi .NewSurface [rune ](4 , 4 )
181+ // when
182+ dst .SetSurface (- 1 , - 1 , src )
183+ // then
184+ expected := pi .NewSurface [rune ](4 , 4 )
185+ expected .Set (0 , 0 , 'd' )
186+ pitest .AssertSurfaceEqual (t , expected , dst )
187+ })
188+
189+ t .Run ("partially outside bottom-right" , func (t * testing.T ) {
190+ dst := pi .NewSurface [rune ](4 , 4 )
191+ // when
192+ dst .SetSurface (3 , 3 , src )
193+ // then
194+ expected := pi .NewSurface [rune ](4 , 4 )
195+ expected .Set (3 , 3 , 'a' )
196+ pitest .AssertSurfaceEqual (t , expected , dst )
197+ })
198+
199+ t .Run ("completely outside" , func (t * testing.T ) {
200+ dst := pi .NewSurface [rune ](4 , 4 )
201+ // when
202+ dst .SetSurface (4 , 4 , src )
203+ // then
204+ expected := pi .NewSurface [rune ](4 , 4 )
205+ pitest .AssertSurfaceEqual (t , expected , dst )
206+ })
171207}
172208
173209func TestSurface_LinesIterator (t * testing.T ) {
0 commit comments