Skip to content

Commit e9a826c

Browse files
committed
test: implement Surface.SetSurface unit tests
1 parent 6e6c096 commit e9a826c

File tree

1 file changed

+45
-9
lines changed

1 file changed

+45
-9
lines changed

surface_test.go

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -159,15 +159,51 @@ func BenchmarkSurface_SetArea(b *testing.B) {
159159
}
160160

161161
func 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

173209
func TestSurface_LinesIterator(t *testing.T) {

0 commit comments

Comments
 (0)