term-vt102 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.travis.yml +3 -0
- data/CREDITS.md +25 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +27 -0
- data/README.md +50 -0
- data/Rakefile +9 -0
- data/examples/tmux_ghost.rb +72 -0
- data/lib/term/vt102.rb +1389 -0
- data/lib/term/vt102/version.rb +5 -0
- data/term-vt102.gemspec +23 -0
- data/test/test_01_load.rb +15 -0
- data/test/test_02_setsize.rb +18 -0
- data/test/test_03_text.rb +34 -0
- data/test/test_04_cursor.rb +73 -0
- data/test/test_05_scrolling.rb +187 -0
- data/test/test_06_insdel.rb +309 -0
- data/test/test_07_colour.rb +48 -0
- data/test/test_08_options.rb +27 -0
- data/test/test_09_callback.rb +57 -0
- data/test/test_10_decaln.rb +34 -0
- data/test/test_11_decscrc.rb +34 -0
- data/test/test_12_cupsvrs.rb +34 -0
- data/test/test_13_xonxoff.rb +47 -0
- data/test/test_14_tabstop.rb +32 -0
- data/test/test_helper.rb +92 -0
- metadata +127 -0
data/term-vt102.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'term/vt102/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "term-vt102"
|
8
|
+
spec.version = Term::VT102::VERSION
|
9
|
+
spec.authors = ["Mike Owens"]
|
10
|
+
spec.email = ["mike@filespanker.com"]
|
11
|
+
spec.summary = %q{VT102 terminal implementation}
|
12
|
+
spec.homepage = "https://github.com/mieko/term-vt102"
|
13
|
+
spec.license = "MIT"
|
14
|
+
|
15
|
+
spec.files = `git ls-files`.split($/)
|
16
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
+
spec.require_paths = ["lib"]
|
19
|
+
|
20
|
+
spec.add_development_dependency "bundler", "~> 1.5"
|
21
|
+
spec.add_development_dependency "rake"
|
22
|
+
spec.add_development_dependency "minitest", "~> 5.2"
|
23
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Make sure the VT102 module loads OK and can return its version number.
|
2
|
+
#
|
3
|
+
# Copyright (C) Mike Owens
|
4
|
+
# Copyright (C) Andrew Wood
|
5
|
+
# NO WARRANTY - see LICENSE.txt
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'test_helper'
|
9
|
+
require 'term/vt102'
|
10
|
+
|
11
|
+
class TestLoad < TestBase
|
12
|
+
def test_that_it_has_a_version_number
|
13
|
+
refute_nil ::Term::VT102::VERSION
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# Make sure the VT102 module can set its size OK.
|
2
|
+
#
|
3
|
+
# Copyright (C) Mike Owens
|
4
|
+
# Copyright (C) Andrew Wood
|
5
|
+
# NO WARRANTY - see LICENSE.txt
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'test_helper'
|
9
|
+
require 'term/vt102'
|
10
|
+
|
11
|
+
class TestSetsize < TestBase
|
12
|
+
def test_sizes
|
13
|
+
assert_equal [80, 24], Term::VT102.new.size
|
14
|
+
assert_equal [ 1, 1], Term::VT102.new(cols: 1, rows: 1).size
|
15
|
+
assert_equal [80, 24], Term::VT102.new(cols: 80, rows: 24).size
|
16
|
+
assert_equal [80, 24], Term::VT102.new(cols: -1000, rows: -1000).size
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# Make sure the VT102 module can process basic text OK.
|
2
|
+
#
|
3
|
+
# Copyright (C) Mike Owens
|
4
|
+
# Copyright (C) Andrew Wood
|
5
|
+
# NO WARRANTY - see LICENSE.txt
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'test_helper'
|
9
|
+
require 'term/vt102'
|
10
|
+
|
11
|
+
class TestText < TestBase
|
12
|
+
def test_originals
|
13
|
+
assert_screens [
|
14
|
+
[ 10, 5, "line 1\r\n line 2\r\n line 3\r\nline 4",
|
15
|
+
"line 1" + ("\0" * 4),
|
16
|
+
" line 2" + ("\0" * 2),
|
17
|
+
" line 3" + ("\0" * 2),
|
18
|
+
"line 4" + ("\0" * 4),
|
19
|
+
],
|
20
|
+
[ 80, 25, " line 1 \n line 2\n line 3\n line 4 ",
|
21
|
+
" line 1 " + ("\0" * 72),
|
22
|
+
("\0" * 8) + " line 2" + ("\0" * 62),
|
23
|
+
("\0" * 18) + " line 3" + ("\0" * 52),
|
24
|
+
("\0" * 28) + " line 4 " + ("\0" * 44),
|
25
|
+
],
|
26
|
+
[ 40, 5, "line 1\ttab 1\r\n line 2\ttab 2\ttab 3\r\n line 3\r\nline 4",
|
27
|
+
"line 1\0\0tab 1" + ("\0" * 27),
|
28
|
+
" line 2\0\0\0\0\0\0\0\0tab 2\0\0\0tab 3" + ("\0" * 11),
|
29
|
+
" line 3" + ("\0" * 32),
|
30
|
+
"line 4" + ("\0" * 34),
|
31
|
+
],
|
32
|
+
];
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# Make sure the VT102 module can handle cursor positioning.
|
2
|
+
#
|
3
|
+
# Copyright (C) Mike Owens
|
4
|
+
# Copyright (C) Andrew Wood
|
5
|
+
# NO WARRANTY - see LICENSE.txt
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'test_helper'
|
9
|
+
require 'term/vt102'
|
10
|
+
|
11
|
+
class TestCursor < TestBase
|
12
|
+
def test_originals
|
13
|
+
assert_screens [
|
14
|
+
[ 20, 5, "\e[2;4Hline 1\r\nline 2", # CUP - ESC [ y ; * H
|
15
|
+
"\0" * 20,
|
16
|
+
("\0" * 3) + "line 1" + ("\0" * 11),
|
17
|
+
"line 2" + ("\0" * 14),
|
18
|
+
],
|
19
|
+
[ 20, 5, "\e[3Hline 1\nline 2", # CUP - ESC [ y H
|
20
|
+
"\0" * 20,
|
21
|
+
"\0" * 20,
|
22
|
+
"line 1" + ("\0" * 14),
|
23
|
+
("\0" * 6) + "line 2" + ("\0" * 8),
|
24
|
+
],
|
25
|
+
[ 20, 5, "\e[2Hline 1\nline 2\e[1Hline 3", # CUP, CUP, LF
|
26
|
+
"line 3" + ("\0" * 14),
|
27
|
+
"line 1" + ("\0" * 14),
|
28
|
+
("\0" * 6) + "line 2" + ("\0" * 8),
|
29
|
+
],
|
30
|
+
[ 10, 4, "\e[2;6Hline 1\r\nline 2\eM\eMtop", # CUP, CR, LF, RI (ESC M)
|
31
|
+
("\0" * 6) + "top" + "\0",
|
32
|
+
("\0" * 5) + "line ",
|
33
|
+
"line 2" + ("\0" * 4),
|
34
|
+
("\0" * 10),
|
35
|
+
],
|
36
|
+
[ 20, 8, "\e[4;10Hmiddle\e[Htop line\eD" + # IND, NEL, CUU, CUF
|
37
|
+
"row 2\eE\rrow 3\e[A\e[8Cmark",
|
38
|
+
"top line" + ("\0" * 12),
|
39
|
+
("\0" * 8) + "row 2mark" + ("\0" * 3),
|
40
|
+
"row 3" + ("\0" * 15),
|
41
|
+
("\0" * 9) + "middle" + ("\0" * 5),
|
42
|
+
],
|
43
|
+
[ 20, 4, "row 1\e[Brow 2\e[7Da\e[2Erow 4", # CUD, CUB, CNL
|
44
|
+
"row 1" + ("\0" * 15),
|
45
|
+
("\0" * 3) + "a\0row 2" + ("\0" * 10),
|
46
|
+
"\0" * 20,
|
47
|
+
"row 4" + ("\0" * 15),
|
48
|
+
],
|
49
|
+
[ 20, 4, "\e[3;4Hrow 3\e[2Frow 1" + # CPL, CHA, HPR, VPA
|
50
|
+
"\e[9Gmiddle 1\e[2aa\e[2db",
|
51
|
+
"row 1" + ("\0" * 3) + "middle 1" + ("\0" * 2) + "a\0",
|
52
|
+
("\0" * 19) + "b",
|
53
|
+
("\0" * 3) + "row 3" + ("\0" * 12),
|
54
|
+
],
|
55
|
+
[ 20, 3, "\e[2erow 3\e[2;4frow 2\e[15\`mark", # VPR, HVP, HPA
|
56
|
+
("\0" * 20),
|
57
|
+
("\0" * 3) + "row 2" + ("\0" * 6) + "mark" + ("\0" * 2),
|
58
|
+
"row 3" + ("\0" * 15),
|
59
|
+
],
|
60
|
+
[ 10, 5, "\e[999;999HR\e[GL\e[Hl\e[999Gr",
|
61
|
+
"l" + ("\0" * 8) + "r",
|
62
|
+
("\0" * 10),
|
63
|
+
("\0" * 10),
|
64
|
+
("\0" * 10),
|
65
|
+
"L" + ("\0" * 8) + "R",
|
66
|
+
],
|
67
|
+
[ 20, 8, "Trap\e[CLog\e[CDisplay", # reported by Paul Stoddard
|
68
|
+
"Trap\0Log\0Display" + ("\0" * 4),
|
69
|
+
("\0" * 20),
|
70
|
+
],
|
71
|
+
]
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,187 @@
|
|
1
|
+
# Make sure the VT102 module can handle scrolling up and down.
|
2
|
+
#
|
3
|
+
# Copyright (C) Mike Owens
|
4
|
+
# Copyright (C) Andrew Wood
|
5
|
+
# NO WARRANTY - see LICENSE.txt
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'test_helper'
|
9
|
+
require 'term/vt102'
|
10
|
+
|
11
|
+
class TestScrolling < TestBase
|
12
|
+
def fill
|
13
|
+
"0123456789\r\n" +
|
14
|
+
"1234567890\r\n" +
|
15
|
+
"2345678901\r\n" +
|
16
|
+
"3456789012\e[H"
|
17
|
+
end
|
18
|
+
|
19
|
+
def fill2
|
20
|
+
"0123456789\r\n" +
|
21
|
+
"1234567890\r\n" +
|
22
|
+
"2345678901\r\n" +
|
23
|
+
"3456789012\e[2;3r\e[2H"
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_00_nothing
|
27
|
+
assert_screen [
|
28
|
+
10, 4, fill + "", # 1: nothing
|
29
|
+
"0123456789",
|
30
|
+
"1234567890",
|
31
|
+
"2345678901",
|
32
|
+
"3456789012" ]
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_01_lf
|
36
|
+
assert_screen [
|
37
|
+
10, 4, fill + "\e[4H\ntest", # 2: LF
|
38
|
+
"1234567890",
|
39
|
+
"2345678901",
|
40
|
+
"3456789012",
|
41
|
+
"test" + ("\0" * 6)]
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_02_ri
|
45
|
+
assert_screen [
|
46
|
+
10, 4, fill + "\eMtest", # 3: RI
|
47
|
+
"test" + ("\0" * 6),
|
48
|
+
"0123456789",
|
49
|
+
"1234567890",
|
50
|
+
"2345678901"]
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_03_ind
|
54
|
+
assert_screen [
|
55
|
+
10, 4, fill + "\e[4H\eDtest", # 4: IND
|
56
|
+
"1234567890",
|
57
|
+
"2345678901",
|
58
|
+
"3456789012",
|
59
|
+
"test" + ("\0" * 6)]
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_04_nel
|
63
|
+
assert_screen [
|
64
|
+
10, 4, fill + "\e[4H\eEtest", # 5: NEL
|
65
|
+
"1234567890",
|
66
|
+
"2345678901",
|
67
|
+
"3456789012",
|
68
|
+
"test" + ("\0" * 6)]
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_05_cuu
|
72
|
+
assert_screen [
|
73
|
+
10, 4, fill + "\e[2Atest", # 6: CUU
|
74
|
+
"test" + ("\0" * 6),
|
75
|
+
"\0" * 10,
|
76
|
+
"0123456789",
|
77
|
+
"1234567890"]
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_06_cuu2
|
81
|
+
assert_screen [
|
82
|
+
10, 4, fill + "\e[8Atest", # 7: CUU
|
83
|
+
"test" + ("\0" * 6),
|
84
|
+
"\0" * 10,
|
85
|
+
"\0" * 10,
|
86
|
+
"\0" * 10]
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_07_cud
|
90
|
+
assert_screen [
|
91
|
+
10, 4, fill + "\e[4H\e[2Btest", # 8: CUD
|
92
|
+
"2345678901",
|
93
|
+
"3456789012",
|
94
|
+
"\0" * 10,
|
95
|
+
"test" + ("\0" * 6)]
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_08_cnl
|
99
|
+
assert_screen [
|
100
|
+
10, 4, fill + "\e[4H\e[2Etest", # 9: CNL
|
101
|
+
"2345678901",
|
102
|
+
"3456789012",
|
103
|
+
"\0" * 10,
|
104
|
+
"test" + ("\0" * 6)]
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_09_cnl2
|
108
|
+
assert_screen [
|
109
|
+
10, 4, fill + "\e[4H\e[9Etest", # 10: CNL
|
110
|
+
"\0" * 10,
|
111
|
+
"\0" * 10,
|
112
|
+
"\0" * 10,
|
113
|
+
"test" + ("\0" * 6)]
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_10_cpl
|
117
|
+
assert_screen [
|
118
|
+
10, 4, fill + "\e[2Ftest", # 11: CPL
|
119
|
+
"test" + ("\0" * 6),
|
120
|
+
"\0" * 10,
|
121
|
+
"0123456789",
|
122
|
+
"1234567890"]
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_11_nothing_decstbm
|
126
|
+
assert_screen [
|
127
|
+
10, 4, fill2 + "", # 12: nothing (with DECSTBM)
|
128
|
+
"0123456789",
|
129
|
+
"1234567890",
|
130
|
+
"2345678901",
|
131
|
+
"3456789012"]
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_12_decstbm_cnl
|
135
|
+
assert_screen [
|
136
|
+
10, 4, fill2 + "\e[3H\e[Etest", # 13: DECSTBM CNL
|
137
|
+
"0123456789",
|
138
|
+
"2345678901",
|
139
|
+
"test" + ("\0" * 6),
|
140
|
+
"3456789012"]
|
141
|
+
end
|
142
|
+
|
143
|
+
def test_13_decstbm_cpl
|
144
|
+
assert_screen [
|
145
|
+
10, 4, fill2 + "\e[Ftest", # 14: DECSTBM CPL
|
146
|
+
"0123456789",
|
147
|
+
"test" + ("\0" * 6),
|
148
|
+
"1234567890",
|
149
|
+
"3456789012"]
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_14_decstbm_cnl2
|
153
|
+
assert_screen [
|
154
|
+
10, 4, fill2 + "\e[3H\e[2Etest", # 15: DECSTBM CNL 2
|
155
|
+
"0123456789",
|
156
|
+
"\0" * 10,
|
157
|
+
"test" + ("\0" * 6),
|
158
|
+
"3456789012"]
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_15_decstbm_cpl_2
|
162
|
+
assert_screen [
|
163
|
+
10, 4, fill2 + "\e[2Ftest", # 16: DECSTBM CPL 2
|
164
|
+
"0123456789",
|
165
|
+
"test" + ("\0" * 6),
|
166
|
+
"\0" * 10,
|
167
|
+
"3456789012"]
|
168
|
+
end
|
169
|
+
|
170
|
+
def test_16_decstbm_cnl_4
|
171
|
+
assert_screen [
|
172
|
+
10, 4, fill2 + "\e[3H\e[4Etest", # 17: DECSTBM CNL 4
|
173
|
+
"0123456789",
|
174
|
+
"\0" * 10,
|
175
|
+
"test" + ("\0" * 6),
|
176
|
+
"3456789012"]
|
177
|
+
end
|
178
|
+
|
179
|
+
def test_17_decstbm_cpl_4
|
180
|
+
assert_screen [
|
181
|
+
10, 4, fill2 + "\e[4Ftest", # 18: DECSTBM CPL 4
|
182
|
+
"0123456789",
|
183
|
+
"test" + ("\0" * 6),
|
184
|
+
"\0" * 10,
|
185
|
+
"3456789012"]
|
186
|
+
end
|
187
|
+
end
|
@@ -0,0 +1,309 @@
|
|
1
|
+
# Make sure the VT102 module can handle line and character insertion and
|
2
|
+
# deletion, and line/screen clearing.
|
3
|
+
#
|
4
|
+
# Copyright (C) Mike Owens
|
5
|
+
# Copyright (C) Andrew Wood
|
6
|
+
# NO WARRANTY - see LICENSE.txt
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'test_helper'
|
10
|
+
require 'term/vt102'
|
11
|
+
|
12
|
+
class TestInsdel < TestBase
|
13
|
+
def fill
|
14
|
+
"0123456789\r\n" +
|
15
|
+
"1234567890\r\n" +
|
16
|
+
"2345678901\r\n" +
|
17
|
+
"3456789012\e[H"
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_00_nothing
|
21
|
+
assert_screen [
|
22
|
+
10, 4, fill + "", # 1: nothing
|
23
|
+
"0123456789",
|
24
|
+
"1234567890",
|
25
|
+
"2345678901",
|
26
|
+
"3456789012"]
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_01_dch_1
|
30
|
+
assert_screen [
|
31
|
+
10, 4, fill + "\e[P", # 2: DCH 1
|
32
|
+
"123456789\0",
|
33
|
+
"1234567890",
|
34
|
+
"2345678901",
|
35
|
+
"3456789012"]
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_02_dch_2
|
39
|
+
assert_screen [
|
40
|
+
10, 4, fill + "\e[2;8H\e[2P", # 3: DCH 2
|
41
|
+
"0123456789",
|
42
|
+
"12345670\0\0",
|
43
|
+
"2345678901",
|
44
|
+
"3456789012"]
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_03_dch_9
|
48
|
+
assert_screen [
|
49
|
+
10, 4, fill + "\e[3;7H\e[9P", # 4: DCH 9
|
50
|
+
"0123456789",
|
51
|
+
"1234567890",
|
52
|
+
"234567\0\0\0\0",
|
53
|
+
"3456789012"]
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_04_ech_1
|
57
|
+
assert_screen [
|
58
|
+
10, 4, fill + "\e[X", # 5: ECH 1
|
59
|
+
"\0" + "123456789",
|
60
|
+
"1234567890",
|
61
|
+
"2345678901",
|
62
|
+
"3456789012"]
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_05_ech_2
|
66
|
+
assert_screen [
|
67
|
+
10, 4, fill + "\e[2;8H\e[2X", # 6: ECH 2
|
68
|
+
"0123456789",
|
69
|
+
"1234567\0\0" + "0",
|
70
|
+
"2345678901",
|
71
|
+
"3456789012"]
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_06_ech_9
|
75
|
+
assert_screen [
|
76
|
+
10, 4, fill + "\e[3;7H\e[9X", # 7: ECH 9
|
77
|
+
"0123456789",
|
78
|
+
"1234567890",
|
79
|
+
"234567\0\0\0\0",
|
80
|
+
"3456789012"]
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
def test_07_ich_1
|
85
|
+
assert_screen [
|
86
|
+
10, 4, fill + "\e[@", # 8: ICH 1
|
87
|
+
"\0" + "012345678",
|
88
|
+
"1234567890",
|
89
|
+
"2345678901",
|
90
|
+
"3456789012"]
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_08_ich_2
|
94
|
+
assert_screen [
|
95
|
+
10, 4, fill + "\e[2;8H\e[2@", # 9: ICH 2
|
96
|
+
"0123456789",
|
97
|
+
"1234567\0\0" + "8",
|
98
|
+
"2345678901",
|
99
|
+
"3456789012"]
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_09_ich_9
|
103
|
+
assert_screen [
|
104
|
+
10, 4, fill + "\e[3;7H\e[9@", # 10: ICH 9
|
105
|
+
"0123456789",
|
106
|
+
"1234567890",
|
107
|
+
"234567\0\0\0\0",
|
108
|
+
"3456789012"]
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_10_ed_0
|
112
|
+
assert_screen [
|
113
|
+
10, 4, fill + "\e[2;4H\e[J", # 11: ED 0
|
114
|
+
"0123456789",
|
115
|
+
"123" + ("\0" * 7),
|
116
|
+
("\0" * 10),
|
117
|
+
("\0" * 10)]
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_11_ed_1
|
121
|
+
assert_screen [
|
122
|
+
10, 4, fill + "\e[2;4H\e[1J", # 12: ED 1
|
123
|
+
("\0" * 10),
|
124
|
+
("\0" * 4) + "567890",
|
125
|
+
"2345678901",
|
126
|
+
"3456789012"]
|
127
|
+
end
|
128
|
+
|
129
|
+
def test_12_ed_2
|
130
|
+
assert_screen [
|
131
|
+
10, 4, fill + "\e[2;4H\e[2J", # 13: ED 2
|
132
|
+
("\0" * 10),
|
133
|
+
("\0" * 10),
|
134
|
+
("\0" * 10),
|
135
|
+
("\0" * 10)]
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_13_el_0
|
139
|
+
assert_screen [
|
140
|
+
10, 4, fill + "\e[2;4H\e[K", # 14: EL 0
|
141
|
+
"0123456789",
|
142
|
+
"123" + ("\0" * 7),
|
143
|
+
"2345678901",
|
144
|
+
"3456789012"]
|
145
|
+
end
|
146
|
+
|
147
|
+
def test_14_el_1
|
148
|
+
assert_screen [
|
149
|
+
10, 4, fill + "\e[2;4H\e[1K", # 15: EL 1
|
150
|
+
"0123456789",
|
151
|
+
("\0" * 4) + "567890",
|
152
|
+
"2345678901",
|
153
|
+
"3456789012"]
|
154
|
+
end
|
155
|
+
|
156
|
+
def test_15_el_2
|
157
|
+
assert_screen [
|
158
|
+
10, 4, fill + "\e[2;4H\e[2K", # 16: EL 2
|
159
|
+
"0123456789",
|
160
|
+
("\0" * 10),
|
161
|
+
"2345678901",
|
162
|
+
"3456789012"]
|
163
|
+
end
|
164
|
+
|
165
|
+
def test_16_il_1
|
166
|
+
assert_screen [
|
167
|
+
10, 4, fill + "\e[2;4H\e[LAbC", # 17: IL 1
|
168
|
+
"0123456789",
|
169
|
+
("\0" * 3) + "AbC" + ("\0" * 4),
|
170
|
+
"1234567890",
|
171
|
+
"2345678901"]
|
172
|
+
end
|
173
|
+
|
174
|
+
def test_17_il_2
|
175
|
+
assert_screen [
|
176
|
+
10, 4, fill + "\e[2;4H\e[2LAbC", # 18: IL 2
|
177
|
+
"0123456789",
|
178
|
+
("\0" * 3) + "AbC" + ("\0" * 4),
|
179
|
+
("\0" * 10),
|
180
|
+
"1234567890"]
|
181
|
+
end
|
182
|
+
|
183
|
+
def test_18_il_3
|
184
|
+
assert_screen [
|
185
|
+
10, 4, fill + "\e[2;4H\e[9LAbC", # 19: IL 3
|
186
|
+
"0123456789",
|
187
|
+
("\0" * 3) + "AbC" + ("\0" * 4),
|
188
|
+
("\0" * 10),
|
189
|
+
("\0" * 10)]
|
190
|
+
end
|
191
|
+
|
192
|
+
def test_19_il_4
|
193
|
+
assert_screen [
|
194
|
+
10, 4, fill + "\e[1;1H\e[2LAbC", # 20: IL 4
|
195
|
+
"AbC" + ("\0" * 7),
|
196
|
+
("\0" * 10),
|
197
|
+
"0123456789",
|
198
|
+
"1234567890"]
|
199
|
+
end
|
200
|
+
|
201
|
+
def test_20_dl_1
|
202
|
+
assert_screen [
|
203
|
+
10, 4, fill + "\e[2;4H\e[MAbC", # 21: DL 1
|
204
|
+
"0123456789",
|
205
|
+
"234AbC8901",
|
206
|
+
"3456789012",
|
207
|
+
("\0" * 10)]
|
208
|
+
end
|
209
|
+
|
210
|
+
def test_21_dl_2
|
211
|
+
assert_screen [
|
212
|
+
10, 4, fill + "\e[2;4H\e[2MAbC", # 22: DL 2
|
213
|
+
"0123456789",
|
214
|
+
"345AbC9012",
|
215
|
+
("\0" * 10),
|
216
|
+
("\0" * 10)]
|
217
|
+
end
|
218
|
+
|
219
|
+
def test_22_el_3
|
220
|
+
assert_screen [
|
221
|
+
10, 4, fill + "\e[2;4H\e[9MAbC", # 23: DL 3
|
222
|
+
"0123456789",
|
223
|
+
("\0" * 3) + "AbC" + ("\0" * 4),
|
224
|
+
("\0" * 10),
|
225
|
+
("\0" * 10)]
|
226
|
+
end
|
227
|
+
|
228
|
+
def test_23_dl_4
|
229
|
+
assert_screen [
|
230
|
+
10, 4, fill + "\e[1;1H\e[2MAbC", # 24: DL 4
|
231
|
+
"AbC5678901",
|
232
|
+
"3456789012",
|
233
|
+
("\0" * 10),
|
234
|
+
("\0" * 10)]
|
235
|
+
end
|
236
|
+
|
237
|
+
def test_24_decstbm_il_1
|
238
|
+
assert_screen [
|
239
|
+
10, 4, fill + "\e[2;3r\e[2;4H\e[LAbC", # 25: DECSTBM IL 1
|
240
|
+
"0123456789",
|
241
|
+
("\0" * 3) + "AbC" + ("\0" * 4),
|
242
|
+
"1234567890",
|
243
|
+
"3456789012"]
|
244
|
+
end
|
245
|
+
|
246
|
+
def test_25_decstbm_il_2
|
247
|
+
assert_screen [
|
248
|
+
10, 4, fill + "\e[2;3r\e[2;4H\e[2LAbC", # 26: DECSTBM IL 2
|
249
|
+
"0123456789",
|
250
|
+
("\0" * 3) + "AbC" + ("\0" * 4),
|
251
|
+
("\0" * 10),
|
252
|
+
"3456789012"]
|
253
|
+
end
|
254
|
+
|
255
|
+
def test_26_decstbm_il_3
|
256
|
+
assert_screen [
|
257
|
+
10, 4, fill + "\e[2;3r\e[2;4H\e[9LAbC", # 27: DECSTBM IL 3
|
258
|
+
"0123456789",
|
259
|
+
("\0" * 3) + "AbC" + ("\0" * 4),
|
260
|
+
("\0" * 10),
|
261
|
+
"3456789012"]
|
262
|
+
end
|
263
|
+
|
264
|
+
def test_27_decstbm_il_4
|
265
|
+
assert_screen [
|
266
|
+
10, 4, fill + "\e[2;3r\e[1;1H\e[2LAbC", # 28: DECSTBM IL 4
|
267
|
+
"AbC" + ("\0" * 7),
|
268
|
+
"1234567890",
|
269
|
+
"2345678901",
|
270
|
+
"3456789012"]
|
271
|
+
end
|
272
|
+
|
273
|
+
def test_28_decstbm_dl_1
|
274
|
+
assert_screen [
|
275
|
+
10, 4, fill + "\e[2;3r\e[2;4H\e[MAbC", # 29: DECSTBM DL 1
|
276
|
+
"0123456789",
|
277
|
+
"234AbC8901",
|
278
|
+
("\0" * 10),
|
279
|
+
"3456789012"]
|
280
|
+
end
|
281
|
+
|
282
|
+
def test_29_decstbm_dl_2
|
283
|
+
assert_screen [
|
284
|
+
10, 4, fill + "\e[2;3r\e[2;4H\e[2MAbC", # 30: DECSTBM DL 2
|
285
|
+
"0123456789",
|
286
|
+
("\0" * 3) + "AbC" + ("\0" * 4),
|
287
|
+
("\0" * 10),
|
288
|
+
"3456789012"]
|
289
|
+
end
|
290
|
+
|
291
|
+
def test_30_decstbm_dl_3
|
292
|
+
assert_screen [
|
293
|
+
10, 4, fill + "\e[2;3r\e[2;4H\e[9MAbC", # 31: DECSTBM DL 3
|
294
|
+
"0123456789",
|
295
|
+
("\0" * 3) + "AbC" + ("\0" * 4),
|
296
|
+
("\0" * 10),
|
297
|
+
"3456789012"]
|
298
|
+
end
|
299
|
+
|
300
|
+
def test_32_decstbm_dl_4
|
301
|
+
assert_screen [
|
302
|
+
10, 4, fill + "\e[2;3r\e[1;1H\e[2MAbC", # 32: DECSTBM DL 4
|
303
|
+
"AbC" + ("\0" * 7),
|
304
|
+
"1234567890",
|
305
|
+
"2345678901",
|
306
|
+
"3456789012"]
|
307
|
+
end
|
308
|
+
|
309
|
+
end
|