vedeu 0.4.13 → 0.4.14
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/.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
|