1package copy
2
3import (
4 "fmt"
5 "testing"
6
7 renderer "github.com/bnema/vev-vt/ansi"
8 "github.com/stretchr/testify/require"
9)
10
11func TestRenderRowsRangeMatchesFullRender(t *testing.T) {
12 rows := [][]renderer.Cell{
13 {{Rune: 'a'}, {Rune: 'b'}, {Rune: 'c'}},
14 {{Rune: 'd'}, {Rune: 'e'}},
15 {{Rune: 'f'}},
16 }
17 mode := NewMode(NewDocument(NewSnapshotFromRows(rows, 3, 5), ""))
18 mode.Search("a")
19 mode.StartCharacterSelection(Pos{})
20 mode.ExtendCharacterSelection(Pos{Row: 1, Col: 1})
21 full := mode.Render()
22 for _, bounds := range [][2]int{{0, 5}, {1, 2}, {-3, 99}, {4, 2}, {9, 10}} {
23 t.Run(fmt.Sprint(bounds), func(t *testing.T) {
24 var painted []int
25 mode.RenderRowsRange(bounds[0], bounds[1], func(y int, row []renderer.Cell) {
26 painted = append(painted, y)
27 require.Equal(t, full.Row(y), row)
28 })
29 var want []int
30 for y := max(bounds[0], 0); y < min(bounds[1], 5); y++ {
31 want = append(want, y)
32 }
33 want = append(want, 5)
34 require.Equal(t, want, painted)
35 })
36 }
37}