1package vt
2
3import (
4 "testing"
5
6 "github.com/stretchr/testify/require"
7)
8
9func TestResizeSeversSoftWrapsAtRegionalScrollEdges(t *testing.T) {
10 tests := []struct {
11 name string
12 seq string
13 want []string
14 }{
15 {
16 name: "CSI S",
17 seq: "\x1b[2;4r\x1b[S",
18 want: []string{"ABC", "IJK", "LMN", "OP ", " ", "QRS"},
19 },
20 {
21 name: "CSI T",
22 seq: "\x1b[2;4r\x1b[T",
23 want: []string{"ABC", " ", "EFG", "HIJ", "KL ", "QRS"},
24 },
25 {
26 name: "insert lines",
27 seq: "\x1b[2;4r\x1b[2;1H\x1b[L",
28 want: []string{"ABC", " ", "EFG", "HIJ", "KL ", "QRS"},
29 },
30 {
31 name: "delete lines",
32 seq: "\x1b[2;4r\x1b[2;1H\x1b[M",
33 want: []string{"ABC", "IJK", "LMN", "OP ", " ", "QRS"},
34 },
35 }
36
37 for _, tt := range tests {
38 t.Run(tt.name, func(t *testing.T) {
39 s := NewScreen(4, 5)
40 s.Write([]byte("ABCDEFGHIJKLMNOPQRST"))
41 s.Write([]byte(tt.seq))
42
43 s.Resize(3, 6)
44
45 got := make([]string, s.frame.Height)
46 for y := range s.frame.Height {
47 got[y] = rowString(s.frame.Row(y))
48 }
49 require.Equal(t, tt.want, got)
50 })
51 }
52}