termgui 0.0.4 → 0.0.5
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 +4 -4
- data/lib/termgui.rb +1 -1
- metadata +40 -107
- data/Gemfile +0 -14
- data/README.md +0 -321
- data/src/action.rb +0 -58
- data/src/box.rb +0 -90
- data/src/color.rb +0 -174
- data/src/cursor.rb +0 -69
- data/src/editor/editor_base.rb +0 -152
- data/src/editor/editor_base_handlers.rb +0 -116
- data/src/element.rb +0 -61
- data/src/element_bounds.rb +0 -111
- data/src/element_box.rb +0 -64
- data/src/element_render.rb +0 -102
- data/src/element_style.rb +0 -51
- data/src/emitter.rb +0 -102
- data/src/emitter_state.rb +0 -19
- data/src/enterable.rb +0 -93
- data/src/event.rb +0 -92
- data/src/focus.rb +0 -102
- data/src/geometry.rb +0 -53
- data/src/image.rb +0 -60
- data/src/input.rb +0 -85
- data/src/input_grab.rb +0 -17
- data/src/input_time.rb +0 -97
- data/src/key.rb +0 -114
- data/src/log.rb +0 -24
- data/src/node.rb +0 -117
- data/src/node_attributes.rb +0 -27
- data/src/node_visit.rb +0 -52
- data/src/renderer.rb +0 -119
- data/src/renderer_cursor.rb +0 -18
- data/src/renderer_draw.rb +0 -28
- data/src/renderer_image.rb +0 -31
- data/src/renderer_print.rb +0 -40
- data/src/screen.rb +0 -96
- data/src/screen_element.rb +0 -59
- data/src/screen_input.rb +0 -43
- data/src/screen_renderer.rb +0 -53
- data/src/style.rb +0 -149
- data/src/tco/colouring.rb +0 -248
- data/src/tco/config.rb +0 -57
- data/src/tco/palette.rb +0 -603
- data/src/tco/tco_termgui.rb +0 -30
- data/src/termgui.rb +0 -29
- data/src/util.rb +0 -110
- data/src/util/css.rb +0 -98
- data/src/util/css_query.rb +0 -23
- data/src/util/easing.rb +0 -364
- data/src/util/hash_object.rb +0 -131
- data/src/util/imagemagick.rb +0 -27
- data/src/util/justify.rb +0 -20
- data/src/util/unicode-categories.rb +0 -572
- data/src/util/wrap.rb +0 -102
- data/src/widget/button.rb +0 -33
- data/src/widget/checkbox.rb +0 -47
- data/src/widget/col.rb +0 -30
- data/src/widget/image.rb +0 -106
- data/src/widget/inline.rb +0 -40
- data/src/widget/input_number.rb +0 -73
- data/src/widget/inputbox.rb +0 -85
- data/src/widget/label.rb +0 -33
- data/src/widget/modal.rb +0 -69
- data/src/widget/row.rb +0 -26
- data/src/widget/selectbox.rb +0 -100
- data/src/widget/textarea.rb +0 -54
- data/src/xml/xml.rb +0 -80
- data/test/action_test.rb +0 -34
- data/test/box_test.rb +0 -15
- data/test/css_test.rb +0 -39
- data/test/editor/editor_base_test.rb +0 -201
- data/test/element_bounds_test.rb +0 -77
- data/test/element_box_test.rb +0 -8
- data/test/element_render_test.rb +0 -124
- data/test/element_style_test.rb +0 -85
- data/test/element_test.rb +0 -10
- data/test/emitter_test.rb +0 -108
- data/test/event_test.rb +0 -19
- data/test/focus_test.rb +0 -37
- data/test/geometry_test.rb +0 -12
- data/test/input_test.rb +0 -47
- data/test/key_test.rb +0 -14
- data/test/log_test.rb +0 -21
- data/test/node_test.rb +0 -105
- data/test/performance/performance1.rb +0 -48
- data/test/renderer_test.rb +0 -74
- data/test/renderer_test_rect.rb +0 -4
- data/test/screen_test.rb +0 -58
- data/test/style_test.rb +0 -18
- data/test/termgui_test.rb +0 -10
- data/test/test_all.rb +0 -30
- data/test/util_hash_object_test.rb +0 -93
- data/test/util_test.rb +0 -26
- data/test/widget/checkbox_test.rb +0 -99
- data/test/widget/col_test.rb +0 -87
- data/test/widget/inline_test.rb +0 -40
- data/test/widget/label_test.rb +0 -94
- data/test/widget/row_test.rb +0 -40
- data/test/wrap_test.rb +0 -11
- data/test/xml_test.rb +0 -77
data/test/element_test.rb
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
include Test::Unit::Assertions
|
3
|
-
require_relative '../src/element'
|
4
|
-
require_relative '../src/util'
|
5
|
-
require_relative '../src/style'
|
6
|
-
require_relative '../src/screen'
|
7
|
-
require_relative '../src/log'
|
8
|
-
|
9
|
-
class ElementTest < Test::Unit::TestCase
|
10
|
-
end
|
data/test/emitter_test.rb
DELETED
@@ -1,108 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
include Test::Unit::Assertions
|
3
|
-
require_relative '../src/emitter'
|
4
|
-
require_relative '../src/util'
|
5
|
-
|
6
|
-
class EmitterTest < Test::Unit::TestCase
|
7
|
-
def test_event_emitter
|
8
|
-
event_emitter = Emitter.new
|
9
|
-
s = ''
|
10
|
-
ring_bell = lambda do |_object|
|
11
|
-
s = 'ring ring ring'
|
12
|
-
end
|
13
|
-
# create an event 'doorOpen'
|
14
|
-
event_emitter.install(:doorOpen)
|
15
|
-
# and subscribe code to event
|
16
|
-
event_emitter.subscribe(:doorOpen, ring_bell)
|
17
|
-
# to trigger event
|
18
|
-
event_emitter.emit(:doorOpen)
|
19
|
-
next_tick
|
20
|
-
assert_equal 'ring ring ring', s
|
21
|
-
|
22
|
-
s = ''
|
23
|
-
event_emitter.subscribe(:doorOpen, proc { |e| s = e[:msg] })
|
24
|
-
event_emitter.emit(:doorOpen, msg: 'hello')
|
25
|
-
next_tick
|
26
|
-
assert_equal 'hello', s
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_state
|
30
|
-
e = Emitter.new
|
31
|
-
e.install(:play)
|
32
|
-
a = 0
|
33
|
-
b = 0
|
34
|
-
e.subscribe(:play, proc {
|
35
|
-
a += 1
|
36
|
-
})
|
37
|
-
e.emit(:play)
|
38
|
-
assert_equal 1, a
|
39
|
-
assert_equal 0, b
|
40
|
-
e.emitter_save('a')
|
41
|
-
e.emitter_reset
|
42
|
-
e.install(:play)
|
43
|
-
e.on(:play, proc { b += 1 })
|
44
|
-
e.emit(:play)
|
45
|
-
assert_equal 1, a
|
46
|
-
assert_equal 1, b
|
47
|
-
e.emitter_save('b')
|
48
|
-
|
49
|
-
e.emitter_load('a')
|
50
|
-
e.emit(:play)
|
51
|
-
assert_equal 2, a
|
52
|
-
assert_equal 1, b
|
53
|
-
|
54
|
-
e.emitter_load('b')
|
55
|
-
e.emit(:play)
|
56
|
-
assert_equal 2, a
|
57
|
-
assert_equal 2, b
|
58
|
-
end
|
59
|
-
|
60
|
-
def test_block
|
61
|
-
e = Emitter.new
|
62
|
-
e.install(:play)
|
63
|
-
a = 0
|
64
|
-
b = 0
|
65
|
-
e.subscribe(:play) { a += 1 }
|
66
|
-
e.on(:play) { b += 1 }
|
67
|
-
assert_equal 0, a
|
68
|
-
assert_equal 0, b
|
69
|
-
e.emit(:play)
|
70
|
-
assert_equal 1, a
|
71
|
-
assert_equal 1, b
|
72
|
-
end
|
73
|
-
|
74
|
-
def test_unsubscribe
|
75
|
-
e = Emitter.new
|
76
|
-
e.install(:play)
|
77
|
-
a = 0
|
78
|
-
b = 0
|
79
|
-
s1 = e.subscribe(:play) { a += 1 }
|
80
|
-
s2 = e.subscribe(:play) { b += 1 }
|
81
|
-
assert_equal 0, a
|
82
|
-
assert_equal 0, b
|
83
|
-
e.emit(:play)
|
84
|
-
assert_equal 1, a
|
85
|
-
assert_equal 1, b
|
86
|
-
e.unsubscribe(:play, s2)
|
87
|
-
e.emit(:play)
|
88
|
-
assert_equal 2, a
|
89
|
-
assert_equal 1, b
|
90
|
-
end
|
91
|
-
|
92
|
-
def test_once
|
93
|
-
e = Emitter.new
|
94
|
-
e.install(:play)
|
95
|
-
a = 0
|
96
|
-
b = 0
|
97
|
-
e.subscribe(:play) { a += 1 }
|
98
|
-
e.once(:play) { b += 1 }
|
99
|
-
assert_equal 0, a
|
100
|
-
assert_equal 0, b
|
101
|
-
e.emit(:play)
|
102
|
-
assert_equal 1, a
|
103
|
-
assert_equal 1, b
|
104
|
-
e.emit(:play)
|
105
|
-
assert_equal 2, a
|
106
|
-
assert_equal 1, b
|
107
|
-
end
|
108
|
-
end
|
data/test/event_test.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
include Test::Unit::Assertions
|
3
|
-
require_relative '../src/event'
|
4
|
-
|
5
|
-
class EventManagerTest < Test::Unit::TestCase
|
6
|
-
def test_add_key_listener
|
7
|
-
e = EventManager.new
|
8
|
-
s = 'n'
|
9
|
-
e.add_key_listener('q', proc do |ev|
|
10
|
-
s = ev.key
|
11
|
-
end)
|
12
|
-
|
13
|
-
e.handle_key(KeyEvent.new('q', 'q'))
|
14
|
-
assert_equal s, 'q', 'should notify'
|
15
|
-
|
16
|
-
e.handle_key(KeyEvent.new('x', 'x'))
|
17
|
-
assert_equal s, 'q', 'should not notify'
|
18
|
-
end
|
19
|
-
end
|
data/test/focus_test.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
include Test::Unit::Assertions
|
3
|
-
require_relative '../src/focus'
|
4
|
-
require_relative '../src/node'
|
5
|
-
require_relative '../src/event'
|
6
|
-
|
7
|
-
class FocusTest < Test::Unit::TestCase
|
8
|
-
def test_next
|
9
|
-
c1 = Node.new(
|
10
|
-
name: 'child1',
|
11
|
-
attributes: { focusable: true }
|
12
|
-
)
|
13
|
-
c2 = Node.new(
|
14
|
-
name: 'child2',
|
15
|
-
attributes: { focusable: true }
|
16
|
-
)
|
17
|
-
root = Node.new(
|
18
|
-
text: 'parent',
|
19
|
-
children: [c1, c2]
|
20
|
-
)
|
21
|
-
assert_equal nil, c1.get_attribute(:focused)
|
22
|
-
focus = FocusManager.new(root: root, event: EventManager.new)
|
23
|
-
times = 0
|
24
|
-
focus.add_listener(:focus, proc { |e|
|
25
|
-
if times.zero?
|
26
|
-
assert_equal e[:focused], c2
|
27
|
-
assert_equal e[:previous], c1
|
28
|
-
end
|
29
|
-
times += 1
|
30
|
-
})
|
31
|
-
assert_equal true, c1.get_attribute(:focused)
|
32
|
-
focus.focus_next
|
33
|
-
assert_equal false, c1.get_attribute(:focused)
|
34
|
-
assert_equal true, c2.get_attribute(:focused)
|
35
|
-
assert_equal times, 1
|
36
|
-
end
|
37
|
-
end
|
data/test/geometry_test.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
include Test::Unit::Assertions
|
3
|
-
require_relative '../src/geometry'
|
4
|
-
|
5
|
-
class GeometryTest < Test::Unit::TestCase
|
6
|
-
def test_bounds
|
7
|
-
o = Bounds.new(top: 2, left: 1, right: 3, bottom: 4)
|
8
|
-
assert_equal 2, o.top
|
9
|
-
o.top = 6
|
10
|
-
assert_equal 6, o.top
|
11
|
-
end
|
12
|
-
end
|
data/test/input_test.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
include Test::Unit::Assertions
|
3
|
-
require_relative '../src/input'
|
4
|
-
|
5
|
-
class InputTest < Test::Unit::TestCase
|
6
|
-
def test_set_timeout
|
7
|
-
i = Input.new
|
8
|
-
t = nil
|
9
|
-
i.set_timeout(0.1, proc {
|
10
|
-
t = 'timeout'
|
11
|
-
i.stop
|
12
|
-
})
|
13
|
-
i.start
|
14
|
-
assert_equal t, 'timeout'
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_set_timeout_block
|
18
|
-
i = Input.new
|
19
|
-
t = nil
|
20
|
-
i.set_timeout(0.1) do
|
21
|
-
t = 'timeout'
|
22
|
-
i.stop
|
23
|
-
end
|
24
|
-
i.start
|
25
|
-
assert_equal t, 'timeout'
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_wait_for
|
29
|
-
i = Input.new
|
30
|
-
t = nil
|
31
|
-
y = nil
|
32
|
-
i.wait_for(proc { t == 1 }) do |timeout|
|
33
|
-
assert_equal false, timeout
|
34
|
-
assert_equal 1, t
|
35
|
-
y = 'works'
|
36
|
-
i.stop
|
37
|
-
end
|
38
|
-
i.set_timeout(0.2) do
|
39
|
-
t = 1
|
40
|
-
end
|
41
|
-
assert_equal nil, t
|
42
|
-
assert_equal nil, y
|
43
|
-
i.start
|
44
|
-
assert_equal y, 'works'
|
45
|
-
assert_equal 1, t
|
46
|
-
end
|
47
|
-
end
|
data/test/key_test.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
include Test::Unit::Assertions
|
3
|
-
require_relative '../src/key'
|
4
|
-
|
5
|
-
class KeyTest < Test::Unit::TestCase
|
6
|
-
def test_char_to_name
|
7
|
-
assert_equal 'C-z', char_to_name('\x1A')
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_name_to_char
|
11
|
-
assert_equal '\x1A', name_to_char('C-z')
|
12
|
-
assert_equal 'q', name_to_char('q')
|
13
|
-
end
|
14
|
-
end
|
data/test/log_test.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
include Test::Unit::Assertions
|
3
|
-
require_relative '../src/log'
|
4
|
-
|
5
|
-
class Logger1
|
6
|
-
include Log
|
7
|
-
def initialize(file = 'log.txt')
|
8
|
-
@file = file
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
class LogTest < Test::Unit::TestCase
|
13
|
-
def test_log
|
14
|
-
`rm -rf tmp_test_log.txt`
|
15
|
-
l = Logger1.new 'tmp_test_log.txt'
|
16
|
-
l.log(a: [1, 2, { b: false, c: 'hello' }])
|
17
|
-
s = File.open('tmp_test_log.txt', 'r').read
|
18
|
-
assert_equal "------\n" + "[{:a=>[1, 2, {:b=>false, :c=>\"hello\"}]}]\n", s
|
19
|
-
`rm -rf tmp_test_log.txt`
|
20
|
-
end
|
21
|
-
end
|
data/test/node_test.rb
DELETED
@@ -1,105 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
include Test::Unit::Assertions
|
3
|
-
require_relative '../src/node'
|
4
|
-
|
5
|
-
class NodeTest < Test::Unit::TestCase
|
6
|
-
def test_children
|
7
|
-
n = Node.new
|
8
|
-
assert_equal n.children, []
|
9
|
-
c = Node.new
|
10
|
-
n.append_child c
|
11
|
-
assert_equal n.children, [c]
|
12
|
-
assert_equal c.children, []
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_visit_node
|
16
|
-
n = Node.new(
|
17
|
-
text: 'parent',
|
18
|
-
children: [
|
19
|
-
Node.new(name: 'child1'),
|
20
|
-
Node.new(name: 'child2', children: [
|
21
|
-
Node.new(name: 'child2.1')
|
22
|
-
])
|
23
|
-
]
|
24
|
-
)
|
25
|
-
assert_equal 'Node(name: node, children: [Node(name: child1, children: []), ' \
|
26
|
-
'Node(name: child2, children: [Node(name: child2.1, children: [])])])',
|
27
|
-
n.to_s
|
28
|
-
a = []
|
29
|
-
visit_node(n, proc { |child|
|
30
|
-
a.push child.name
|
31
|
-
false
|
32
|
-
})
|
33
|
-
assert_equal ['child1', 'child2.1', 'child2', 'node'], a
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_query_by_attribute
|
37
|
-
n = Node.new(
|
38
|
-
text: 'parent',
|
39
|
-
attributes: {
|
40
|
-
foo: 'bar'
|
41
|
-
},
|
42
|
-
children: [
|
43
|
-
Node.new(
|
44
|
-
name: 'child1',
|
45
|
-
attributes: { a: 1.2 }
|
46
|
-
),
|
47
|
-
Node.new(
|
48
|
-
name: 'child2',
|
49
|
-
attributes: { a: 1.2 },
|
50
|
-
children: [
|
51
|
-
Node.new(
|
52
|
-
name: 'child2.1',
|
53
|
-
attributes: { a: 1.2 }
|
54
|
-
)
|
55
|
-
]
|
56
|
-
)
|
57
|
-
]
|
58
|
-
)
|
59
|
-
result = n.query_by_attribute(:foo, 'bar')
|
60
|
-
assert_equal [n], result
|
61
|
-
assert_equal ['child1', 'child2.1', 'child2'], n.query_by_attribute(:a, 1.2).map(&:name)
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_query_one_by_attribute
|
65
|
-
n = Node.new(
|
66
|
-
text: 'parent',
|
67
|
-
attributes: {
|
68
|
-
},
|
69
|
-
children: [
|
70
|
-
Node.new(
|
71
|
-
name: 'child1',
|
72
|
-
attributes: { a: 1.2 }
|
73
|
-
),
|
74
|
-
Node.new(
|
75
|
-
name: 'child2',
|
76
|
-
attributes: { a: 1.2 },
|
77
|
-
children: [
|
78
|
-
Node.new(
|
79
|
-
name: 'child2.1',
|
80
|
-
attributes: { a: 1.2 }
|
81
|
-
)
|
82
|
-
]
|
83
|
-
)
|
84
|
-
]
|
85
|
-
)
|
86
|
-
result = n.query_one_by_attribute(:a, 1.2)
|
87
|
-
assert_equal 'child1', result.name
|
88
|
-
end
|
89
|
-
|
90
|
-
# def test_append_to
|
91
|
-
# pend
|
92
|
-
# end
|
93
|
-
|
94
|
-
# def test_insert_children
|
95
|
-
# pend
|
96
|
-
# end
|
97
|
-
|
98
|
-
# def test_remove
|
99
|
-
# pend
|
100
|
-
# end
|
101
|
-
|
102
|
-
# def test_parent_prop
|
103
|
-
# pend
|
104
|
-
# end
|
105
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
# warning: execute this in a real terminal (not in vscode's) because of performance
|
2
|
-
|
3
|
-
require_relative '../../src/widget/button'
|
4
|
-
require_relative '../../src/screen'
|
5
|
-
require_relative '../../src/util'
|
6
|
-
|
7
|
-
def test(timeout: 3, box_count: 80, interval: 0.01, render_count: 1, screen_width: 120, screen_height: 32, text_length: 5, no_buffer: false)
|
8
|
-
t0 = Time.now
|
9
|
-
i = 0
|
10
|
-
s = Screen.new(width: screen_width, height: screen_height)
|
11
|
-
s.renderer.no_buffer = no_buffer
|
12
|
-
s.set_timeout(timeout) do
|
13
|
-
config = {
|
14
|
-
timeout: timeout, box_count: box_count, interval: interval, render_count: render_count, screen_width:
|
15
|
-
screen_width, screen_height: screen_height, text_length: text_length, no_buffer: no_buffer
|
16
|
-
}
|
17
|
-
s.clear
|
18
|
-
s.destroy
|
19
|
-
print_string "\r
|
20
|
-
Iteration ##{i} \r
|
21
|
-
Time: #{Time.now - t0} \r
|
22
|
-
Config: #{config} \r"
|
23
|
-
end
|
24
|
-
|
25
|
-
draw = proc {
|
26
|
-
box_count.times do |j|
|
27
|
-
s.append_child Button.new(x: random_int(2, s.width - 20),
|
28
|
-
y: random_int(1, s.height - 4), text: "button#{j}",
|
29
|
-
style: { bg: random_color, fg: random_color, border: { style: 'single', fg: random_color } })
|
30
|
-
end
|
31
|
-
}
|
32
|
-
step = proc {
|
33
|
-
i += 1
|
34
|
-
s.empty
|
35
|
-
s.clear
|
36
|
-
draw.call
|
37
|
-
l = s.append_child Label.new(text: "iteration ##{i} **")
|
38
|
-
render_count.times { s.render }
|
39
|
-
s.set_timeout(interval) do
|
40
|
-
step.call
|
41
|
-
end
|
42
|
-
}
|
43
|
-
step.call
|
44
|
-
s.start
|
45
|
-
end
|
46
|
-
|
47
|
-
test(render_count: 10, no_buffer: true)
|
48
|
-
# test(screen_width: nil, screen_height: nil)
|
data/test/renderer_test.rb
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
require_relative '../src/renderer'
|
2
|
-
require_relative '../src/util'
|
3
|
-
require 'test/unit'
|
4
|
-
include Test::Unit::Assertions
|
5
|
-
|
6
|
-
class RendererTest < Test::Unit::TestCase
|
7
|
-
def test_rect_stub
|
8
|
-
assert_include "\e[2;2Hllllllll" \
|
9
|
-
"\e[3;2Hllllllll" \
|
10
|
-
"\e[4;2Hllllllll" \
|
11
|
-
"\e[5;2Hllllllll" \
|
12
|
-
"\e[6;2Hllllllll", `ruby test/renderer_test_rect.rb`
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_rect
|
16
|
-
r = Renderer.new
|
17
|
-
s = r.rect x: 2, y: 1, width: 3, height: 2, ch: 'x'
|
18
|
-
assert_equal "\e[2;2Hxxx\e[3;2Hxxx", s
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_print
|
22
|
-
r2 = Renderer.new 10, 7
|
23
|
-
r2.rect x: 2, y: 1, width: 3, height: 2, ch: 'x'
|
24
|
-
assert_equal ' \\n' \
|
25
|
-
' xxx \\n' \
|
26
|
-
' xxx \\n' \
|
27
|
-
' \\n' \
|
28
|
-
' \\n' \
|
29
|
-
' \\n' \
|
30
|
-
' \\n', r2.print
|
31
|
-
|
32
|
-
r2.rect x: 4, y: 2, width: 2, height: 3, ch: 'y'
|
33
|
-
assert_equal ' \\n' \
|
34
|
-
' xxx \\n' \
|
35
|
-
' xxyy \\n' \
|
36
|
-
' yy \\n' \
|
37
|
-
' yy \\n' \
|
38
|
-
' \\n' \
|
39
|
-
' \\n', r2.print
|
40
|
-
r2.clear
|
41
|
-
assert_equal ' \\n' \
|
42
|
-
' \\n' \
|
43
|
-
' \\n' \
|
44
|
-
' \\n' \
|
45
|
-
' \\n' \
|
46
|
-
' \\n' \
|
47
|
-
' \\n', r2.print
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_circle
|
51
|
-
s = Screen.new_for_testing(width: 30, height: 20)
|
52
|
-
s.circle(x: 10, y: 10, radius: 6, stroke: Style.new(bg: 'green', fg: 'red'), stroke_ch: 'x', fill: Style.new(bg: 'blue'), fill_ch: 'o')
|
53
|
-
assert_equal' \n' \
|
54
|
-
' \n' \
|
55
|
-
' \n' \
|
56
|
-
' \n' \
|
57
|
-
' xxxxx \n' \
|
58
|
-
' xooooox \n' \
|
59
|
-
' xooooooox \n' \
|
60
|
-
' xooooooooox \n' \
|
61
|
-
' xooooooooooox \n' \
|
62
|
-
' xooooooooooox \n' \
|
63
|
-
' xooooooooooox \n' \
|
64
|
-
' xooooooooooox \n' \
|
65
|
-
' xooooooooooox \n' \
|
66
|
-
' xooooooooox \n' \
|
67
|
-
' xooooooox \n' \
|
68
|
-
' xooooox \n' \
|
69
|
-
' xxxxx \n' \
|
70
|
-
' \n' \
|
71
|
-
' \n' \
|
72
|
-
' \n', s.print
|
73
|
-
end
|
74
|
-
end
|