resize_reflow_regression_test.go RawHistoryFolder
1package vt
2
3import "testing"
4
5func TestCollapsedResizeUpdatesSavedPrimaryAndClearsEscape(t *testing.T) {
6 s := NewScreen(5, 3)
7 s.Write([]byte("shell"))
8 s.Write([]byte("\x1b[?1049h"))
9 s.Write([]byte("\x1b["))
10
11 s.Resize(0, 0)
12
13 if len(s.escapeBuf) != 0 {
14 t.Fatalf("partial escape survives collapsed resize: %q", s.escapeBuf)
15 }
16 if s.frame.Width != 0 || s.frame.Height != 0 {
17 t.Fatalf("active frame = %dx%d, want 0x0", s.frame.Width, s.frame.Height)
18 }
19 s.Write([]byte("\x1b[?1049l"))
20 if s.frame.Width != 0 || s.frame.Height != 0 {
21 t.Fatalf("saved primary frame = %dx%d, want 0x0", s.frame.Width, s.frame.Height)
22 }
23}
24
25func TestResizeReflowDropsAbandonedWideEdgePadding(t *testing.T) {
26 s := NewScreen(4, 3)
27 s.Write([]byte("ab界"))
28 s.Write([]byte("\x1b[1;4H界x"))
29
30 s.Resize(6, 3)
31
32 assertCell(t, s, 0, 0, 'a')
33 assertCell(t, s, 1, 0, 'b')
34 assertCell(t, s, 2, 0, '界')
35 if !cellAt(s, 3, 0).Continuation {
36 t.Fatal("reflowed wide rune lost continuation")
37 }
38 assertCell(t, s, 4, 0, 'x')
39}
40
41func TestInsertModeRetainsShiftedTailInReflowExtent(t *testing.T) {
42 s := NewScreen(6, 2)
43 s.Write([]byte("abcd"))
44 s.Write([]byte("\x1b[1;2H\x1b[4hX"))
45 // Simulate the subsequent logical continuation that causes the row to be
46 // reflowed. Its meaningful extent must include the shifted tail.
47 s.buffer.continueRow(0)
48
49 s.Resize(5, 2)
50
51 for x, r := range []rune("aXbcd") {
52 assertCell(t, s, x, 0, r)
53 }
54}