Skip to content

Commit 93cd6ea

Browse files
committed
test: implement Surface.SetMany unit tests
1 parent e9a826c commit 93cd6ea

File tree

3 files changed

+67
-14
lines changed

3 files changed

+67
-14
lines changed

pitest/pitest.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func AssertSurfaceEqual[T comparable](t *testing.T, expected, actual pi.Surface[
3737
if !hasDifferentData {
3838
t.Errorf("\nexpected:\n%s\nactual:\n%s", expected, actual)
3939
}
40-
t.Errorf("expected pixel at (%d,%d): %v, actual: %v", x, y, e, a)
40+
t.Errorf("expected at (%d,%d): %v, actual: %v", x, y, e, a)
4141
hasDifferentData = true
4242
equal = false
4343
}

surface.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ func (m Surface[T]) EntireArea() IntArea {
243243
}
244244

245245
func (m Surface[T]) Clear(v T) {
246-
// color only first line
246+
// color only the first line
247247
var firstLine = m.data[:m.width]
248248
for i := 0; i < m.width; i++ {
249249
firstLine[i] = v

surface_test.go

Lines changed: 65 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -227,18 +227,71 @@ func BenchmarkSurface_LinesIterator(b *testing.B) {
227227
}
228228

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

244297
func TestSurface_Clear(t *testing.T) {

0 commit comments

Comments
 (0)