1#!/usr/bin/perl -w
2#
3# Make sure the VT102 module can handle line and character insertion and
4# deletion, and line/screen clearing.
5#
6# Copyright (C) Andrew Wood
7# NO WARRANTY - see COPYING.
8#
9
10require Term::VT102;
11require 't/testbase';
12
13my $fill = "0123456789\r\n" .
14           "1234567890\r\n" .
15           "2345678901\r\n" .
16           "3456789012\e[H";
17
18run_tests ([(
19  [ 10, 4, $fill . "",				# 1: nothing
20    "0123456789",
21    "1234567890",
22    "2345678901",
23    "3456789012",
24  ],
25  [ 10, 4, $fill . "\e[P",			# 2: DCH 1
26    "123456789\0",
27    "1234567890",
28    "2345678901",
29    "3456789012",
30  ],
31  [ 10, 4, $fill . "\e[2;8H\e[2P",		# 3: DCH 2
32    "0123456789",
33    "12345670\0\0",
34    "2345678901",
35    "3456789012",
36  ],
37  [ 10, 4, $fill . "\e[3;7H\e[9P",		# 4: DCH 9
38    "0123456789",
39    "1234567890",
40    "234567\0\0\0\0",
41    "3456789012",
42  ],
43  [ 10, 4, $fill . "\e[X",			# 5: ECH 1
44    "\0" . "123456789",
45    "1234567890",
46    "2345678901",
47    "3456789012",
48  ],
49  [ 10, 4, $fill . "\e[2;8H\e[2X",		# 6: ECH 2
50    "0123456789",
51    "1234567\0\0" . "0",
52    "2345678901",
53    "3456789012",
54  ],
55  [ 10, 4, $fill . "\e[3;7H\e[9X",		# 7: ECH 9
56    "0123456789",
57    "1234567890",
58    "234567\0\0\0\0",
59    "3456789012",
60  ],
61  [ 10, 4, $fill . "\e[@",			# 8: ICH 1
62    "\0" . "012345678",
63    "1234567890",
64    "2345678901",
65    "3456789012",
66  ],
67  [ 10, 4, $fill . "\e[2;8H\e[2@",		# 9: ICH 2
68    "0123456789",
69    "1234567\0\0" . "8",
70    "2345678901",
71    "3456789012",
72  ],
73  [ 10, 4, $fill . "\e[3;7H\e[9@",		# 10: ICH 9
74    "0123456789",
75    "1234567890",
76    "234567\0\0\0\0",
77    "3456789012",
78  ],
79  [ 10, 4, $fill . "\e[2;4H\e[J",		# 11: ED 0
80    "0123456789",
81    "123" . ("\0" x 7),
82    ("\0" x 10),
83    ("\0" x 10),
84  ],
85  [ 10, 4, $fill . "\e[2;4H\e[1J",		# 12: ED 1
86    ("\0" x 10),
87    ("\0" x 4) . "567890",
88    "2345678901",
89    "3456789012",
90  ],
91  [ 10, 4, $fill . "\e[2;4H\e[2J",		# 13: ED 2
92    ("\0" x 10),
93    ("\0" x 10),
94    ("\0" x 10),
95    ("\0" x 10),
96  ],
97  [ 10, 4, $fill . "\e[2;4H\e[K",		# 14: EL 0
98    "0123456789",
99    "123" . ("\0" x 7),
100    "2345678901",
101    "3456789012",
102  ],
103  [ 10, 4, $fill . "\e[2;4H\e[1K",		# 15: EL 1
104    "0123456789",
105    ("\0" x 4) . "567890",
106    "2345678901",
107    "3456789012",
108  ],
109  [ 10, 4, $fill . "\e[2;4H\e[2K",		# 16: EL 2
110    "0123456789",
111    ("\0" x 10),
112    "2345678901",
113    "3456789012",
114  ],
115  [ 10, 4, $fill . "\e[2;4H\e[LAbC",		# 17: IL 1
116    "0123456789",
117    ("\0" x 3) . "AbC" . ("\0" x 4),
118    "1234567890",
119    "2345678901",
120  ],
121  [ 10, 4, $fill . "\e[2;4H\e[2LAbC",		# 18: IL 2
122    "0123456789",
123    ("\0" x 3) . "AbC" . ("\0" x 4),
124    ("\0" x 10),
125    "1234567890",
126  ],
127  [ 10, 4, $fill . "\e[2;4H\e[9LAbC",		# 19: IL 3
128    "0123456789",
129    ("\0" x 3) . "AbC" . ("\0" x 4),
130    ("\0" x 10),
131    ("\0" x 10),
132  ],
133  [ 10, 4, $fill . "\e[1;1H\e[2LAbC",		# 20: IL 4
134    "AbC" . ("\0" x 7),
135    ("\0" x 10),
136    "0123456789",
137    "1234567890",
138  ],
139  [ 10, 4, $fill . "\e[2;4H\e[MAbC",		# 21: DL 1
140    "0123456789",
141    "234AbC8901",
142    "3456789012",
143    ("\0" x 10),
144  ],
145  [ 10, 4, $fill . "\e[2;4H\e[2MAbC",		# 22: DL 2
146    "0123456789",
147    "345AbC9012",
148    ("\0" x 10),
149    ("\0" x 10),
150  ],
151  [ 10, 4, $fill . "\e[2;4H\e[9MAbC",		# 23: DL 3
152    "0123456789",
153    ("\0" x 3) . "AbC" . ("\0" x 4),
154    ("\0" x 10),
155    ("\0" x 10),
156  ],
157  [ 10, 4, $fill . "\e[1;1H\e[2MAbC",		# 24: DL 4
158    "AbC5678901",
159    "3456789012",
160    ("\0" x 10),
161    ("\0" x 10),
162  ],
163  [ 10, 4, $fill . "\e[2;3r\e[2;4H\e[LAbC",	# 25: DECSTBM IL 1
164    "0123456789",
165    ("\0" x 3) . "AbC" . ("\0" x 4),
166    "1234567890",
167    "3456789012",
168  ],
169  [ 10, 4, $fill . "\e[2;3r\e[2;4H\e[2LAbC",	# 26: DECSTBM IL 2
170    "0123456789",
171    ("\0" x 3) . "AbC" . ("\0" x 4),
172    ("\0" x 10),
173    "3456789012",
174  ],
175  [ 10, 4, $fill . "\e[2;3r\e[2;4H\e[9LAbC",	# 27: DECSTBM IL 3
176    "0123456789",
177    ("\0" x 3) . "AbC" . ("\0" x 4),
178    ("\0" x 10),
179    "3456789012",
180  ],
181  [ 10, 4, $fill . "\e[2;3r\e[1;1H\e[2LAbC",	# 28: DECSTBM IL 4
182    "AbC" . ("\0" x 7),
183    "1234567890",
184    "2345678901",
185    "3456789012",
186  ],
187  [ 10, 4, $fill . "\e[2;3r\e[2;4H\e[MAbC",	# 29: DECSTBM DL 1
188    "0123456789",
189    "234AbC8901",
190    ("\0" x 10),
191    "3456789012",
192  ],
193  [ 10, 4, $fill . "\e[2;3r\e[2;4H\e[2MAbC",	# 30: DECSTBM DL 2
194    "0123456789",
195    ("\0" x 3) . "AbC" . ("\0" x 4),
196    ("\0" x 10),
197    "3456789012",
198  ],
199  [ 10, 4, $fill . "\e[2;3r\e[2;4H\e[9MAbC",	# 31: DECSTBM DL 3
200    "0123456789",
201    ("\0" x 3) . "AbC" . ("\0" x 4),
202    ("\0" x 10),
203    "3456789012",
204  ],
205  [ 10, 4, $fill . "\e[2;3r\e[1;1H\e[2MAbC",	# 32: DECSTBM DL 4
206    "AbC" . ("\0" x 7),
207    "1234567890",
208    "2345678901",
209    "3456789012",
210  ],
211)]);
212
213# EOF
214