vedeu 0.4.13 → 0.4.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -1
- data/.travis.yml +2 -1
- data/Guardfile +6 -5
- data/README.md +3 -30
- data/Rakefile +5 -5
- data/bin/vedeu_drb_client +1 -1
- data/bin/vedeu_drb_server +91 -89
- data/bin/vedeu_test +4 -0
- data/config/rubocop_enabled.yml +5 -10
- data/examples/borders_app.rb +2 -1
- data/examples/colours_app.rb +13 -8
- data/examples/configuration_app.rb +3 -2
- data/examples/cursor_app.rb +16 -11
- data/examples/drb_app.rb +88 -89
- data/examples/focus_app.rb +31 -32
- data/examples/geometry_app.rb +2 -1
- data/examples/hello_world.rb +2 -1
- data/examples/lines_app.rb +2 -1
- data/examples/material_colours_app.rb +126 -0
- data/examples/typed_commands/typed_commands_app.rb +5 -1
- data/examples/view_templates_app/view_templates_app.rb +6 -3
- data/lib/vedeu/all.rb +1 -1
- data/lib/vedeu/api.rb +18 -10
- data/lib/vedeu/application.rb +0 -1
- data/lib/vedeu/bindings.rb +77 -16
- data/lib/vedeu/buffers/all.rb +2 -5
- data/lib/vedeu/buffers/buffer.rb +69 -25
- data/lib/vedeu/buffers/display_buffer.rb +3 -7
- data/lib/vedeu/configuration/all.rb +3 -6
- data/lib/vedeu/configuration/api.rb +28 -4
- data/lib/vedeu/configuration/cli.rb +9 -9
- data/lib/vedeu/configuration/configuration.rb +11 -7
- data/lib/vedeu/cursor/all.rb +3 -6
- data/lib/vedeu/cursor/cursor.rb +22 -14
- data/lib/vedeu/cursor/move.rb +32 -22
- data/lib/vedeu/cursor/refresh_cursor.rb +1 -1
- data/lib/vedeu/debug.rb +2 -1
- data/lib/vedeu/distributed/client.rb +1 -7
- data/lib/vedeu/distributed/server.rb +0 -4
- data/lib/vedeu/distributed/subprocess.rb +1 -1
- data/lib/vedeu/distributed/templates/default_configuration.vedeu +1 -1
- data/lib/vedeu/distributed/test_application.rb +3 -5
- data/lib/vedeu/distributed/uri.rb +2 -2
- data/lib/vedeu/dsl/all.rb +6 -6
- data/lib/vedeu/dsl/components/all.rb +0 -3
- data/lib/vedeu/dsl/components/border.rb +20 -12
- data/lib/vedeu/dsl/components/geometry.rb +68 -3
- data/lib/vedeu/dsl/components/keymap.rb +1 -2
- data/lib/vedeu/dsl/composition.rb +8 -1
- data/lib/vedeu/dsl/interface.rb +61 -11
- data/lib/vedeu/dsl/line.rb +12 -12
- data/lib/vedeu/dsl/shared/all.rb +4 -7
- data/lib/vedeu/dsl/shared/colour.rb +2 -2
- data/lib/vedeu/dsl/shared/text.rb +2 -35
- data/lib/vedeu/dsl/shared/use.rb +2 -2
- data/lib/vedeu/dsl/view.rb +4 -4
- data/lib/vedeu/events/all.rb +3 -5
- data/lib/vedeu/events/event.rb +5 -5
- data/lib/vedeu/geometry/all.rb +11 -16
- data/lib/vedeu/geometry/area.rb +2 -5
- data/lib/vedeu/geometry/canvas.rb +12 -16
- data/lib/vedeu/geometry/dimension.rb +20 -22
- data/lib/vedeu/geometry/geometry.rb +28 -30
- data/lib/vedeu/geometry/grid.rb +1 -1
- data/lib/vedeu/geometry/index_position.rb +7 -0
- data/lib/vedeu/geometry/null_geometry.rb +61 -0
- data/lib/vedeu/geometry/position.rb +0 -3
- data/lib/vedeu/geometry/position_index.rb +7 -0
- data/lib/vedeu/geometry/position_validator.rb +44 -33
- data/lib/vedeu/input/all.rb +5 -4
- data/lib/vedeu/input/keymap.rb +0 -1
- data/lib/vedeu/input/mapper.rb +1 -3
- data/lib/vedeu/launcher.rb +6 -7
- data/lib/vedeu/main_loop.rb +1 -2
- data/lib/vedeu/models/all.rb +1 -0
- data/lib/vedeu/models/cell.rb +5 -8
- data/lib/vedeu/models/char.rb +50 -15
- data/lib/vedeu/models/composition.rb +8 -1
- data/lib/vedeu/models/focus.rb +4 -4
- data/lib/vedeu/models/group.rb +3 -3
- data/lib/vedeu/models/interface.rb +62 -46
- data/lib/vedeu/models/line.rb +1 -1
- data/lib/vedeu/models/null.rb +48 -0
- data/lib/vedeu/models/stream.rb +5 -5
- data/lib/vedeu/output/all.rb +20 -30
- data/lib/vedeu/output/border.rb +93 -40
- data/lib/vedeu/output/clear.rb +100 -15
- data/lib/vedeu/output/colour.rb +56 -12
- data/lib/vedeu/output/compressor.rb +59 -0
- data/lib/vedeu/output/html_char.rb +4 -2
- data/lib/vedeu/output/null_border.rb +16 -4
- data/lib/vedeu/output/output.rb +13 -21
- data/lib/vedeu/output/presentation.rb +28 -23
- data/lib/vedeu/output/refresh.rb +2 -2
- data/lib/vedeu/output/renderers/all.rb +80 -3
- data/lib/vedeu/output/renderers/file_renderer.rb +38 -2
- data/lib/vedeu/output/renderers/html_renderer.rb +6 -4
- data/lib/vedeu/output/renderers/json_renderer.rb +52 -0
- data/lib/vedeu/output/renderers/null_renderer.rb +14 -0
- data/lib/vedeu/output/renderers/terminal_renderer.rb +2 -12
- data/lib/vedeu/output/style.rb +33 -3
- data/lib/vedeu/output/text.rb +98 -1
- data/lib/vedeu/output/translator.rb +30 -7
- data/lib/vedeu/output/viewport.rb +43 -79
- data/lib/vedeu/output/wordwrap.rb +4 -4
- data/lib/vedeu/repositories/all.rb +22 -179
- data/lib/vedeu/repositories/collection.rb +11 -13
- data/lib/vedeu/repositories/collections/all.rb +8 -0
- data/lib/vedeu/repositories/collections/chars.rb +9 -0
- data/lib/vedeu/repositories/collections/events.rb +9 -0
- data/lib/vedeu/repositories/collections/interfaces.rb +9 -0
- data/lib/vedeu/repositories/collections/keys.rb +9 -0
- data/lib/vedeu/repositories/collections/lines.rb +9 -0
- data/lib/vedeu/repositories/collections/streams.rb +9 -0
- data/lib/vedeu/repositories/model.rb +7 -2
- data/lib/vedeu/repositories/repositories/all.rb +14 -0
- data/lib/vedeu/repositories/repositories/background_colours.rb +14 -0
- data/lib/vedeu/repositories/repositories/borders.rb +38 -0
- data/lib/vedeu/repositories/repositories/buffers.rb +36 -0
- data/lib/vedeu/repositories/repositories/colours.rb +63 -0
- data/lib/vedeu/repositories/repositories/cursors.rb +29 -0
- data/lib/vedeu/repositories/repositories/events_repository.rb +24 -0
- data/lib/vedeu/repositories/repositories/foreground_colours.rb +14 -0
- data/lib/vedeu/repositories/repositories/geometries.rb +37 -0
- data/lib/vedeu/repositories/repositories/groups.rb +24 -0
- data/lib/vedeu/repositories/repositories/interfaces_repository.rb +24 -0
- data/lib/vedeu/repositories/repositories/keymaps.rb +24 -0
- data/lib/vedeu/repositories/repositories/menus.rb +24 -0
- data/lib/vedeu/repositories/repository.rb +29 -47
- data/lib/vedeu/storage/all.rb +6 -0
- data/lib/vedeu/storage/associative_store.rb +47 -0
- data/lib/vedeu/storage/conveyor_store.rb +69 -0
- data/lib/vedeu/storage/fifo_store.rb +37 -0
- data/lib/vedeu/storage/store.rb +58 -0
- data/lib/vedeu/support/all.rb +5 -10
- data/lib/vedeu/support/common.rb +0 -8
- data/lib/vedeu/support/log.rb +13 -24
- data/lib/vedeu/support/template.rb +4 -1
- data/lib/vedeu/support/terminal.rb +10 -10
- data/lib/vedeu/support/trace.rb +15 -88
- data/lib/vedeu/support/visibility.rb +73 -0
- data/lib/vedeu.rb +37 -0
- data/test/lib/vedeu/api_test.rb +7 -3
- data/test/lib/vedeu/application_test.rb +9 -3
- data/test/lib/vedeu/bindings_test.rb +21 -0
- data/test/lib/vedeu/buffers/buffer_test.rb +110 -134
- data/test/lib/vedeu/buffers/display_buffer_test.rb +8 -0
- data/test/lib/vedeu/configuration/api_test.rb +5 -1
- data/test/lib/vedeu/configuration/configuration_test.rb +4 -6
- data/test/lib/vedeu/cursor/cursor_test.rb +25 -17
- data/test/lib/vedeu/cursor/move_test.rb +7 -7
- data/test/lib/vedeu/distributed/client_test.rb +1 -1
- data/test/lib/vedeu/distributed/subprocess_test.rb +3 -1
- data/test/lib/vedeu/distributed/uri_test.rb +5 -5
- data/test/lib/vedeu/dsl/components/geometry_test.rb +43 -0
- data/test/lib/vedeu/dsl/components/keymap_test.rb +1 -1
- data/test/lib/vedeu/dsl/composition_test.rb +6 -5
- data/test/lib/vedeu/dsl/interface_test.rb +81 -16
- data/test/lib/vedeu/dsl/shared/colour_test.rb +4 -4
- data/test/lib/vedeu/dsl/shared/text_test.rb +87 -9
- data/test/lib/vedeu/dsl/stream_test.rb +1 -1
- data/test/lib/vedeu/events/event_test.rb +3 -1
- data/test/lib/vedeu/events/trigger_test.rb +8 -4
- data/test/lib/vedeu/geometry/dimension_test.rb +1 -1
- data/test/lib/vedeu/geometry/geometry_test.rb +5 -3
- data/test/lib/vedeu/geometry/index_position_test.rb +30 -7
- data/test/lib/vedeu/geometry/null_geometry_test.rb +57 -0
- data/test/lib/vedeu/geometry/position_index_test.rb +14 -0
- data/test/lib/vedeu/geometry/position_validator_test.rb +17 -3
- data/test/lib/vedeu/input/keymap_test.rb +3 -1
- data/test/lib/vedeu/input/mapper_test.rb +8 -4
- data/test/lib/vedeu/launcher_test.rb +1 -1
- data/test/lib/vedeu/models/cell_test.rb +10 -8
- data/test/lib/vedeu/models/char_test.rb +52 -28
- data/test/lib/vedeu/models/composition_test.rb +26 -4
- data/test/lib/vedeu/models/group_test.rb +11 -5
- data/test/lib/vedeu/models/interface_test.rb +32 -19
- data/test/lib/vedeu/models/line_test.rb +21 -25
- data/test/lib/vedeu/models/menu_test.rb +10 -6
- data/test/lib/vedeu/models/null_test.rb +66 -0
- data/test/lib/vedeu/models/stream_test.rb +13 -10
- data/test/lib/vedeu/output/border_test.rb +29 -8
- data/test/lib/vedeu/output/clear_test.rb +23 -4
- data/test/lib/vedeu/output/colour_test.rb +20 -4
- data/test/lib/vedeu/output/compressor_test.rb +43 -0
- data/test/lib/vedeu/output/html_char_test.rb +29 -17
- data/test/lib/vedeu/output/null_border_test.rb +2 -1
- data/test/lib/vedeu/output/output_test.rb +20 -30
- data/test/lib/vedeu/output/presentation_test.rb +39 -16
- data/test/lib/vedeu/output/refresh_test.rb +14 -10
- data/test/lib/vedeu/output/renderers/all_test.rb +96 -0
- data/test/lib/vedeu/output/renderers/file_renderer_test.rb +1 -1
- data/test/lib/vedeu/output/renderers/html_renderer_test.rb +13 -9
- data/test/lib/vedeu/output/renderers/json_renderer_test.rb +52 -0
- data/test/lib/vedeu/output/renderers/null_renderer_test.rb +19 -0
- data/test/lib/vedeu/output/style_test.rb +41 -1
- data/test/lib/vedeu/output/text_test.rb +61 -10
- data/test/lib/vedeu/output/translator_test.rb +14 -0
- data/test/lib/vedeu/output/viewport_test.rb +22 -3
- data/test/lib/vedeu/output/virtual_terminal_test.rb +3 -3
- data/test/lib/vedeu/output/wordwrap_test.rb +58 -45
- data/test/lib/vedeu/repositories/collections/chars_test.rb +16 -0
- data/test/lib/vedeu/repositories/collections/events_test.rb +16 -0
- data/test/lib/vedeu/repositories/collections/interfaces_test.rb +16 -0
- data/test/lib/vedeu/repositories/collections/keys_test.rb +16 -0
- data/test/lib/vedeu/repositories/collections/lines_test.rb +16 -0
- data/test/lib/vedeu/repositories/collections/streams_test.rb +16 -0
- data/test/lib/vedeu/repositories/repositories/background_colours_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/borders_test.rb +51 -0
- data/test/lib/vedeu/repositories/repositories/buffers_test.rb +52 -0
- data/test/lib/vedeu/repositories/repositories/colours_test.rb +16 -0
- data/test/lib/vedeu/repositories/repositories/cursors_test.rb +39 -0
- data/test/lib/vedeu/repositories/repositories/events_repository_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/foreground_colours_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/geometries_test.rb +42 -0
- data/test/lib/vedeu/repositories/repositories/groups_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/interfaces_repositories_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/keymaps_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/menus_test.rb +17 -0
- data/test/lib/vedeu/repositories/repository_test.rb +16 -36
- data/test/lib/vedeu/storage/associative_store_test.rb +69 -0
- data/test/lib/vedeu/storage/conveyor_store_test.rb +135 -0
- data/test/lib/vedeu/storage/fifo_store_test.rb +47 -0
- data/test/lib/vedeu/storage/store_test.rb +123 -0
- data/test/lib/vedeu/support/common_test.rb +0 -9
- data/test/lib/vedeu/support/terminal_test.rb +78 -55
- data/test/lib/vedeu/support/visibility_test.rb +80 -0
- data/test/test_helper.rb +13 -11
- data/vedeu.gemspec +4 -3
- metadata +92 -32
- data/lib/vedeu/cursor/toggle.rb +0 -55
- data/lib/vedeu/exceptions.rb +0 -37
- data/lib/vedeu/geometry/centre.rb +0 -85
- data/lib/vedeu/geometry/content.rb +0 -70
- data/lib/vedeu/geometry/limit.rb +0 -58
- data/lib/vedeu/output/compositor.rb +0 -62
- data/lib/vedeu/repositories/collections.rb +0 -41
- data/lib/vedeu/support/coercions.rb +0 -60
- data/lib/vedeu/support/sentence.rb +0 -91
- data/lib/vedeu/support/visible.rb +0 -90
- data/test/lib/vedeu/cursor/toggle_test.rb +0 -63
- data/test/lib/vedeu/geometry/centre_test.rb +0 -58
- data/test/lib/vedeu/geometry/content_test.rb +0 -98
- data/test/lib/vedeu/geometry/limit_test.rb +0 -30
- data/test/lib/vedeu/output/compositor_test.rb +0 -48
- data/test/lib/vedeu/repositories/all_test.rb +0 -135
- data/test/lib/vedeu/repositories/collections_test.rb +0 -71
- data/test/lib/vedeu/support/coercions_test.rb +0 -84
- data/test/lib/vedeu/support/sentence_test.rb +0 -56
- data/test/lib/vedeu/support/visible_test.rb +0 -161
@@ -17,13 +17,53 @@ module Vedeu
|
|
17
17
|
it { instance.instance_variable_get('@value').must_equal('bold') }
|
18
18
|
end
|
19
19
|
|
20
|
+
describe '.coerce' do
|
21
|
+
let(:value) { 'bold' }
|
22
|
+
|
23
|
+
subject { described.coerce(value) }
|
24
|
+
|
25
|
+
it { subject.must_be_instance_of(described) }
|
26
|
+
|
27
|
+
context 'when the value is nil' do
|
28
|
+
let(:value) { nil }
|
29
|
+
|
30
|
+
it { subject.must_be_instance_of(described) }
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'when the value is a Style already' do
|
34
|
+
let(:value) { Vedeu::Style.new('bold') }
|
35
|
+
|
36
|
+
it { subject.must_equal(value) }
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'when the value is an Array' do
|
40
|
+
let(:value) { [:bold, :blink] }
|
41
|
+
|
42
|
+
it { subject.value.must_equal([:bold, :blink]) }
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
20
46
|
describe '#attributes' do
|
21
47
|
subject { instance.attributes }
|
22
48
|
|
23
49
|
it { subject.must_be_instance_of(Hash) }
|
24
50
|
|
25
51
|
it 'returns an attributes hash for this instance' do
|
26
|
-
subject.must_equal(
|
52
|
+
subject.must_equal(style: 'bold')
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe '#eql?' do
|
57
|
+
let(:other) { instance }
|
58
|
+
|
59
|
+
subject { instance.eql?(other) }
|
60
|
+
|
61
|
+
it { subject.must_equal(true) }
|
62
|
+
|
63
|
+
context 'when different to other' do
|
64
|
+
let(:other) { described.new('underline') }
|
65
|
+
|
66
|
+
it { subject.must_equal(false) }
|
27
67
|
end
|
28
68
|
end
|
29
69
|
|
@@ -4,25 +4,32 @@ module Vedeu
|
|
4
4
|
|
5
5
|
describe Text do
|
6
6
|
|
7
|
-
let(:
|
8
|
-
let(:
|
7
|
+
let(:described) { Vedeu::Text }
|
8
|
+
let(:value) { 'Testing the Text class with various options' }
|
9
|
+
let(:options) {
|
9
10
|
{
|
10
11
|
anchor: anchor,
|
12
|
+
colour: colour,
|
13
|
+
model: model,
|
11
14
|
pad: pad,
|
12
15
|
width: width,
|
13
16
|
}
|
14
17
|
}
|
15
18
|
let(:anchor) { :left }
|
19
|
+
let(:colour) { nil }
|
20
|
+
let(:model) { nil }
|
16
21
|
let(:pad) { ' ' }
|
17
22
|
let(:width) { nil }
|
18
23
|
|
19
24
|
describe '.with' do
|
25
|
+
subject { described.with(value, options) }
|
26
|
+
|
20
27
|
context 'when a width is provided' do
|
21
28
|
context 'when value longer than the width' do
|
22
29
|
let(:width) { 23 }
|
23
30
|
|
24
31
|
it 'returns the value truncated' do
|
25
|
-
|
32
|
+
subject.must_equal('Testing the Text class ')
|
26
33
|
end
|
27
34
|
end
|
28
35
|
|
@@ -31,14 +38,14 @@ module Vedeu
|
|
31
38
|
|
32
39
|
context 'and an anchor is not set' do
|
33
40
|
it 'returns the value left aligned' do
|
34
|
-
|
41
|
+
subject
|
35
42
|
.must_equal('Testing the Text class with various options ')
|
36
43
|
end
|
37
44
|
end
|
38
45
|
|
39
46
|
context 'and the anchor is set to :left' do
|
40
47
|
it 'returns the value left aligned' do
|
41
|
-
|
48
|
+
subject
|
42
49
|
.must_equal('Testing the Text class with various options ')
|
43
50
|
end
|
44
51
|
end
|
@@ -47,7 +54,7 @@ module Vedeu
|
|
47
54
|
let(:anchor) { :align }
|
48
55
|
|
49
56
|
it 'returns the value left aligned' do
|
50
|
-
|
57
|
+
subject
|
51
58
|
.must_equal('Testing the Text class with various options ')
|
52
59
|
end
|
53
60
|
end
|
@@ -56,7 +63,7 @@ module Vedeu
|
|
56
63
|
let(:anchor) { :centre }
|
57
64
|
|
58
65
|
it 'returns the value centre aligned' do
|
59
|
-
|
66
|
+
subject
|
60
67
|
.must_equal(' Testing the Text class with various options ')
|
61
68
|
end
|
62
69
|
end
|
@@ -65,7 +72,7 @@ module Vedeu
|
|
65
72
|
let(:anchor) { :right }
|
66
73
|
|
67
74
|
it 'returns the value right aligned' do
|
68
|
-
|
75
|
+
subject
|
69
76
|
.must_equal(' Testing the Text class with various options')
|
70
77
|
end
|
71
78
|
end
|
@@ -74,7 +81,7 @@ module Vedeu
|
|
74
81
|
let(:anchor) { :invalid }
|
75
82
|
|
76
83
|
it 'returns the value left aligned' do
|
77
|
-
|
84
|
+
subject
|
78
85
|
.must_equal('Testing the Text class with various options ')
|
79
86
|
end
|
80
87
|
end
|
@@ -82,12 +89,56 @@ module Vedeu
|
|
82
89
|
end
|
83
90
|
|
84
91
|
context 'when a width is not provided' do
|
92
|
+
let(:width) {}
|
93
|
+
let(:value) { 'some value' }
|
94
|
+
|
85
95
|
it 'returns the value as a string' do
|
86
|
-
|
96
|
+
subject.must_equal('some value')
|
87
97
|
end
|
88
98
|
end
|
89
99
|
end
|
90
100
|
|
101
|
+
describe '.add' do
|
102
|
+
subject { described.add(value, options) }
|
103
|
+
|
104
|
+
context 'when the model is a Vedeu::Interface' do
|
105
|
+
let(:model) { Vedeu::Interface.new }
|
106
|
+
|
107
|
+
it { subject.must_be_instance_of(Vedeu::Lines) }
|
108
|
+
end
|
109
|
+
|
110
|
+
context 'when the model is a Vedeu::Line' do
|
111
|
+
let(:model) { Vedeu::Line.new }
|
112
|
+
|
113
|
+
it { subject.must_be_instance_of(Vedeu::Streams) }
|
114
|
+
end
|
115
|
+
|
116
|
+
context 'when the model is a Vedeu::Stream' do
|
117
|
+
let(:parent) { Vedeu::Line.new }
|
118
|
+
let(:model) { Vedeu::Stream.new(parent: parent) }
|
119
|
+
|
120
|
+
it { subject.must_be_instance_of(Vedeu::Streams) }
|
121
|
+
end
|
122
|
+
|
123
|
+
context 'when the model is not given' do
|
124
|
+
let(:model) {}
|
125
|
+
|
126
|
+
it { subject.must_be_instance_of(NilClass) }
|
127
|
+
end
|
128
|
+
|
129
|
+
context 'when the colour option is given' do
|
130
|
+
let(:colour) {}
|
131
|
+
end
|
132
|
+
|
133
|
+
context 'when the background and/or foreground options are given' do
|
134
|
+
let(:background) { '#111111' }
|
135
|
+
let(:foreground) { '#aadd00' }
|
136
|
+
|
137
|
+
|
138
|
+
end
|
139
|
+
|
140
|
+
end
|
141
|
+
|
91
142
|
end # Text
|
92
143
|
|
93
144
|
end # Vedeu
|
@@ -17,6 +17,20 @@ module Vedeu
|
|
17
17
|
it { instance.instance_variable_get('@colour').must_equal(colour) }
|
18
18
|
end
|
19
19
|
|
20
|
+
describe '#eql?' do
|
21
|
+
let(:other) { instance }
|
22
|
+
|
23
|
+
subject { instance.eql?(other) }
|
24
|
+
|
25
|
+
it { subject.must_equal(true) }
|
26
|
+
|
27
|
+
context 'when different to other' do
|
28
|
+
let(:other) { described.new('#ff00ff') }
|
29
|
+
|
30
|
+
it { subject.must_equal(false) }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
20
34
|
describe '#escape_sequence' do
|
21
35
|
subject { instance.escape_sequence }
|
22
36
|
|
@@ -20,18 +20,36 @@ module Vedeu
|
|
20
20
|
line 'nickel'
|
21
21
|
line 'osmium'
|
22
22
|
end
|
23
|
+
visible(visibility)
|
23
24
|
end
|
24
25
|
}
|
26
|
+
let(:visibility) { true }
|
25
27
|
|
26
28
|
describe '#initialize' do
|
27
29
|
it { instance.must_be_instance_of(Viewport) }
|
28
30
|
it { instance.instance_variable_get('@interface').must_equal(interface) }
|
29
31
|
end
|
30
32
|
|
33
|
+
describe '.render' do
|
34
|
+
subject { described.render(interface) }
|
35
|
+
|
36
|
+
context 'when the interface is visible' do
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'when the interface is not visible' do
|
41
|
+
let(:visibility) { false }
|
42
|
+
|
43
|
+
it { subject.must_be_instance_of(Array) }
|
44
|
+
|
45
|
+
it { subject.must_equal([]) }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
31
49
|
describe '#render' do
|
32
50
|
let(:cursor) { Cursor.new(cursor_attributes) }
|
33
51
|
let(:cursor_attributes) {
|
34
|
-
{ name: 'lithium', ox: ox, oy: oy,
|
52
|
+
{ name: 'lithium', ox: ox, oy: oy, visible: true, x: x, y: y }
|
35
53
|
}
|
36
54
|
let(:lines) { [] }
|
37
55
|
let(:ox) { 0 }
|
@@ -57,7 +75,7 @@ module Vedeu
|
|
57
75
|
# describe '#to_s' do
|
58
76
|
# let(:cursor) { Cursor.new(cursor_attributes) }
|
59
77
|
# let(:cursor_attributes) {
|
60
|
-
# { name: 'lithium', ox: ox, oy: oy,
|
78
|
+
# { name: 'lithium', ox: ox, oy: oy, visible: true, x: x, y: y }
|
61
79
|
# }
|
62
80
|
# let(:lines) { [] }
|
63
81
|
# let(:ox) { 0 }
|
@@ -80,7 +98,8 @@ module Vedeu
|
|
80
98
|
# end
|
81
99
|
|
82
100
|
# context 'when there is content' do
|
83
|
-
# context "when the cursor's y position is outside the viewable
|
101
|
+
# context "when the cursor's y position is outside the viewable " \
|
102
|
+
# "area - negative" do
|
84
103
|
# let(:ox) { -4 }
|
85
104
|
# let(:oy) { -4 }
|
86
105
|
|
@@ -16,7 +16,7 @@ module Vedeu
|
|
16
16
|
it { instance.must_be_instance_of(Vedeu::VirtualTerminal) }
|
17
17
|
it { instance.instance_variable_get('@height').must_equal(3) }
|
18
18
|
it { instance.instance_variable_get('@width').must_equal(3) }
|
19
|
-
it { instance.instance_variable_get('@renderer').must_equal(
|
19
|
+
it { instance.instance_variable_get('@renderer').must_equal(renderer) }
|
20
20
|
end
|
21
21
|
|
22
22
|
describe 'attr_accessor' do
|
@@ -26,7 +26,7 @@ module Vedeu
|
|
26
26
|
it { subject.must_equal(Vedeu::HTMLRenderer) }
|
27
27
|
end
|
28
28
|
context '#renderer=' do
|
29
|
-
subject { instance.renderer=(Vedeu::FakeRenderer) }
|
29
|
+
subject { instance.renderer = (Vedeu::FakeRenderer) }
|
30
30
|
|
31
31
|
it { subject.must_equal(Vedeu::FakeRenderer) }
|
32
32
|
end
|
@@ -103,7 +103,7 @@ module Vedeu
|
|
103
103
|
end
|
104
104
|
|
105
105
|
describe '#write' do
|
106
|
-
let(:data) { Vedeu::Char.new(
|
106
|
+
let(:data) { Vedeu::Char.new(value: 'a') }
|
107
107
|
|
108
108
|
subject { instance.write(y, x, data) }
|
109
109
|
|
@@ -22,8 +22,8 @@ module Vedeu
|
|
22
22
|
}
|
23
23
|
let(:text_block) {
|
24
24
|
"Krypton (from Greek: κρυπτός kryptos 'the hidden one') is a chemical " \
|
25
|
-
|
26
|
-
|
25
|
+
'element with symbol Kr and atomic number 36. It is a member of group ' \
|
26
|
+
'18 (noble gases) elements.'
|
27
27
|
}
|
28
28
|
let(:text_newlines) {
|
29
29
|
"Krypton is a colorless, odorless, tasteless noble gas.\n" \
|
@@ -35,14 +35,27 @@ module Vedeu
|
|
35
35
|
"Krypton (from Greek: κρυπτός kryptos 'the hidden one').\n\n" \
|
36
36
|
"It is a chemical element with symbol Kr and atomic number 36.\n" \
|
37
37
|
"It is a member of group 18 (noble gases) elements.\n\n" \
|
38
|
-
|
38
|
+
'-- Wikipedia'
|
39
39
|
}
|
40
40
|
let(:text_line_objects) {
|
41
41
|
[
|
42
|
-
Vedeu::Line.new(
|
43
|
-
|
44
|
-
|
45
|
-
|
42
|
+
Vedeu::Line.new(streams: [
|
43
|
+
Vedeu::Stream.new(
|
44
|
+
value: 'Krypton is a colorless, odorless, tasteless noble gas.'
|
45
|
+
)]),
|
46
|
+
Vedeu::Line.new(streams: [
|
47
|
+
Vedeu::Stream.new(
|
48
|
+
value: 'It occurs in trace amounts in the atmosphere.'
|
49
|
+
)]),
|
50
|
+
Vedeu::Line.new(streams: [
|
51
|
+
Vedeu::Stream.new(
|
52
|
+
value: 'It is isolated by fractionally distilling liquefied air.'
|
53
|
+
)]),
|
54
|
+
Vedeu::Line.new(streams: [
|
55
|
+
Vedeu::Stream.new(
|
56
|
+
value: 'Krypton is often used with other rare gases in ' \
|
57
|
+
'fluorescent lamps.'
|
58
|
+
)])
|
46
59
|
]
|
47
60
|
}
|
48
61
|
|
@@ -69,23 +82,23 @@ module Vedeu
|
|
69
82
|
|
70
83
|
context 'when the text is > the pruning width' do
|
71
84
|
context 'with a single line of text' do
|
72
|
-
it { subject.must_equal(
|
85
|
+
it { subject.must_equal('Krypton (from Greek: κρυπτός...') }
|
73
86
|
end
|
74
87
|
|
75
88
|
context 'with a text block' do
|
76
89
|
let(:text) { text_block }
|
77
90
|
|
78
|
-
it { subject.must_equal(
|
91
|
+
it { subject.must_equal('Krypton (from Greek: κρυπτός...') }
|
79
92
|
end
|
80
93
|
|
81
94
|
context 'with a text block containing newlines' do
|
82
95
|
let(:text) { text_newlines }
|
83
96
|
|
84
97
|
it { subject.must_equal([
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
98
|
+
'Krypton is a colorless, odor...',
|
99
|
+
'It occurs in trace amounts i...',
|
100
|
+
'It is isolated by fractional...',
|
101
|
+
'Krypton is often used with o...'
|
89
102
|
])
|
90
103
|
}
|
91
104
|
end
|
@@ -94,12 +107,12 @@ module Vedeu
|
|
94
107
|
let(:text) { text_blanklines }
|
95
108
|
|
96
109
|
it { subject.must_equal([
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
110
|
+
'Krypton (from Greek: κρυπτός...',
|
111
|
+
'',
|
112
|
+
'It is a chemical element wit...',
|
113
|
+
'It is a member of group 18 (...',
|
114
|
+
'',
|
115
|
+
'-- Wikipedia...'
|
103
116
|
])
|
104
117
|
}
|
105
118
|
end
|
@@ -113,7 +126,7 @@ module Vedeu
|
|
113
126
|
let(:text) { text_line }
|
114
127
|
|
115
128
|
it { subject.must_equal([
|
116
|
-
|
129
|
+
'Krypton (from Greek: κρυπτός',
|
117
130
|
"kryptos 'the hidden one')."
|
118
131
|
])
|
119
132
|
}
|
@@ -123,12 +136,12 @@ module Vedeu
|
|
123
136
|
let(:text) { text_block }
|
124
137
|
|
125
138
|
it { subject.must_equal([
|
126
|
-
|
139
|
+
'Krypton (from Greek: κρυπτός',
|
127
140
|
"kryptos 'the hidden one') is",
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
141
|
+
'a chemical element with',
|
142
|
+
'symbol Kr and atomic number',
|
143
|
+
'36. It is a member of group',
|
144
|
+
'18 (noble gases) elements.'
|
132
145
|
])
|
133
146
|
}
|
134
147
|
end
|
@@ -137,17 +150,17 @@ module Vedeu
|
|
137
150
|
let(:text) { text_newlines }
|
138
151
|
|
139
152
|
it { subject.must_equal([
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
153
|
+
'Krypton is a colorless,',
|
154
|
+
'odorless, tasteless noble',
|
155
|
+
'gas.',
|
156
|
+
'It occurs in trace amounts',
|
157
|
+
'in the atmosphere.',
|
158
|
+
'It is isolated by',
|
159
|
+
'fractionally distilling',
|
160
|
+
'liquefied air.',
|
161
|
+
'Krypton is often used with',
|
162
|
+
'other rare gases in',
|
163
|
+
'fluorescent lamps.'
|
151
164
|
])
|
152
165
|
}
|
153
166
|
end
|
@@ -156,16 +169,16 @@ module Vedeu
|
|
156
169
|
let(:text) { text_blanklines }
|
157
170
|
|
158
171
|
it { subject.must_equal([
|
159
|
-
|
172
|
+
'Krypton (from Greek: κρυπτός',
|
160
173
|
"kryptos 'the hidden one').",
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
174
|
+
'',
|
175
|
+
'It is a chemical element',
|
176
|
+
'with symbol Kr and atomic',
|
177
|
+
'number 36.',
|
178
|
+
'It is a member of group 18',
|
179
|
+
'(noble gases) elements.',
|
180
|
+
'',
|
181
|
+
'-- Wikipedia'
|
169
182
|
])
|
170
183
|
}
|
171
184
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
describe Chars do
|
6
|
+
|
7
|
+
let(:described) { Vedeu::Chars }
|
8
|
+
let(:instance) { described.new }
|
9
|
+
|
10
|
+
describe '#initialize' do
|
11
|
+
it { instance.must_be_instance_of(Vedeu::Chars) }
|
12
|
+
end
|
13
|
+
|
14
|
+
end # Chars
|
15
|
+
|
16
|
+
end # Vedeu
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
describe Events do
|
6
|
+
|
7
|
+
let(:described) { Vedeu::Events }
|
8
|
+
let(:instance) { described.new }
|
9
|
+
|
10
|
+
describe '#initialize' do
|
11
|
+
it { instance.must_be_instance_of(Vedeu::Events) }
|
12
|
+
end
|
13
|
+
|
14
|
+
end # Events
|
15
|
+
|
16
|
+
end # Vedeu
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
describe Interfaces do
|
6
|
+
|
7
|
+
let(:described) { Vedeu::Interfaces }
|
8
|
+
let(:instance) { described.new }
|
9
|
+
|
10
|
+
describe '#initialize' do
|
11
|
+
it { instance.must_be_instance_of(Vedeu::Interfaces) }
|
12
|
+
end
|
13
|
+
|
14
|
+
end # Interfaces
|
15
|
+
|
16
|
+
end # Vedeu
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
describe Keys do
|
6
|
+
|
7
|
+
let(:described) { Vedeu::Keys }
|
8
|
+
let(:instance) { described.new }
|
9
|
+
|
10
|
+
describe '#initialize' do
|
11
|
+
it { instance.must_be_instance_of(Vedeu::Keys) }
|
12
|
+
end
|
13
|
+
|
14
|
+
end # Keys
|
15
|
+
|
16
|
+
end # Vedeu
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
describe Lines do
|
6
|
+
|
7
|
+
let(:described) { Vedeu::Lines }
|
8
|
+
let(:instance) { described.new }
|
9
|
+
|
10
|
+
describe '#initialize' do
|
11
|
+
it { instance.must_be_instance_of(Vedeu::Lines) }
|
12
|
+
end
|
13
|
+
|
14
|
+
end # Lines
|
15
|
+
|
16
|
+
end # Vedeu
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
describe Streams do
|
6
|
+
|
7
|
+
let(:described) { Vedeu::Streams }
|
8
|
+
let(:instance) { described.new }
|
9
|
+
|
10
|
+
describe '#initialize' do
|
11
|
+
it { instance.must_be_instance_of(Vedeu::Streams) }
|
12
|
+
end
|
13
|
+
|
14
|
+
end # Streams
|
15
|
+
|
16
|
+
end # Vedeu
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
describe BackgroundColours do
|
6
|
+
|
7
|
+
let(:described) { Vedeu::BackgroundColours }
|
8
|
+
|
9
|
+
describe '.background_colours' do
|
10
|
+
subject { described.background_colours }
|
11
|
+
|
12
|
+
it { subject.must_be_instance_of(described) }
|
13
|
+
end
|
14
|
+
|
15
|
+
end # BackgroundColours
|
16
|
+
|
17
|
+
end # Vedeu
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
describe Borders do
|
6
|
+
|
7
|
+
let(:described) { Vedeu::Borders }
|
8
|
+
|
9
|
+
describe '.borders' do
|
10
|
+
subject { described.borders }
|
11
|
+
|
12
|
+
it { subject.must_be_instance_of(described) }
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#by_name' do
|
16
|
+
let(:_name) { 'carbon' }
|
17
|
+
|
18
|
+
subject { described.borders.by_name(_name) }
|
19
|
+
|
20
|
+
context 'when the border exists' do
|
21
|
+
before do
|
22
|
+
Vedeu.border 'carbon' do
|
23
|
+
end
|
24
|
+
end
|
25
|
+
after { Vedeu.borders.reset }
|
26
|
+
|
27
|
+
it { subject.must_be_instance_of(Vedeu::Border) }
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'when the border does not exist' do
|
31
|
+
let(:_name) { 'nitrogen' }
|
32
|
+
|
33
|
+
context 'and an interface with this name exists' do
|
34
|
+
before do
|
35
|
+
Vedeu.interface 'nitrogen' do
|
36
|
+
end
|
37
|
+
end
|
38
|
+
after { Vedeu.interfaces.reset }
|
39
|
+
|
40
|
+
it { subject.must_be_instance_of(Vedeu::NullBorder) }
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'and an interface with this name does not exist' do
|
44
|
+
it { subject.must_be_instance_of(NilClass) }
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end # Borders
|
50
|
+
|
51
|
+
end # Vedeu
|