summaryrefslogtreecommitdiffstats
path: root/src/libvterm/t/12state_scroll.test
blob: c1f2791d00b034a0db7073a3b17839c29b761bd6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
INIT
UTF8 1
WANTSTATE s

!Linefeed
PUSH "\n"x24
  ?cursor = 24,0
PUSH "\n"
  scrollrect 0..25,0..80 => +1,+0
  ?cursor = 24,0

RESET

!Index
PUSH "\e[25H"
PUSH "\eD"
  scrollrect 0..25,0..80 => +1,+0

RESET

!Reverse Index
PUSH "\eM"
  scrollrect 0..25,0..80 => -1,+0

RESET

!Linefeed in DECSTBM
PUSH "\e[1;10r"
  ?cursor = 0,0
PUSH "\n"x9
  ?cursor = 9,0
PUSH "\n"
  scrollrect 0..10,0..80 => +1,+0
  ?cursor = 9,0

!Linefeed outside DECSTBM
PUSH "\e[20H"
  ?cursor = 19,0
PUSH "\n"
  ?cursor = 20,0

!Index in DECSTBM
PUSH "\e[9;10r"
PUSH "\e[10H"
PUSH "\eM"
  ?cursor = 8,0
PUSH "\eM"
  scrollrect 8..10,0..80 => -1,+0

!Reverse Index in DECSTBM
PUSH "\e[25H"
  ?cursor = 24,0
PUSH "\n"
  # no scrollrect
  ?cursor = 24,0

!Linefeed in DECSTBM+DECSLRM
PUSH "\e[?69h"
PUSH "\e[3;10r\e[10;40s"
PUSH "\e[10;10H\n"
  scrollrect 2..10,9..40 => +1,+0

!IND/RI in DECSTBM+DECSLRM
PUSH "\eD"
  scrollrect 2..10,9..40 => +1,+0
PUSH "\e[3;10H\eM"
  scrollrect 2..10,9..40 => -1,+0

!DECRQSS on DECSTBM
PUSH "\eP\$qr\e\\"
  output "\eP1\$r3;10r\e\\"

!DECRQSS on DECSLRM
PUSH "\eP\$qs\e\\"
  output "\eP1\$r10;40s\e\\"

!Setting invalid DECSLRM with !DECVSSM is still rejected
PUSH "\e[?69l\e[;0s\e[?69h"

RESET

!Scroll Down
PUSH "\e[S"
  scrollrect 0..25,0..80 => +1,+0
  ?cursor = 0,0
PUSH "\e[2S"
  scrollrect 0..25,0..80 => +2,+0
  ?cursor = 0,0
PUSH "\e[100S"
  scrollrect 0..25,0..80 => +25,+0

!Scroll Up
PUSH "\e[T"
  scrollrect 0..25,0..80 => -1,+0
  ?cursor = 0,0
PUSH "\e[2T"
  scrollrect 0..25,0..80 => -2,+0
  ?cursor = 0,0
PUSH "\e[100T"
  scrollrect 0..25,0..80 => -25,+0

!SD/SU in DECSTBM
PUSH "\e[5;20r"
PUSH "\e[S"
  scrollrect 4..20,0..80 => +1,+0
PUSH "\e[T"
  scrollrect 4..20,0..80 => -1,+0

RESET

!SD/SU in DECSTBM+DECSLRM
PUSH "\e[?69h"
PUSH "\e[3;10r\e[10;40s"
  ?cursor = 0,0
PUSH "\e[3;10H"
  ?cursor = 2,9
PUSH "\e[S"
  scrollrect 2..10,9..40 => +1,+0
PUSH "\e[?69l"
PUSH "\e[S"
  scrollrect 2..10,0..80 => +1,+0

!Invalid boundaries
RESET

PUSH "\e[100;105r\eD"
PUSH "\e[5;2r\eD"

RESET
WANTSTATE -s+me

!Scroll Down move+erase emulation
PUSH "\e[S"
  moverect 1..25,0..80 -> 0..24,0..80
  erase 24..25,0..80
  ?cursor = 0,0
PUSH "\e[2S"
  moverect 2..25,0..80 -> 0..23,0..80
  erase 23..25,0..80
  ?cursor = 0,0

!Scroll Up move+erase emulation
PUSH "\e[T"
  moverect 0..24,0..80 -> 1..25,0..80
  erase 0..1,0..80
  ?cursor = 0,0
PUSH "\e[2T"
  moverect 0..23,0..80 -> 2..25,0..80
  erase 0..2,0..80
  ?cursor = 0,0

!DECSTBM resets cursor position
PUSH "\e[5;5H"
  ?cursor = 4,4
PUSH "\e[r"
  ?cursor = 0,0