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
@@ -0,0 +1,123 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
class StoreTestClass
|
6
|
+
include Vedeu::Store
|
7
|
+
|
8
|
+
attr_reader :model
|
9
|
+
|
10
|
+
def initialize(model = nil, storage = {})
|
11
|
+
@model = model
|
12
|
+
@storage = storage
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def in_memory
|
18
|
+
{}
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe Store do
|
23
|
+
|
24
|
+
let(:described) { Vedeu::Store }
|
25
|
+
let(:instance) { Vedeu::StoreTestClass.new(model, storage) }
|
26
|
+
let(:model) {}
|
27
|
+
let(:storage) {}
|
28
|
+
|
29
|
+
describe 'alias methods' do
|
30
|
+
it { instance.must_respond_to(:registered?) }
|
31
|
+
end
|
32
|
+
|
33
|
+
describe '#each' do
|
34
|
+
subject { instance.each }
|
35
|
+
|
36
|
+
it { subject.must_be_instance_of(Enumerator) }
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#empty?' do
|
40
|
+
subject { instance.empty? }
|
41
|
+
|
42
|
+
context 'when empty' do
|
43
|
+
it { subject.must_equal(true) }
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'when not empty' do
|
47
|
+
let(:storage) { [:item] }
|
48
|
+
|
49
|
+
it { subject.must_equal(false) }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#exists?' do
|
54
|
+
let(:_name) {}
|
55
|
+
|
56
|
+
subject { instance.exists?(_name) }
|
57
|
+
|
58
|
+
context 'when empty' do
|
59
|
+
let(:_name) { 'terbium' }
|
60
|
+
|
61
|
+
it { subject.must_equal(false) }
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'with no name' do
|
65
|
+
it { subject.must_equal(false) }
|
66
|
+
end
|
67
|
+
|
68
|
+
context 'with empty name' do
|
69
|
+
let(:_name) { '' }
|
70
|
+
|
71
|
+
it { subject.must_equal(false) }
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'when the model does not exist' do
|
75
|
+
let(:storage) { { 'samarium' => [:some_model_data] } }
|
76
|
+
let(:_name) { 'terbium' }
|
77
|
+
|
78
|
+
it { subject.must_equal(false) }
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'when the model exists' do
|
82
|
+
let(:storage) { { 'samarium' => [:some_model_data] } }
|
83
|
+
let(:_name) { 'samarium' }
|
84
|
+
|
85
|
+
it { subject.must_equal(true) }
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe '#reset' do
|
90
|
+
it 'returns a Hash' do
|
91
|
+
instance.reset.must_be_instance_of(Hash)
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'resets the repository' do
|
95
|
+
instance.reset.must_equal({})
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
describe '#size' do
|
100
|
+
subject { instance.size }
|
101
|
+
|
102
|
+
context 'when empty' do
|
103
|
+
it { subject.must_equal(0) }
|
104
|
+
end
|
105
|
+
|
106
|
+
context 'when not empty' do
|
107
|
+
let(:storage) { [:item] }
|
108
|
+
|
109
|
+
it { subject.must_equal(1) }
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe '#storage' do
|
114
|
+
subject { instance.storage }
|
115
|
+
|
116
|
+
it { subject.must_equal({}) }
|
117
|
+
|
118
|
+
it { instance.must_respond_to(:all) }
|
119
|
+
end
|
120
|
+
|
121
|
+
end # Store
|
122
|
+
|
123
|
+
end # Vedeu
|
@@ -45,15 +45,6 @@ module Vedeu
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
-
describe '#to_sentence' do
|
49
|
-
let(:array) { ['hydrogen', 'helium', 'lithium'] }
|
50
|
-
|
51
|
-
subject { described.to_sentence(array) }
|
52
|
-
|
53
|
-
it { subject.must_be_instance_of(String) }
|
54
|
-
it { subject.must_equal('hydrogen, helium and lithium') }
|
55
|
-
end
|
56
|
-
|
57
48
|
end # Common
|
58
49
|
|
59
50
|
end # Vedeu
|
@@ -35,7 +35,7 @@ module Vedeu
|
|
35
35
|
Configuration.stub(:terminal_mode, :raw) do
|
36
36
|
capture_io do
|
37
37
|
Terminal.open do
|
38
|
-
print
|
38
|
+
print 'Hello from raw mode!'
|
39
39
|
end
|
40
40
|
end.must_equal(['Hello from raw mode!', ''])
|
41
41
|
end
|
@@ -45,7 +45,7 @@ module Vedeu
|
|
45
45
|
Configuration.stub(:terminal_mode, :cooked) do
|
46
46
|
capture_io do
|
47
47
|
Terminal.open do
|
48
|
-
print
|
48
|
+
print 'Hello from cooked mode!'
|
49
49
|
end
|
50
50
|
end.must_equal(['Hello from cooked mode!', ''])
|
51
51
|
end
|
@@ -53,6 +53,8 @@ module Vedeu
|
|
53
53
|
end
|
54
54
|
|
55
55
|
describe '.input' do
|
56
|
+
subject { Terminal.input }
|
57
|
+
|
56
58
|
context 'when the terminal is in cooked mode' do
|
57
59
|
let(:mode) { :cooked }
|
58
60
|
let(:input) { "Some input\r\n" }
|
@@ -62,8 +64,6 @@ module Vedeu
|
|
62
64
|
IO.console.stubs(:gets).returns(input)
|
63
65
|
end
|
64
66
|
|
65
|
-
subject { Terminal.input }
|
66
|
-
|
67
67
|
it { subject.must_equal('Some input') }
|
68
68
|
end
|
69
69
|
|
@@ -78,8 +78,6 @@ module Vedeu
|
|
78
78
|
IO.console.stubs(:read_nonblock)
|
79
79
|
end
|
80
80
|
|
81
|
-
subject { Terminal.input }
|
82
|
-
|
83
81
|
it { subject.must_be_instance_of(String) }
|
84
82
|
end
|
85
83
|
end
|
@@ -95,20 +93,22 @@ module Vedeu
|
|
95
93
|
context 'when there are multiple values' do
|
96
94
|
let(:value) { ['Some output...', 'more output...', 'even more...'] }
|
97
95
|
|
98
|
-
it { subject.must_equal(['Some output...',
|
96
|
+
it { subject.must_equal(['Some output...',
|
97
|
+
'more output...',
|
98
|
+
'even more...']) }
|
99
99
|
end
|
100
100
|
end
|
101
101
|
|
102
102
|
describe '.resize' do
|
103
103
|
before { Vedeu.interfaces.reset }
|
104
104
|
|
105
|
-
subject {
|
105
|
+
subject { described.resize }
|
106
106
|
|
107
107
|
it { subject.must_be_instance_of(TrueClass) }
|
108
108
|
end
|
109
109
|
|
110
110
|
describe '.clear' do
|
111
|
-
subject {
|
111
|
+
subject { described.clear }
|
112
112
|
|
113
113
|
it 'clears the screen' do
|
114
114
|
subject.must_equal(["\e[39m\e[49m\e[2J"])
|
@@ -116,138 +116,161 @@ module Vedeu
|
|
116
116
|
end
|
117
117
|
|
118
118
|
describe '.set_cursor_mode' do
|
119
|
+
subject { described.set_cursor_mode }
|
120
|
+
|
119
121
|
it 'shows the cursor in cooked mode' do
|
120
|
-
|
121
|
-
|
122
|
+
described.cooked_mode!
|
123
|
+
subject.must_equal(["\e[?25h"])
|
122
124
|
end
|
123
125
|
|
124
126
|
it 'hides the cursor in raw mode' do
|
125
|
-
|
126
|
-
|
127
|
+
described.raw_mode!
|
128
|
+
subject.must_equal(nil)
|
127
129
|
end
|
128
130
|
end
|
129
131
|
|
130
132
|
describe '.raw_mode?' do
|
133
|
+
subject { described.raw_mode? }
|
134
|
+
|
131
135
|
it 'returns true if the terminal is in raw mode' do
|
132
|
-
|
133
|
-
|
136
|
+
described.raw_mode!
|
137
|
+
subject.must_equal(true)
|
134
138
|
end
|
135
139
|
|
136
140
|
it 'returns false if the terminal is not in raw mode' do
|
137
|
-
|
138
|
-
|
141
|
+
described.cooked_mode!
|
142
|
+
subject.must_equal(false)
|
139
143
|
end
|
140
144
|
end
|
141
145
|
|
142
146
|
describe '.cooked_mode?' do
|
147
|
+
subject { described.cooked_mode? }
|
148
|
+
|
143
149
|
it 'returns true if the terminal is in cooked mode' do
|
144
|
-
|
145
|
-
|
150
|
+
described.cooked_mode!
|
151
|
+
subject.must_equal(true)
|
146
152
|
end
|
147
153
|
|
148
154
|
it 'returns false if the terminal is not in cooked mode' do
|
149
|
-
|
150
|
-
|
155
|
+
described.raw_mode!
|
156
|
+
subject.must_equal(false)
|
151
157
|
end
|
152
158
|
end
|
153
159
|
|
154
160
|
describe '.switch_mode!' do
|
161
|
+
subject { described.switch_mode! }
|
162
|
+
|
155
163
|
it 'returns a Symbol' do
|
156
|
-
|
164
|
+
subject.must_be_instance_of(Symbol)
|
157
165
|
end
|
158
166
|
|
159
167
|
it 'returns :cooked if previously :raw' do
|
160
|
-
|
161
|
-
|
168
|
+
described.raw_mode!
|
169
|
+
subject.must_equal(:cooked)
|
162
170
|
end
|
163
171
|
|
164
172
|
it 'returns :raw if previously :cooked' do
|
165
|
-
|
166
|
-
|
173
|
+
described.cooked_mode!
|
174
|
+
subject.must_equal(:raw)
|
167
175
|
end
|
168
176
|
end
|
169
177
|
|
170
178
|
describe '.mode' do
|
179
|
+
subject { described.mode }
|
180
|
+
|
171
181
|
before do
|
172
182
|
Configuration.stubs(:terminal_mode).returns(:raw)
|
173
183
|
Terminal.switch_mode! if Terminal.mode == :cooked
|
174
184
|
end
|
175
185
|
|
186
|
+
it { subject.must_be_instance_of(Symbol) }
|
187
|
+
|
176
188
|
it 'returns the configured terminal mode' do
|
177
|
-
|
178
|
-
Terminal.mode.must_equal(:raw)
|
189
|
+
subject.must_equal(:raw)
|
179
190
|
end
|
180
191
|
end
|
181
192
|
|
182
193
|
describe '.centre' do
|
194
|
+
subject { described.centre }
|
195
|
+
|
196
|
+
it { subject.must_be_instance_of(Array) }
|
197
|
+
|
183
198
|
it 'returns the centre point on the terminal' do
|
184
|
-
|
185
|
-
Terminal.centre.must_equal([12, 40])
|
199
|
+
subject.must_equal([12, 40])
|
186
200
|
end
|
187
201
|
end
|
188
202
|
|
189
203
|
describe '.centre_y' do
|
204
|
+
subject { described.centre_y }
|
205
|
+
|
206
|
+
it { subject.must_be_instance_of(Fixnum) }
|
207
|
+
|
190
208
|
it 'returns the centre `y` point on the terminal' do
|
191
|
-
|
192
|
-
Terminal.centre_y.must_equal(12)
|
209
|
+
subject.must_equal(12)
|
193
210
|
end
|
194
211
|
end
|
195
212
|
|
196
213
|
describe '.centre_x' do
|
214
|
+
subject { described.centre_x }
|
215
|
+
|
216
|
+
it { subject.must_be_instance_of(Fixnum) }
|
217
|
+
|
197
218
|
it 'returns the centre `x` point on the terminal' do
|
198
|
-
|
199
|
-
Terminal.centre_x.must_equal(40)
|
219
|
+
subject.must_equal(40)
|
200
220
|
end
|
201
221
|
end
|
202
222
|
|
203
223
|
describe '.origin' do
|
204
|
-
|
205
|
-
Terminal.origin.must_be_instance_of(Fixnum)
|
206
|
-
Terminal.origin.must_equal(1)
|
207
|
-
end
|
224
|
+
subject { Terminal.origin }
|
208
225
|
|
209
|
-
it {
|
210
|
-
|
226
|
+
it { subject.must_be_instance_of(Fixnum) }
|
227
|
+
|
228
|
+
it { subject.must_equal(1) }
|
211
229
|
end
|
212
230
|
|
213
231
|
describe '.width' do
|
232
|
+
subject { Terminal.width }
|
233
|
+
|
234
|
+
it { subject.must_be_instance_of(Fixnum) }
|
235
|
+
|
214
236
|
context 'via method' do
|
215
|
-
it 'returns the width
|
216
|
-
|
217
|
-
Terminal.width.must_equal(80)
|
237
|
+
it 'returns the width' do
|
238
|
+
subject.must_equal(80)
|
218
239
|
end
|
219
240
|
end
|
220
241
|
|
221
242
|
context 'via API' do
|
222
|
-
it 'returns the width
|
243
|
+
it 'returns the width' do
|
223
244
|
Vedeu.width.must_equal(80)
|
224
245
|
end
|
225
246
|
end
|
226
|
-
|
227
|
-
it { Terminal.must_respond_to(:xn) }
|
228
247
|
end
|
229
248
|
|
230
249
|
describe '.height' do
|
250
|
+
subject { Terminal.height }
|
251
|
+
|
252
|
+
it { subject.must_be_instance_of(Fixnum) }
|
253
|
+
|
231
254
|
context 'via method' do
|
232
|
-
it 'returns the height
|
233
|
-
|
234
|
-
Terminal.height.must_equal(25)
|
255
|
+
it 'returns the height' do
|
256
|
+
subject.must_equal(25)
|
235
257
|
end
|
236
258
|
end
|
237
259
|
|
238
260
|
context 'via API' do
|
239
|
-
it 'returns the height
|
261
|
+
it 'returns the height' do
|
240
262
|
Vedeu.height.must_equal(25)
|
241
263
|
end
|
242
264
|
end
|
243
|
-
|
244
|
-
it { Terminal.must_respond_to(:yn) }
|
245
265
|
end
|
246
266
|
|
247
267
|
describe '.size' do
|
248
|
-
|
249
|
-
|
250
|
-
|
268
|
+
subject { Terminal.size }
|
269
|
+
|
270
|
+
it { subject.must_be_instance_of(Array) }
|
271
|
+
|
272
|
+
it 'returns the width and height' do
|
273
|
+
subject.must_equal([25, 80])
|
251
274
|
end
|
252
275
|
end
|
253
276
|
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
class VisibilityTestModel
|
6
|
+
attr_accessor :visible
|
7
|
+
alias_method :visible?, :visible
|
8
|
+
|
9
|
+
def initialize(visible = true)
|
10
|
+
@visible = visible
|
11
|
+
end
|
12
|
+
|
13
|
+
def store
|
14
|
+
self
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe Visibility do
|
19
|
+
|
20
|
+
let(:described) { Vedeu::Visibility }
|
21
|
+
let(:instance) { described.new(model) }
|
22
|
+
let(:model) { VisibilityTestModel.new(visible) }
|
23
|
+
let(:visible) { true }
|
24
|
+
|
25
|
+
describe '#initialize' do
|
26
|
+
it { instance.must_be_instance_of(Vedeu::Visibility) }
|
27
|
+
it { instance.instance_variable_get('@model').must_equal(model) }
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '.show' do
|
31
|
+
subject { described.show(model) }
|
32
|
+
|
33
|
+
it { subject.must_equal(model) }
|
34
|
+
|
35
|
+
it { subject; instance.state.must_equal(:visible) }
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '.hide' do
|
39
|
+
subject { described.hide(model) }
|
40
|
+
|
41
|
+
it { subject.must_equal(model) }
|
42
|
+
|
43
|
+
it { subject; instance.state.must_equal(:invisible) }
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '.toggle' do
|
47
|
+
subject { described.toggle(model) }
|
48
|
+
|
49
|
+
it { subject.must_equal(model) }
|
50
|
+
|
51
|
+
context 'when the model is visible' do
|
52
|
+
it { subject; instance.state.must_equal(:invisible) }
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'when the model is not visible' do
|
56
|
+
let(:visible) { false }
|
57
|
+
|
58
|
+
it { subject; instance.state.must_equal(:visible) }
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe '#state' do
|
63
|
+
subject { instance.state }
|
64
|
+
|
65
|
+
it { subject.must_be_instance_of(Symbol) }
|
66
|
+
|
67
|
+
context 'when the model is visible' do
|
68
|
+
it { subject.must_equal(:visible) }
|
69
|
+
end
|
70
|
+
|
71
|
+
context 'when the model is not visible' do
|
72
|
+
let(:visible) { false }
|
73
|
+
|
74
|
+
it { subject.must_equal(:invisible) }
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
end # Visibility
|
79
|
+
|
80
|
+
end # Vedeu
|
data/test/test_helper.rb
CHANGED
@@ -37,6 +37,17 @@ require 'mocha/setup'
|
|
37
37
|
require 'vedeu'
|
38
38
|
require 'support/helpers/all'
|
39
39
|
|
40
|
+
# require 'minitest/reporters'
|
41
|
+
# Minitest::Reporters.use!(
|
42
|
+
# # commented out by default (makes tests slower)
|
43
|
+
# # Minitest::Reporters::DefaultReporter.new({ color: true, slow_count: 5 }),
|
44
|
+
# # Minitest::Reporters::SpecReporter.new
|
45
|
+
# )
|
46
|
+
|
47
|
+
# trace method execution with (optionally) local variables
|
48
|
+
# require 'vedeu/support/log'
|
49
|
+
# Vedeu::Trace.call({ watched: 'call', klass: /^Vedeu/ })
|
50
|
+
|
40
51
|
def test_configuration
|
41
52
|
Vedeu::Configuration.reset!
|
42
53
|
|
@@ -50,17 +61,8 @@ def test_configuration
|
|
50
61
|
# will be logged, otherwise every `Vedeu.log` will be logged.
|
51
62
|
log '/tmp/vedeu_test_helper.log'
|
52
63
|
end
|
64
|
+
|
65
|
+
Vedeu::Repositories.reset!
|
53
66
|
end
|
54
67
|
|
55
68
|
test_configuration
|
56
|
-
|
57
|
-
# require 'minitest/reporters'
|
58
|
-
# Minitest::Reporters.use!(
|
59
|
-
# # commented out by default (makes tests slower)
|
60
|
-
# # Minitest::Reporters::DefaultReporter.new({ color: true, slow_count: 5 }),
|
61
|
-
# # Minitest::Reporters::SpecReporter.new
|
62
|
-
# )
|
63
|
-
|
64
|
-
# trace method execution with (optionally) local variables
|
65
|
-
# require 'vedeu/support/log'
|
66
|
-
# Vedeu::Trace.call({ watched: 'call', klass: /^Vedeu/ })
|
data/vedeu.gemspec
CHANGED
@@ -4,11 +4,12 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'vedeu'
|
7
|
-
spec.version = '0.4.
|
7
|
+
spec.version = '0.4.14'
|
8
8
|
spec.authors = ['Gavin Laking']
|
9
9
|
spec.email = ['gavinlaking@gmail.com']
|
10
|
-
spec.summary =
|
11
|
-
spec.description =
|
10
|
+
spec.summary = 'A terminal case of wonderland.'
|
11
|
+
spec.description = 'A GUI framework written in Ruby for building ' \
|
12
|
+
'terminal/console applications.'
|
12
13
|
spec.homepage = 'https://github.com/gavinlaking/vedeu'
|
13
14
|
spec.license = 'MIT'
|
14
15
|
|