vedeu 0.2.12 → 0.3.0
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/.ruby-version +1 -1
- data/Guardfile +13 -0
- data/README.md +11 -9
- data/Rakefile +10 -1
- data/bin/vedeu_test +14 -0
- data/config/cucumber.yml +8 -0
- data/docs/api.md +45 -16
- data/docs/events.md +21 -9
- data/docs/getting_started.md +16 -0
- data/docs/views.md +158 -0
- data/examples/borders_app.rb +236 -110
- data/examples/colour_support.sh +98 -0
- data/examples/colours_app.rb +41 -0
- data/examples/configuration_app.rb +11 -6
- data/examples/cursor_app.rb +60 -61
- data/examples/focus_app.rb +72 -34
- data/examples/hello_world.rb +13 -8
- data/examples/lines_app.rb +37 -28
- data/features/start_stop.feature +27 -0
- data/features/support/env.rb +14 -0
- data/lib/vedeu/all.rb +29 -0
- data/lib/vedeu/api.rb +39 -0
- data/lib/vedeu/application.rb +15 -7
- data/lib/vedeu/bindings.rb +121 -0
- data/lib/vedeu/buffers/all.rb +10 -0
- data/lib/vedeu/{repositories/models → buffers}/buffer.rb +47 -64
- data/lib/vedeu/buffers/display_buffer.rb +118 -0
- data/lib/vedeu/configuration/all.rb +6 -0
- data/lib/vedeu/configuration/api.rb +3 -1
- data/lib/vedeu/configuration/cli.rb +3 -1
- data/lib/vedeu/configuration/configuration.rb +23 -2
- data/lib/vedeu/cursor/all.rb +23 -0
- data/lib/vedeu/cursor/cursor.rb +116 -0
- data/lib/vedeu/cursor/move_cursor.rb +137 -0
- data/lib/vedeu/cursor/toggle_cursor.rb +53 -0
- data/lib/vedeu/dsl/all.rb +28 -0
- data/lib/vedeu/dsl/components/all.rb +7 -0
- data/lib/vedeu/dsl/components/border.rb +104 -0
- data/lib/vedeu/dsl/components/geometry.rb +153 -0
- data/lib/vedeu/dsl/components/keymap.rb +93 -0
- data/lib/vedeu/dsl/components/menu.rb +82 -0
- data/lib/vedeu/dsl/composition.rb +72 -0
- data/lib/vedeu/dsl/interface.rb +210 -0
- data/lib/vedeu/dsl/line.rb +135 -0
- data/lib/vedeu/dsl/shared/all.rb +7 -0
- data/lib/vedeu/dsl/shared/colour.rb +85 -0
- data/lib/vedeu/dsl/shared/style.rb +38 -0
- data/lib/vedeu/dsl/shared/text.rb +102 -0
- data/lib/vedeu/dsl/shared/use.rb +47 -0
- data/lib/vedeu/dsl/stream.rb +49 -0
- data/lib/vedeu/dsl/view.rb +136 -0
- data/lib/vedeu/events/all.rb +10 -0
- data/lib/vedeu/{repositories/models → events}/event.rb +97 -8
- data/lib/vedeu/events/trigger.rb +58 -0
- data/lib/vedeu/exceptions.rb +34 -0
- data/lib/vedeu/input/all.rb +29 -0
- data/lib/vedeu/input/input.rb +26 -0
- data/lib/vedeu/{models → input}/key.rb +21 -11
- data/lib/vedeu/input/keymap.rb +130 -0
- data/lib/vedeu/input/keys.rb +8 -0
- data/lib/vedeu/input/mapper.rb +112 -0
- data/lib/vedeu/launcher.rb +7 -4
- data/lib/vedeu/models/all.rb +12 -0
- data/lib/vedeu/models/collection.rb +71 -0
- data/lib/vedeu/{repositories → models}/focus.rb +63 -21
- data/lib/vedeu/models/geometry.rb +100 -259
- data/lib/vedeu/{repositories/models → models}/group.rb +16 -14
- data/lib/vedeu/{repositories/models → models}/menu.rb +85 -22
- data/lib/vedeu/models/model.rb +51 -0
- data/lib/vedeu/models/view/all.rb +12 -0
- data/lib/vedeu/models/view/char.rb +84 -0
- data/lib/vedeu/models/view/chars.rb +8 -0
- data/lib/vedeu/models/view/composition.rb +101 -0
- data/lib/vedeu/models/view/interface.rb +215 -0
- data/lib/vedeu/models/view/interfaces.rb +8 -0
- data/lib/vedeu/models/view/line.rb +134 -0
- data/lib/vedeu/models/view/lines.rb +8 -0
- data/lib/vedeu/models/view/stream.rb +144 -0
- data/lib/vedeu/models/view/streams.rb +8 -0
- data/lib/vedeu/output/all.rb +8 -0
- data/lib/vedeu/output/border.rb +387 -0
- data/lib/vedeu/output/compositor.rb +41 -30
- data/lib/vedeu/output/output.rb +6 -13
- data/lib/vedeu/output/viewport.rb +78 -94
- data/lib/vedeu/output/writer.rb +29 -0
- data/lib/vedeu/presentation/all.rb +9 -0
- data/lib/vedeu/{colours → presentation}/background.rb +1 -9
- data/lib/vedeu/{colours → presentation}/colour.rb +21 -8
- data/lib/vedeu/{colours → presentation}/foreground.rb +5 -9
- data/lib/vedeu/presentation/presentation.rb +91 -0
- data/lib/vedeu/presentation/style.rb +47 -0
- data/lib/vedeu/{colours → presentation}/translator.rb +11 -5
- data/lib/vedeu/repositories/all.rb +5 -0
- data/lib/vedeu/repositories/menus.rb +5 -42
- data/lib/vedeu/{support → repositories}/repository.rb +78 -41
- data/lib/vedeu/support/all.rb +22 -0
- data/lib/vedeu/support/bounding_area.rb +2 -1
- data/lib/vedeu/support/coercions.rb +18 -1
- data/lib/vedeu/support/console.rb +73 -0
- data/lib/vedeu/support/content_geometry.rb +69 -0
- data/lib/vedeu/support/coordinate.rb +246 -0
- data/lib/vedeu/support/esc.rb +29 -2
- data/lib/vedeu/support/log.rb +36 -2
- data/lib/vedeu/support/node.rb +61 -0
- data/lib/vedeu/support/position.rb +28 -13
- data/lib/vedeu/support/position_validator.rb +79 -0
- data/lib/vedeu/support/read.rb +65 -0
- data/lib/vedeu/support/refresh.rb +8 -32
- data/lib/vedeu/support/terminal.rb +34 -4
- data/lib/vedeu/support/text.rb +104 -0
- data/lib/vedeu/support/trace.rb +11 -23
- data/lib/vedeu/support/visible.rb +75 -0
- data/lib/vedeu/support/write.rb +85 -0
- data/lib/vedeu/traps.rb +18 -0
- data/lib/vedeu.rb +41 -101
- data/test/integration/dsl/compositions_test.rb +27 -0
- data/test/integration/dsl/interfaces_test.rb +261 -0
- data/test/integration/dsl/keymaps_test.rb +42 -0
- data/test/integration/dsl/lines_test.rb +146 -0
- data/test/integration/dsl/menus_test.rb +59 -0
- data/test/integration/dsl/streams_test.rb +129 -0
- data/test/integration/dsl/views_test.rb +63 -0
- data/test/lib/vedeu/api_test.rb +163 -0
- data/test/lib/vedeu/application_test.rb +19 -10
- data/test/lib/vedeu/bindings_test.rb +54 -0
- data/test/lib/vedeu/buffers/all_test.rb +11 -0
- data/test/lib/vedeu/buffers/buffer_test.rb +196 -0
- data/test/lib/vedeu/buffers/display_buffer_test.rb +58 -0
- data/test/lib/vedeu/configuration/api_test.rb +42 -58
- data/test/lib/vedeu/configuration/cli_test.rb +4 -4
- data/test/lib/vedeu/configuration/configuration_test.rb +11 -29
- data/test/lib/vedeu/cursor/all_test.rb +33 -0
- data/test/lib/vedeu/cursor/cursor_test.rb +85 -0
- data/test/lib/vedeu/cursor/move_cursor_test.rb +212 -0
- data/test/lib/vedeu/cursor/toggle_cursor_test.rb +63 -0
- data/test/lib/vedeu/dsl/components/border_test.rb +414 -0
- data/test/lib/vedeu/dsl/components/geometry_test.rb +231 -0
- data/test/lib/vedeu/dsl/components/keymap_test.rb +80 -0
- data/test/lib/vedeu/dsl/components/menu_test.rb +115 -0
- data/test/lib/vedeu/dsl/composition_test.rb +41 -0
- data/test/lib/vedeu/dsl/interface_test.rb +470 -0
- data/test/lib/vedeu/dsl/line_test.rb +60 -0
- data/test/lib/vedeu/dsl/shared/colour_test.rb +100 -0
- data/test/lib/vedeu/dsl/shared/style_test.rb +22 -0
- data/test/lib/vedeu/dsl/shared/text_test.rb +15 -0
- data/test/lib/vedeu/dsl/shared/use_test.rb +27 -0
- data/test/lib/vedeu/dsl/stream_test.rb +26 -0
- data/test/lib/vedeu/dsl/view_test.rb +73 -0
- data/test/lib/vedeu/events/all_test.rb +11 -0
- data/test/lib/vedeu/events/event_test.rb +109 -0
- data/test/lib/vedeu/events/trigger_test.rb +60 -0
- data/test/lib/vedeu/input/all_test.rb +11 -0
- data/test/lib/vedeu/input/input_test.rb +7 -3
- data/test/lib/vedeu/input/key_test.rb +72 -0
- data/test/lib/vedeu/input/keymap_test.rb +89 -0
- data/test/lib/vedeu/input/mapper_test.rb +94 -0
- data/test/lib/vedeu/launcher_test.rb +19 -20
- data/test/lib/vedeu/models/collection_test.rb +114 -0
- data/test/lib/vedeu/{repositories → models}/focus_test.rb +46 -13
- data/test/lib/vedeu/models/geometry_test.rb +35 -39
- data/test/lib/vedeu/models/group_test.rb +100 -0
- data/test/lib/vedeu/models/menu_test.rb +288 -0
- data/test/lib/vedeu/models/model_test.rb +31 -0
- data/test/lib/vedeu/models/view/char_test.rb +166 -0
- data/test/lib/vedeu/models/view/chars_test.rb +18 -0
- data/test/lib/vedeu/models/view/composition_test.rb +41 -0
- data/test/lib/vedeu/models/view/interface_test.rb +128 -0
- data/test/lib/vedeu/models/view/interfaces_test.rb +18 -0
- data/test/lib/vedeu/models/view/line_test.rb +214 -0
- data/test/lib/vedeu/models/view/lines_test.rb +18 -0
- data/test/lib/vedeu/models/view/stream_test.rb +106 -0
- data/test/lib/vedeu/models/view/streams_test.rb +18 -0
- data/test/lib/vedeu/output/border_test.rb +357 -0
- data/test/lib/vedeu/output/compositor_test.rb +61 -15
- data/test/lib/vedeu/output/output_test.rb +25 -84
- data/test/lib/vedeu/output/viewport_test.rb +171 -45
- data/test/lib/vedeu/output/writer_test.rb +45 -0
- data/test/lib/vedeu/{colours → presentation}/background_test.rb +0 -0
- data/test/lib/vedeu/{colours → presentation}/colour_test.rb +5 -5
- data/test/lib/vedeu/{colours → presentation}/foreground_test.rb +0 -0
- data/test/lib/vedeu/presentation/presentation_test.rb +56 -0
- data/test/lib/vedeu/presentation/style_test.rb +69 -0
- data/test/lib/vedeu/presentation/translator_test.rb +63 -0
- data/test/lib/vedeu/repositories/all_test.rb +7 -0
- data/test/lib/vedeu/repositories/menus_test.rb +3 -156
- data/test/lib/vedeu/repositories/repository_test.rb +271 -0
- data/test/lib/vedeu/support/bounding_area_test.rb +3 -3
- data/test/lib/vedeu/support/coercions_test.rb +39 -0
- data/test/lib/vedeu/support/common_test.rb +31 -16
- data/test/lib/vedeu/support/console_test.rb +85 -0
- data/test/lib/vedeu/support/content_geometry_test.rb +107 -0
- data/test/lib/vedeu/support/coordinate_test.rb +190 -0
- data/test/lib/vedeu/support/esc_test.rb +18 -0
- data/test/lib/vedeu/support/grid_test.rb +15 -10
- data/test/lib/vedeu/support/log_test.rb +3 -0
- data/test/lib/vedeu/support/position_test.rb +22 -2
- data/test/lib/vedeu/support/position_validator_test.rb +11 -0
- data/test/lib/vedeu/support/read_test.rb +88 -0
- data/test/lib/vedeu/support/refresh_test.rb +44 -12
- data/test/lib/vedeu/support/sentence_test.rb +6 -4
- data/test/lib/vedeu/support/terminal_test.rb +81 -70
- data/test/lib/vedeu/support/text_test.rb +93 -0
- data/test/lib/vedeu/support/trace_test.rb +21 -9
- data/test/lib/vedeu/support/visible_test.rb +148 -0
- data/test/lib/vedeu/support/write_test.rb +136 -0
- data/test/lib/vedeu/traps_test.rb +11 -0
- data/test/lib/vedeu_test.rb +2 -0
- data/test/support/helpers/all.rb +7 -0
- data/test/support/helpers/dsl_model_test_class.rb +25 -0
- data/test/support/{test_classes → helpers}/helpers.rb +0 -2
- data/test/support/helpers/misc.rb +15 -0
- data/test/support/helpers/model_test_class.rb +34 -0
- data/test/support/{test_classes → helpers}/presentation.rb +0 -0
- data/test/support/{test_classes → helpers}/repositories.rb +3 -3
- data/test/support/{test_modules/repository.rb → helpers/repository_test_module.rb} +5 -1
- data/test/test_helper.rb +19 -22
- data/vedeu.gemspec +11 -6
- metadata +322 -181
- data/lib/vedeu/api/api.rb +0 -239
- data/lib/vedeu/api/composition.rb +0 -38
- data/lib/vedeu/api/defined.rb +0 -52
- data/lib/vedeu/api/helpers.rb +0 -161
- data/lib/vedeu/api/interface.rb +0 -287
- data/lib/vedeu/api/keymap.rb +0 -75
- data/lib/vedeu/api/line.rb +0 -107
- data/lib/vedeu/api/menu.rb +0 -111
- data/lib/vedeu/api/stream.rb +0 -96
- data/lib/vedeu/models/border.rb +0 -238
- data/lib/vedeu/models/char.rb +0 -43
- data/lib/vedeu/models/composition.rb +0 -72
- data/lib/vedeu/models/line.rb +0 -100
- data/lib/vedeu/models/stream.rb +0 -130
- data/lib/vedeu/models/style.rb +0 -52
- data/lib/vedeu/repositories/buffers.rb +0 -52
- data/lib/vedeu/repositories/cursors.rb +0 -64
- data/lib/vedeu/repositories/events.rb +0 -147
- data/lib/vedeu/repositories/groups.rb +0 -47
- data/lib/vedeu/repositories/interfaces.rb +0 -78
- data/lib/vedeu/repositories/keymaps.rb +0 -196
- data/lib/vedeu/repositories/models/cursor.rb +0 -209
- data/lib/vedeu/repositories/models/interface.rb +0 -163
- data/lib/vedeu/repositories/models/keymap.rb +0 -111
- data/lib/vedeu/repositories/models/offset.rb +0 -91
- data/lib/vedeu/repositories/offsets.rb +0 -69
- data/lib/vedeu/support/exceptions.rb +0 -34
- data/lib/vedeu/support/keymap_validator.rb +0 -100
- data/lib/vedeu/support/model.rb +0 -14
- data/lib/vedeu/support/presentation.rb +0 -86
- data/lib/vedeu/support/registrar.rb +0 -53
- data/test/integration/api/api_test.rb +0 -97
- data/test/integration/api_dsl/dsl_api_test.rb +0 -4
- data/test/integration/api_dsl/dsl_composition_test.rb +0 -4
- data/test/integration/api_dsl/dsl_defined_test.rb +0 -4
- data/test/integration/api_dsl/dsl_helpers_test.rb +0 -4
- data/test/integration/api_dsl/dsl_interface_test.rb +0 -4
- data/test/integration/api_dsl/dsl_keymap.rb +0 -4
- data/test/integration/api_dsl/dsl_line_test.rb +0 -4
- data/test/integration/api_dsl/dsl_menu_test.rb +0 -4
- data/test/integration/api_dsl/dsl_stream_test.rb +0 -138
- data/test/integration/cursors_test.rb +0 -9
- data/test/integration/defining_interfaces_test.rb +0 -26
- data/test/integration/run_once_test.rb +0 -26
- data/test/integration/views/basic_view_test.rb +0 -807
- data/test/lib/vedeu/api/api_test.rb +0 -204
- data/test/lib/vedeu/api/composition_test.rb +0 -31
- data/test/lib/vedeu/api/defined_test.rb +0 -79
- data/test/lib/vedeu/api/helpers_test.rb +0 -111
- data/test/lib/vedeu/api/interface_test.rb +0 -410
- data/test/lib/vedeu/api/keymap_test.rb +0 -65
- data/test/lib/vedeu/api/line_test.rb +0 -83
- data/test/lib/vedeu/api/menu_test.rb +0 -85
- data/test/lib/vedeu/api/stream_test.rb +0 -59
- data/test/lib/vedeu/colours/translator_test.rb +0 -22
- data/test/lib/vedeu/models/border_test.rb +0 -197
- data/test/lib/vedeu/models/char_test.rb +0 -52
- data/test/lib/vedeu/models/composition_test.rb +0 -45
- data/test/lib/vedeu/models/key_test.rb +0 -43
- data/test/lib/vedeu/models/line_test.rb +0 -123
- data/test/lib/vedeu/models/stream_test.rb +0 -233
- data/test/lib/vedeu/models/style_test.rb +0 -59
- data/test/lib/vedeu/repositories/buffers_test.rb +0 -37
- data/test/lib/vedeu/repositories/cursors_test.rb +0 -62
- data/test/lib/vedeu/repositories/events_test.rb +0 -57
- data/test/lib/vedeu/repositories/groups_test.rb +0 -28
- data/test/lib/vedeu/repositories/interfaces_test.rb +0 -51
- data/test/lib/vedeu/repositories/keymaps_test.rb +0 -223
- data/test/lib/vedeu/repositories/models/buffer_test.rb +0 -174
- data/test/lib/vedeu/repositories/models/cursor_test.rb +0 -158
- data/test/lib/vedeu/repositories/models/event_test.rb +0 -53
- data/test/lib/vedeu/repositories/models/group_test.rb +0 -98
- data/test/lib/vedeu/repositories/models/interface_test.rb +0 -130
- data/test/lib/vedeu/repositories/models/keymap_test.rb +0 -27
- data/test/lib/vedeu/repositories/models/menu_test.rb +0 -246
- data/test/lib/vedeu/repositories/models/offset_test.rb +0 -128
- data/test/lib/vedeu/repositories/offsets_test.rb +0 -39
- data/test/lib/vedeu/support/keymap_validator_test.rb +0 -62
- data/test/lib/vedeu/support/model_test.rb +0 -23
- data/test/lib/vedeu/support/presentation_test.rb +0 -53
- data/test/lib/vedeu/support/registrar_test.rb +0 -94
- data/test/lib/vedeu/support/repository_test.rb +0 -208
- data/test/support/test_classes/all.rb +0 -5
- data/test/support/test_classes/coercions.rb +0 -16
- data/test/support/test_classes/model.rb +0 -23
- data/test/support/test_modules/all.rb +0 -1
@@ -0,0 +1,196 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
describe Buffer do
|
6
|
+
|
7
|
+
let(:described) { Vedeu::Buffer }
|
8
|
+
let(:instance) { described.new(buffer_name, back, front, previous, repository) }
|
9
|
+
let(:buffer_name) { 'krypton' }
|
10
|
+
let(:back) {}
|
11
|
+
let(:front) {}
|
12
|
+
let(:previous) {}
|
13
|
+
let(:repository) {}
|
14
|
+
|
15
|
+
before { Vedeu.stubs(:trigger) }
|
16
|
+
|
17
|
+
describe '#initialize' do
|
18
|
+
subject { instance }
|
19
|
+
|
20
|
+
it { subject.must_be_instance_of(described) }
|
21
|
+
it { subject.instance_variable_get('@name').must_equal(buffer_name) }
|
22
|
+
it { subject.instance_variable_get('@back').must_equal(back) }
|
23
|
+
it { subject.instance_variable_get('@front').must_equal(front) }
|
24
|
+
it { subject.instance_variable_get('@previous').must_equal(previous) }
|
25
|
+
it { subject.instance_variable_get('@repository').must_equal(Vedeu.buffers) }
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#inspect' do
|
29
|
+
subject { instance.inspect }
|
30
|
+
|
31
|
+
it { subject.must_equal('<Vedeu::Buffer ( back?:false front?:false previous?:false )>') }
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '#add' do
|
35
|
+
let(:back) {
|
36
|
+
Vedeu::Interface.build do
|
37
|
+
lines do
|
38
|
+
line 'old_back'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
}
|
42
|
+
let(:content) {
|
43
|
+
Vedeu::Interface.build do
|
44
|
+
lines do
|
45
|
+
line 'new_back'
|
46
|
+
end
|
47
|
+
end
|
48
|
+
}
|
49
|
+
|
50
|
+
subject { instance.add(content) }
|
51
|
+
|
52
|
+
it { subject.must_equal(true) }
|
53
|
+
|
54
|
+
it 'replaces the back buffer with the content' do
|
55
|
+
instance.back.must_equal(back)
|
56
|
+
|
57
|
+
subject
|
58
|
+
|
59
|
+
instance.back.must_equal(content)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe '#content' do
|
64
|
+
subject { instance.content }
|
65
|
+
|
66
|
+
it { subject.must_be_instance_of(Array) }
|
67
|
+
|
68
|
+
context 'when there is content on the back buffer' do
|
69
|
+
let(:back) {
|
70
|
+
Vedeu::Interface.build do
|
71
|
+
lines do
|
72
|
+
line 'old_back'
|
73
|
+
end
|
74
|
+
end
|
75
|
+
}
|
76
|
+
let(:buffer) { :back }
|
77
|
+
|
78
|
+
it { subject.must_equal([back]) }
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'when there is no content on the back buffer' do
|
82
|
+
let(:buffer) { :back }
|
83
|
+
|
84
|
+
it { subject.must_equal([]) }
|
85
|
+
end
|
86
|
+
|
87
|
+
context 'when there is no content on the back buffer' do
|
88
|
+
let(:back) {}
|
89
|
+
let(:buffer) { :back }
|
90
|
+
|
91
|
+
it { subject.must_equal([]) }
|
92
|
+
end
|
93
|
+
|
94
|
+
context 'when there is content on the front buffer' do
|
95
|
+
let(:buffer) { :front }
|
96
|
+
let(:front) {
|
97
|
+
Vedeu::Interface.build do
|
98
|
+
lines do
|
99
|
+
line 'front'
|
100
|
+
end
|
101
|
+
end
|
102
|
+
}
|
103
|
+
|
104
|
+
it { subject.must_equal([front]) }
|
105
|
+
end
|
106
|
+
|
107
|
+
context 'when there is no content on the front buffer' do
|
108
|
+
let(:buffer) { :front }
|
109
|
+
|
110
|
+
it { subject.must_equal([]) }
|
111
|
+
end
|
112
|
+
|
113
|
+
context 'when there is no content on the front buffer' do
|
114
|
+
let(:buffer) { :front }
|
115
|
+
let(:front) {}
|
116
|
+
|
117
|
+
it { subject.must_equal([]) }
|
118
|
+
end
|
119
|
+
|
120
|
+
context 'when there is content on the previous buffer' do
|
121
|
+
let(:buffer) { :previous }
|
122
|
+
let(:previous) {
|
123
|
+
Vedeu::Interface.build do
|
124
|
+
lines do
|
125
|
+
line 'old_back'
|
126
|
+
end
|
127
|
+
end
|
128
|
+
}
|
129
|
+
|
130
|
+
it { subject.must_equal([previous]) }
|
131
|
+
end
|
132
|
+
|
133
|
+
context 'when there is no content on the previous buffer' do
|
134
|
+
let(:buffer) { :previous }
|
135
|
+
|
136
|
+
it { subject.must_equal([]) }
|
137
|
+
end
|
138
|
+
|
139
|
+
context 'when there is no content on the previous buffer' do
|
140
|
+
let(:buffer) { :previous }
|
141
|
+
let(:previous) {}
|
142
|
+
|
143
|
+
it { subject.must_equal([]) }
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
describe '#swap' do
|
148
|
+
subject { instance.swap }
|
149
|
+
|
150
|
+
context 'when there is new content on the back buffer' do
|
151
|
+
let(:back) {
|
152
|
+
Vedeu::Interface.build do
|
153
|
+
lines do
|
154
|
+
line 'back'
|
155
|
+
end
|
156
|
+
end
|
157
|
+
}
|
158
|
+
let(:front) {
|
159
|
+
Vedeu::Interface.build do
|
160
|
+
lines do
|
161
|
+
line 'front'
|
162
|
+
end
|
163
|
+
end
|
164
|
+
}
|
165
|
+
let(:previous) {
|
166
|
+
Vedeu::Interface.build do
|
167
|
+
lines do
|
168
|
+
line 'previous'
|
169
|
+
end
|
170
|
+
end
|
171
|
+
}
|
172
|
+
|
173
|
+
context 'when the buffer was updated successfully' do
|
174
|
+
it { subject.must_equal(true) }
|
175
|
+
end
|
176
|
+
|
177
|
+
it 'replaces the previous buffer with the front buffer' do
|
178
|
+
subject
|
179
|
+
instance.previous.must_equal(front)
|
180
|
+
end
|
181
|
+
|
182
|
+
it 'replaces the front buffer with the back buffer' do
|
183
|
+
subject
|
184
|
+
instance.front.must_equal(back)
|
185
|
+
end
|
186
|
+
|
187
|
+
it 'replaces the back buffer with an empty buffer' do
|
188
|
+
subject
|
189
|
+
instance.back.must_equal(nil)
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
end # Buffer
|
195
|
+
|
196
|
+
end # Vedeu
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
class TestInterfaceModel
|
6
|
+
include Vedeu::Model
|
7
|
+
include Vedeu::DisplayBuffer
|
8
|
+
|
9
|
+
def name
|
10
|
+
'test_interface_model'
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def repository
|
16
|
+
Vedeu.interfaces
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe DisplayBuffer do
|
21
|
+
|
22
|
+
let(:described) { Vedeu::DisplayBuffer }
|
23
|
+
let(:example_model) { Vedeu::TestInterfaceModel }
|
24
|
+
let(:example_instance) { example_model.new }
|
25
|
+
|
26
|
+
before do
|
27
|
+
example_instance.store
|
28
|
+
|
29
|
+
Vedeu::Refresh.stubs(:by_name)
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#store_immediate' do
|
33
|
+
subject { example_instance.store_immediate }
|
34
|
+
|
35
|
+
it { subject.must_be_instance_of(example_model) }
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#store_deferred' do
|
39
|
+
subject { example_instance.store_deferred }
|
40
|
+
|
41
|
+
it { subject.must_be_instance_of(example_model) }
|
42
|
+
|
43
|
+
context 'when the name is not defined' do
|
44
|
+
before { example_instance.stubs(:name) }
|
45
|
+
|
46
|
+
it { proc { subject }.must_raise(InvalidSyntax) }
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'when the buffer is not already registered' do
|
50
|
+
end
|
51
|
+
|
52
|
+
context 'when the buffer is already registered' do
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
end # DisplayBuffer
|
57
|
+
|
58
|
+
end # Vedeu
|
@@ -10,128 +10,112 @@ module Vedeu
|
|
10
10
|
after { test_configuration }
|
11
11
|
|
12
12
|
describe '.configure' do
|
13
|
-
it 'returns the
|
13
|
+
it 'returns the configuration singleton' do
|
14
14
|
Vedeu.configure do
|
15
15
|
# ...
|
16
|
-
end.must_equal(
|
17
|
-
{
|
18
|
-
colour_mode: 256,
|
19
|
-
debug: false,
|
20
|
-
interactive: true,
|
21
|
-
log: '/tmp/vedeu.log',
|
22
|
-
once: false,
|
23
|
-
system_keys: {
|
24
|
-
exit: 'q',
|
25
|
-
focus_next: :tab,
|
26
|
-
focus_prev: :shift_tab,
|
27
|
-
mode_switch: :escape
|
28
|
-
},
|
29
|
-
terminal_mode: :raw,
|
30
|
-
trace: false
|
31
|
-
}
|
32
|
-
)
|
16
|
+
end.must_equal(Vedeu::Configuration)
|
33
17
|
end
|
34
18
|
end
|
35
19
|
|
36
20
|
describe '#interactive!' do
|
37
21
|
it 'sets the option to the desired value' do
|
38
22
|
configuration = Vedeu.configure { interactive! }
|
39
|
-
configuration
|
23
|
+
configuration.interactive?.must_equal(true)
|
40
24
|
end
|
41
25
|
|
42
26
|
it 'sets the option to the desired value' do
|
43
27
|
configuration = Vedeu.configure { interactive(false) }
|
44
|
-
configuration
|
28
|
+
configuration.interactive?.must_equal(false)
|
45
29
|
end
|
46
30
|
|
47
31
|
it 'sets the option to the desired value' do
|
48
32
|
configuration = Vedeu.configure { interactive(true) }
|
49
|
-
configuration
|
33
|
+
configuration.interactive?.must_equal(true)
|
50
34
|
end
|
51
35
|
|
52
36
|
it 'sets the option to the desired value' do
|
53
37
|
configuration = Vedeu.configure { interactive }
|
54
|
-
configuration
|
38
|
+
configuration.interactive?.must_equal(true)
|
55
39
|
end
|
56
40
|
end
|
57
41
|
|
58
42
|
describe '#standalone!' do
|
59
43
|
it 'sets the option to the desired value' do
|
60
44
|
configuration = Vedeu.configure { standalone! }
|
61
|
-
configuration
|
45
|
+
configuration.interactive?.must_equal(false)
|
62
46
|
end
|
63
47
|
|
64
48
|
it 'sets the option to the desired value' do
|
65
49
|
configuration = Vedeu.configure { standalone(false) }
|
66
|
-
configuration
|
50
|
+
configuration.interactive?.must_equal(true)
|
67
51
|
end
|
68
52
|
|
69
53
|
it 'sets the option to the desired value' do
|
70
54
|
configuration = Vedeu.configure { standalone(true) }
|
71
|
-
configuration
|
55
|
+
configuration.interactive?.must_equal(false)
|
72
56
|
end
|
73
57
|
|
74
58
|
it 'sets the option to the desired value' do
|
75
59
|
configuration = Vedeu.configure { standalone }
|
76
|
-
configuration
|
60
|
+
configuration.interactive?.must_equal(false)
|
77
61
|
end
|
78
62
|
end
|
79
63
|
|
80
64
|
describe '#run_once!' do
|
81
65
|
it 'sets the option to the desired value' do
|
82
66
|
configuration = Vedeu.configure { run_once! }
|
83
|
-
configuration
|
67
|
+
configuration.once.must_equal(true)
|
84
68
|
end
|
85
69
|
|
86
70
|
it 'sets the option to the desired value' do
|
87
71
|
configuration = Vedeu.configure { run_once(false) }
|
88
|
-
configuration
|
72
|
+
configuration.once.must_equal(false)
|
89
73
|
end
|
90
74
|
|
91
75
|
it 'sets the option to the desired value' do
|
92
76
|
configuration = Vedeu.configure { run_once(true) }
|
93
|
-
configuration
|
77
|
+
configuration.once.must_equal(true)
|
94
78
|
end
|
95
79
|
|
96
80
|
it 'sets the option to the desired value' do
|
97
81
|
configuration = Vedeu.configure { run_once }
|
98
|
-
configuration
|
82
|
+
configuration.once.must_equal(true)
|
99
83
|
end
|
100
84
|
end
|
101
85
|
|
102
86
|
describe '#cooked!' do
|
103
87
|
it 'sets the option to the desired value' do
|
104
88
|
configuration = Vedeu.configure { cooked! }
|
105
|
-
configuration
|
89
|
+
configuration.terminal_mode.must_equal(:cooked)
|
106
90
|
end
|
107
91
|
end
|
108
92
|
|
109
93
|
describe '#raw!' do
|
110
94
|
it 'sets the option to the desired value' do
|
111
95
|
configuration = Vedeu.configure { raw! }
|
112
|
-
configuration
|
96
|
+
configuration.terminal_mode.must_equal(:raw)
|
113
97
|
end
|
114
98
|
end
|
115
99
|
|
116
100
|
describe '#debug!' do
|
117
101
|
it 'sets the option to the desired value' do
|
118
102
|
configuration = Vedeu.configure { debug! }
|
119
|
-
configuration
|
103
|
+
configuration.debug.must_equal(true)
|
120
104
|
end
|
121
105
|
|
122
106
|
it 'sets the option to the desired value' do
|
123
107
|
configuration = Vedeu.configure { debug(true) }
|
124
|
-
configuration
|
108
|
+
configuration.debug.must_equal(true)
|
125
109
|
end
|
126
110
|
|
127
111
|
it 'sets the option to the desired value' do
|
128
112
|
configuration = Vedeu.configure { debug(false) }
|
129
|
-
configuration
|
113
|
+
configuration.debug.must_equal(false)
|
130
114
|
end
|
131
115
|
|
132
116
|
it 'sets the option to the desired value' do
|
133
117
|
configuration = Vedeu.configure { trace(true) }
|
134
|
-
configuration
|
118
|
+
configuration.debug.must_equal(true)
|
135
119
|
end
|
136
120
|
|
137
121
|
it 'sets the option to the desired value' do
|
@@ -140,7 +124,7 @@ module Vedeu
|
|
140
124
|
trace(true)
|
141
125
|
end
|
142
126
|
|
143
|
-
configuration
|
127
|
+
configuration.debug.must_equal(true)
|
144
128
|
end
|
145
129
|
|
146
130
|
it 'sets the option to the desired value' do
|
@@ -149,7 +133,7 @@ module Vedeu
|
|
149
133
|
trace(false)
|
150
134
|
end
|
151
135
|
|
152
|
-
configuration
|
136
|
+
configuration.debug.must_equal(true)
|
153
137
|
end
|
154
138
|
|
155
139
|
it 'sets the option to the desired value' do
|
@@ -158,7 +142,7 @@ module Vedeu
|
|
158
142
|
trace(false)
|
159
143
|
end
|
160
144
|
|
161
|
-
configuration
|
145
|
+
configuration.debug.must_equal(false)
|
162
146
|
end
|
163
147
|
end
|
164
148
|
|
@@ -166,53 +150,53 @@ module Vedeu
|
|
166
150
|
it 'sets the option to the desired value' do
|
167
151
|
configuration = Vedeu.configure { trace! }
|
168
152
|
|
169
|
-
configuration
|
153
|
+
configuration.trace.must_equal(true)
|
170
154
|
end
|
171
155
|
|
172
156
|
it 'sets the option to the desired value' do
|
173
157
|
configuration = Vedeu.configure { trace(false) }
|
174
158
|
|
175
|
-
configuration
|
176
|
-
configuration
|
159
|
+
configuration.trace.must_equal(false)
|
160
|
+
configuration.debug.must_equal(false)
|
177
161
|
end
|
178
162
|
|
179
163
|
it 'sets the option to the desired value' do
|
180
164
|
configuration = Vedeu.configure { trace(true) }
|
181
165
|
|
182
|
-
configuration
|
183
|
-
configuration
|
166
|
+
configuration.trace.must_equal(true)
|
167
|
+
configuration.debug.must_equal(true)
|
184
168
|
end
|
185
169
|
end
|
186
170
|
|
187
171
|
describe '#colour_mode' do
|
188
|
-
|
189
|
-
proc {
|
172
|
+
context 'when the value is invalid (nil)' do
|
173
|
+
it { proc {
|
190
174
|
Vedeu.configure { colour_mode(nil) }
|
191
|
-
}.must_raise(InvalidSyntax)
|
175
|
+
}.must_raise(InvalidSyntax) }
|
192
176
|
end
|
193
177
|
|
194
|
-
|
195
|
-
proc {
|
178
|
+
context 'when the value is invalid (empty)' do
|
179
|
+
it { proc {
|
196
180
|
Vedeu.configure { colour_mode('') }
|
197
|
-
}.must_raise(InvalidSyntax)
|
181
|
+
}.must_raise(InvalidSyntax) }
|
198
182
|
end
|
199
183
|
|
200
|
-
|
201
|
-
proc {
|
184
|
+
context 'when the value is invalid' do
|
185
|
+
it { proc {
|
202
186
|
Vedeu.configure { colour_mode(1234) }
|
203
|
-
}.must_raise(InvalidSyntax)
|
187
|
+
}.must_raise(InvalidSyntax) }
|
204
188
|
end
|
205
189
|
|
206
190
|
it 'sets the option to the desired value' do
|
207
191
|
configuration = Vedeu.configure { colour_mode(256) }
|
208
|
-
configuration
|
192
|
+
configuration.colour_mode.must_equal(256)
|
209
193
|
end
|
210
194
|
end
|
211
195
|
|
212
196
|
describe '#log' do
|
213
197
|
it 'sets the options to the desired value' do
|
214
198
|
configuration = Vedeu.configure { log('/tmp/vedeu_api_test.log') }
|
215
|
-
configuration
|
199
|
+
configuration.log.must_equal('/tmp/vedeu_api_test.log')
|
216
200
|
end
|
217
201
|
end
|
218
202
|
|
@@ -229,8 +213,8 @@ module Vedeu
|
|
229
213
|
|
230
214
|
methods_and_keys.each do |meth, _|
|
231
215
|
invalid_params.each do |param|
|
232
|
-
|
233
|
-
proc { Vedeu.configure { send(meth, param) } }.must_raise(InvalidSyntax)
|
216
|
+
context 'when the parameter is invalid' do
|
217
|
+
it { proc { Vedeu.configure { send(meth, param) } }.must_raise(InvalidSyntax) }
|
234
218
|
end
|
235
219
|
end
|
236
220
|
end
|
@@ -244,7 +228,7 @@ module Vedeu
|
|
244
228
|
it 'sets the system key to the desired value' do
|
245
229
|
configuration = Vedeu.configure { send(meth, param) }
|
246
230
|
|
247
|
-
configuration
|
231
|
+
configuration.system_keys[key].must_equal(param)
|
248
232
|
end
|
249
233
|
end
|
250
234
|
end
|
@@ -13,14 +13,14 @@ module Vedeu
|
|
13
13
|
after { test_configuration }
|
14
14
|
|
15
15
|
describe '#initialize' do
|
16
|
-
it {
|
17
|
-
it {
|
18
|
-
it {
|
16
|
+
it { described.must_be_instance_of(CLI) }
|
17
|
+
it { described.instance_variable_get('@args').must_equal(args) }
|
18
|
+
it { described.instance_variable_get('@options').must_equal({}) }
|
19
19
|
end
|
20
20
|
|
21
21
|
describe '#colour_mode' do
|
22
22
|
it '--colour-mode' do
|
23
|
-
Configuration.configure(['--colour-mode', '16777216'])
|
23
|
+
Configuration.configure(['--colour-mode', '16777216']) {}
|
24
24
|
Configuration.colour_mode.must_equal(16777216)
|
25
25
|
end
|
26
26
|
|
@@ -7,11 +7,14 @@ module Vedeu
|
|
7
7
|
before { Configuration.reset! }
|
8
8
|
after { test_configuration }
|
9
9
|
|
10
|
-
describe '
|
11
|
-
it 'returns the
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
describe '.default_system_keys' do
|
11
|
+
it 'returns the default system keys' do
|
12
|
+
Configuration.default_system_keys.must_equal({
|
13
|
+
exit: 'q',
|
14
|
+
focus_next: :tab,
|
15
|
+
focus_prev: :shift_tab,
|
16
|
+
mode_switch: :escape,
|
17
|
+
})
|
15
18
|
end
|
16
19
|
end
|
17
20
|
|
@@ -27,13 +30,6 @@ module Vedeu
|
|
27
30
|
end
|
28
31
|
end
|
29
32
|
|
30
|
-
describe '#log' do
|
31
|
-
it 'returns the value of the log option' do
|
32
|
-
skip
|
33
|
-
Configuration.log.must_match(/vedeu_test\.log/)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
33
|
describe '#once?' do
|
38
34
|
it 'returns the value of the once option' do
|
39
35
|
Configuration.once?.must_equal(false)
|
@@ -54,23 +50,9 @@ module Vedeu
|
|
54
50
|
|
55
51
|
describe '.configure' do
|
56
52
|
it 'returns the options configured' do
|
57
|
-
Configuration.configure
|
58
|
-
|
59
|
-
|
60
|
-
debug: false,
|
61
|
-
interactive: true,
|
62
|
-
log: '/tmp/vedeu.log',
|
63
|
-
once: false,
|
64
|
-
system_keys: {
|
65
|
-
exit: 'q',
|
66
|
-
focus_next: :tab,
|
67
|
-
focus_prev: :shift_tab,
|
68
|
-
mode_switch: :escape
|
69
|
-
},
|
70
|
-
terminal_mode: :raw,
|
71
|
-
trace: false
|
72
|
-
}
|
73
|
-
)
|
53
|
+
Configuration.configure do
|
54
|
+
# ...
|
55
|
+
end.must_equal(Vedeu::Configuration)
|
74
56
|
end
|
75
57
|
end
|
76
58
|
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
describe '.cursor' do
|
6
|
+
subject { Vedeu.cursor }
|
7
|
+
|
8
|
+
context 'when there are cursors are defined' do
|
9
|
+
before do
|
10
|
+
Vedeu::Focus.add('Vedeu.cursor')
|
11
|
+
Vedeu::Cursor.new({ name: 'Vedeu.cursor' }).store
|
12
|
+
end
|
13
|
+
|
14
|
+
it { subject.must_be_instance_of(Vedeu::Cursor) }
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'when there are no cursors defined' do
|
18
|
+
before do
|
19
|
+
Vedeu::Focus.reset
|
20
|
+
Vedeu.cursors.reset
|
21
|
+
end
|
22
|
+
|
23
|
+
it { subject.must_be_instance_of(NilClass) }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe '.cursors' do
|
28
|
+
subject { Vedeu.cursors }
|
29
|
+
|
30
|
+
it { subject.must_be_instance_of(Vedeu::Cursors) }
|
31
|
+
end
|
32
|
+
|
33
|
+
end # Vedeu
|