vedeu 0.4.13 → 0.4.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (251) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -1
  3. data/.travis.yml +2 -1
  4. data/Guardfile +6 -5
  5. data/README.md +3 -30
  6. data/Rakefile +5 -5
  7. data/bin/vedeu_drb_client +1 -1
  8. data/bin/vedeu_drb_server +91 -89
  9. data/bin/vedeu_test +4 -0
  10. data/config/rubocop_enabled.yml +5 -10
  11. data/examples/borders_app.rb +2 -1
  12. data/examples/colours_app.rb +13 -8
  13. data/examples/configuration_app.rb +3 -2
  14. data/examples/cursor_app.rb +16 -11
  15. data/examples/drb_app.rb +88 -89
  16. data/examples/focus_app.rb +31 -32
  17. data/examples/geometry_app.rb +2 -1
  18. data/examples/hello_world.rb +2 -1
  19. data/examples/lines_app.rb +2 -1
  20. data/examples/material_colours_app.rb +126 -0
  21. data/examples/typed_commands/typed_commands_app.rb +5 -1
  22. data/examples/view_templates_app/view_templates_app.rb +6 -3
  23. data/lib/vedeu/all.rb +1 -1
  24. data/lib/vedeu/api.rb +18 -10
  25. data/lib/vedeu/application.rb +0 -1
  26. data/lib/vedeu/bindings.rb +77 -16
  27. data/lib/vedeu/buffers/all.rb +2 -5
  28. data/lib/vedeu/buffers/buffer.rb +69 -25
  29. data/lib/vedeu/buffers/display_buffer.rb +3 -7
  30. data/lib/vedeu/configuration/all.rb +3 -6
  31. data/lib/vedeu/configuration/api.rb +28 -4
  32. data/lib/vedeu/configuration/cli.rb +9 -9
  33. data/lib/vedeu/configuration/configuration.rb +11 -7
  34. data/lib/vedeu/cursor/all.rb +3 -6
  35. data/lib/vedeu/cursor/cursor.rb +22 -14
  36. data/lib/vedeu/cursor/move.rb +32 -22
  37. data/lib/vedeu/cursor/refresh_cursor.rb +1 -1
  38. data/lib/vedeu/debug.rb +2 -1
  39. data/lib/vedeu/distributed/client.rb +1 -7
  40. data/lib/vedeu/distributed/server.rb +0 -4
  41. data/lib/vedeu/distributed/subprocess.rb +1 -1
  42. data/lib/vedeu/distributed/templates/default_configuration.vedeu +1 -1
  43. data/lib/vedeu/distributed/test_application.rb +3 -5
  44. data/lib/vedeu/distributed/uri.rb +2 -2
  45. data/lib/vedeu/dsl/all.rb +6 -6
  46. data/lib/vedeu/dsl/components/all.rb +0 -3
  47. data/lib/vedeu/dsl/components/border.rb +20 -12
  48. data/lib/vedeu/dsl/components/geometry.rb +68 -3
  49. data/lib/vedeu/dsl/components/keymap.rb +1 -2
  50. data/lib/vedeu/dsl/composition.rb +8 -1
  51. data/lib/vedeu/dsl/interface.rb +61 -11
  52. data/lib/vedeu/dsl/line.rb +12 -12
  53. data/lib/vedeu/dsl/shared/all.rb +4 -7
  54. data/lib/vedeu/dsl/shared/colour.rb +2 -2
  55. data/lib/vedeu/dsl/shared/text.rb +2 -35
  56. data/lib/vedeu/dsl/shared/use.rb +2 -2
  57. data/lib/vedeu/dsl/view.rb +4 -4
  58. data/lib/vedeu/events/all.rb +3 -5
  59. data/lib/vedeu/events/event.rb +5 -5
  60. data/lib/vedeu/geometry/all.rb +11 -16
  61. data/lib/vedeu/geometry/area.rb +2 -5
  62. data/lib/vedeu/geometry/canvas.rb +12 -16
  63. data/lib/vedeu/geometry/dimension.rb +20 -22
  64. data/lib/vedeu/geometry/geometry.rb +28 -30
  65. data/lib/vedeu/geometry/grid.rb +1 -1
  66. data/lib/vedeu/geometry/index_position.rb +7 -0
  67. data/lib/vedeu/geometry/null_geometry.rb +61 -0
  68. data/lib/vedeu/geometry/position.rb +0 -3
  69. data/lib/vedeu/geometry/position_index.rb +7 -0
  70. data/lib/vedeu/geometry/position_validator.rb +44 -33
  71. data/lib/vedeu/input/all.rb +5 -4
  72. data/lib/vedeu/input/keymap.rb +0 -1
  73. data/lib/vedeu/input/mapper.rb +1 -3
  74. data/lib/vedeu/launcher.rb +6 -7
  75. data/lib/vedeu/main_loop.rb +1 -2
  76. data/lib/vedeu/models/all.rb +1 -0
  77. data/lib/vedeu/models/cell.rb +5 -8
  78. data/lib/vedeu/models/char.rb +50 -15
  79. data/lib/vedeu/models/composition.rb +8 -1
  80. data/lib/vedeu/models/focus.rb +4 -4
  81. data/lib/vedeu/models/group.rb +3 -3
  82. data/lib/vedeu/models/interface.rb +62 -46
  83. data/lib/vedeu/models/line.rb +1 -1
  84. data/lib/vedeu/models/null.rb +48 -0
  85. data/lib/vedeu/models/stream.rb +5 -5
  86. data/lib/vedeu/output/all.rb +20 -30
  87. data/lib/vedeu/output/border.rb +93 -40
  88. data/lib/vedeu/output/clear.rb +100 -15
  89. data/lib/vedeu/output/colour.rb +56 -12
  90. data/lib/vedeu/output/compressor.rb +59 -0
  91. data/lib/vedeu/output/html_char.rb +4 -2
  92. data/lib/vedeu/output/null_border.rb +16 -4
  93. data/lib/vedeu/output/output.rb +13 -21
  94. data/lib/vedeu/output/presentation.rb +28 -23
  95. data/lib/vedeu/output/refresh.rb +2 -2
  96. data/lib/vedeu/output/renderers/all.rb +80 -3
  97. data/lib/vedeu/output/renderers/file_renderer.rb +38 -2
  98. data/lib/vedeu/output/renderers/html_renderer.rb +6 -4
  99. data/lib/vedeu/output/renderers/json_renderer.rb +52 -0
  100. data/lib/vedeu/output/renderers/null_renderer.rb +14 -0
  101. data/lib/vedeu/output/renderers/terminal_renderer.rb +2 -12
  102. data/lib/vedeu/output/style.rb +33 -3
  103. data/lib/vedeu/output/text.rb +98 -1
  104. data/lib/vedeu/output/translator.rb +30 -7
  105. data/lib/vedeu/output/viewport.rb +43 -79
  106. data/lib/vedeu/output/wordwrap.rb +4 -4
  107. data/lib/vedeu/repositories/all.rb +22 -179
  108. data/lib/vedeu/repositories/collection.rb +11 -13
  109. data/lib/vedeu/repositories/collections/all.rb +8 -0
  110. data/lib/vedeu/repositories/collections/chars.rb +9 -0
  111. data/lib/vedeu/repositories/collections/events.rb +9 -0
  112. data/lib/vedeu/repositories/collections/interfaces.rb +9 -0
  113. data/lib/vedeu/repositories/collections/keys.rb +9 -0
  114. data/lib/vedeu/repositories/collections/lines.rb +9 -0
  115. data/lib/vedeu/repositories/collections/streams.rb +9 -0
  116. data/lib/vedeu/repositories/model.rb +7 -2
  117. data/lib/vedeu/repositories/repositories/all.rb +14 -0
  118. data/lib/vedeu/repositories/repositories/background_colours.rb +14 -0
  119. data/lib/vedeu/repositories/repositories/borders.rb +38 -0
  120. data/lib/vedeu/repositories/repositories/buffers.rb +36 -0
  121. data/lib/vedeu/repositories/repositories/colours.rb +63 -0
  122. data/lib/vedeu/repositories/repositories/cursors.rb +29 -0
  123. data/lib/vedeu/repositories/repositories/events_repository.rb +24 -0
  124. data/lib/vedeu/repositories/repositories/foreground_colours.rb +14 -0
  125. data/lib/vedeu/repositories/repositories/geometries.rb +37 -0
  126. data/lib/vedeu/repositories/repositories/groups.rb +24 -0
  127. data/lib/vedeu/repositories/repositories/interfaces_repository.rb +24 -0
  128. data/lib/vedeu/repositories/repositories/keymaps.rb +24 -0
  129. data/lib/vedeu/repositories/repositories/menus.rb +24 -0
  130. data/lib/vedeu/repositories/repository.rb +29 -47
  131. data/lib/vedeu/storage/all.rb +6 -0
  132. data/lib/vedeu/storage/associative_store.rb +47 -0
  133. data/lib/vedeu/storage/conveyor_store.rb +69 -0
  134. data/lib/vedeu/storage/fifo_store.rb +37 -0
  135. data/lib/vedeu/storage/store.rb +58 -0
  136. data/lib/vedeu/support/all.rb +5 -10
  137. data/lib/vedeu/support/common.rb +0 -8
  138. data/lib/vedeu/support/log.rb +13 -24
  139. data/lib/vedeu/support/template.rb +4 -1
  140. data/lib/vedeu/support/terminal.rb +10 -10
  141. data/lib/vedeu/support/trace.rb +15 -88
  142. data/lib/vedeu/support/visibility.rb +73 -0
  143. data/lib/vedeu.rb +37 -0
  144. data/test/lib/vedeu/api_test.rb +7 -3
  145. data/test/lib/vedeu/application_test.rb +9 -3
  146. data/test/lib/vedeu/bindings_test.rb +21 -0
  147. data/test/lib/vedeu/buffers/buffer_test.rb +110 -134
  148. data/test/lib/vedeu/buffers/display_buffer_test.rb +8 -0
  149. data/test/lib/vedeu/configuration/api_test.rb +5 -1
  150. data/test/lib/vedeu/configuration/configuration_test.rb +4 -6
  151. data/test/lib/vedeu/cursor/cursor_test.rb +25 -17
  152. data/test/lib/vedeu/cursor/move_test.rb +7 -7
  153. data/test/lib/vedeu/distributed/client_test.rb +1 -1
  154. data/test/lib/vedeu/distributed/subprocess_test.rb +3 -1
  155. data/test/lib/vedeu/distributed/uri_test.rb +5 -5
  156. data/test/lib/vedeu/dsl/components/geometry_test.rb +43 -0
  157. data/test/lib/vedeu/dsl/components/keymap_test.rb +1 -1
  158. data/test/lib/vedeu/dsl/composition_test.rb +6 -5
  159. data/test/lib/vedeu/dsl/interface_test.rb +81 -16
  160. data/test/lib/vedeu/dsl/shared/colour_test.rb +4 -4
  161. data/test/lib/vedeu/dsl/shared/text_test.rb +87 -9
  162. data/test/lib/vedeu/dsl/stream_test.rb +1 -1
  163. data/test/lib/vedeu/events/event_test.rb +3 -1
  164. data/test/lib/vedeu/events/trigger_test.rb +8 -4
  165. data/test/lib/vedeu/geometry/dimension_test.rb +1 -1
  166. data/test/lib/vedeu/geometry/geometry_test.rb +5 -3
  167. data/test/lib/vedeu/geometry/index_position_test.rb +30 -7
  168. data/test/lib/vedeu/geometry/null_geometry_test.rb +57 -0
  169. data/test/lib/vedeu/geometry/position_index_test.rb +14 -0
  170. data/test/lib/vedeu/geometry/position_validator_test.rb +17 -3
  171. data/test/lib/vedeu/input/keymap_test.rb +3 -1
  172. data/test/lib/vedeu/input/mapper_test.rb +8 -4
  173. data/test/lib/vedeu/launcher_test.rb +1 -1
  174. data/test/lib/vedeu/models/cell_test.rb +10 -8
  175. data/test/lib/vedeu/models/char_test.rb +52 -28
  176. data/test/lib/vedeu/models/composition_test.rb +26 -4
  177. data/test/lib/vedeu/models/group_test.rb +11 -5
  178. data/test/lib/vedeu/models/interface_test.rb +32 -19
  179. data/test/lib/vedeu/models/line_test.rb +21 -25
  180. data/test/lib/vedeu/models/menu_test.rb +10 -6
  181. data/test/lib/vedeu/models/null_test.rb +66 -0
  182. data/test/lib/vedeu/models/stream_test.rb +13 -10
  183. data/test/lib/vedeu/output/border_test.rb +29 -8
  184. data/test/lib/vedeu/output/clear_test.rb +23 -4
  185. data/test/lib/vedeu/output/colour_test.rb +20 -4
  186. data/test/lib/vedeu/output/compressor_test.rb +43 -0
  187. data/test/lib/vedeu/output/html_char_test.rb +29 -17
  188. data/test/lib/vedeu/output/null_border_test.rb +2 -1
  189. data/test/lib/vedeu/output/output_test.rb +20 -30
  190. data/test/lib/vedeu/output/presentation_test.rb +39 -16
  191. data/test/lib/vedeu/output/refresh_test.rb +14 -10
  192. data/test/lib/vedeu/output/renderers/all_test.rb +96 -0
  193. data/test/lib/vedeu/output/renderers/file_renderer_test.rb +1 -1
  194. data/test/lib/vedeu/output/renderers/html_renderer_test.rb +13 -9
  195. data/test/lib/vedeu/output/renderers/json_renderer_test.rb +52 -0
  196. data/test/lib/vedeu/output/renderers/null_renderer_test.rb +19 -0
  197. data/test/lib/vedeu/output/style_test.rb +41 -1
  198. data/test/lib/vedeu/output/text_test.rb +61 -10
  199. data/test/lib/vedeu/output/translator_test.rb +14 -0
  200. data/test/lib/vedeu/output/viewport_test.rb +22 -3
  201. data/test/lib/vedeu/output/virtual_terminal_test.rb +3 -3
  202. data/test/lib/vedeu/output/wordwrap_test.rb +58 -45
  203. data/test/lib/vedeu/repositories/collections/chars_test.rb +16 -0
  204. data/test/lib/vedeu/repositories/collections/events_test.rb +16 -0
  205. data/test/lib/vedeu/repositories/collections/interfaces_test.rb +16 -0
  206. data/test/lib/vedeu/repositories/collections/keys_test.rb +16 -0
  207. data/test/lib/vedeu/repositories/collections/lines_test.rb +16 -0
  208. data/test/lib/vedeu/repositories/collections/streams_test.rb +16 -0
  209. data/test/lib/vedeu/repositories/repositories/background_colours_test.rb +17 -0
  210. data/test/lib/vedeu/repositories/repositories/borders_test.rb +51 -0
  211. data/test/lib/vedeu/repositories/repositories/buffers_test.rb +52 -0
  212. data/test/lib/vedeu/repositories/repositories/colours_test.rb +16 -0
  213. data/test/lib/vedeu/repositories/repositories/cursors_test.rb +39 -0
  214. data/test/lib/vedeu/repositories/repositories/events_repository_test.rb +17 -0
  215. data/test/lib/vedeu/repositories/repositories/foreground_colours_test.rb +17 -0
  216. data/test/lib/vedeu/repositories/repositories/geometries_test.rb +42 -0
  217. data/test/lib/vedeu/repositories/repositories/groups_test.rb +17 -0
  218. data/test/lib/vedeu/repositories/repositories/interfaces_repositories_test.rb +17 -0
  219. data/test/lib/vedeu/repositories/repositories/keymaps_test.rb +17 -0
  220. data/test/lib/vedeu/repositories/repositories/menus_test.rb +17 -0
  221. data/test/lib/vedeu/repositories/repository_test.rb +16 -36
  222. data/test/lib/vedeu/storage/associative_store_test.rb +69 -0
  223. data/test/lib/vedeu/storage/conveyor_store_test.rb +135 -0
  224. data/test/lib/vedeu/storage/fifo_store_test.rb +47 -0
  225. data/test/lib/vedeu/storage/store_test.rb +123 -0
  226. data/test/lib/vedeu/support/common_test.rb +0 -9
  227. data/test/lib/vedeu/support/terminal_test.rb +78 -55
  228. data/test/lib/vedeu/support/visibility_test.rb +80 -0
  229. data/test/test_helper.rb +13 -11
  230. data/vedeu.gemspec +4 -3
  231. metadata +92 -32
  232. data/lib/vedeu/cursor/toggle.rb +0 -55
  233. data/lib/vedeu/exceptions.rb +0 -37
  234. data/lib/vedeu/geometry/centre.rb +0 -85
  235. data/lib/vedeu/geometry/content.rb +0 -70
  236. data/lib/vedeu/geometry/limit.rb +0 -58
  237. data/lib/vedeu/output/compositor.rb +0 -62
  238. data/lib/vedeu/repositories/collections.rb +0 -41
  239. data/lib/vedeu/support/coercions.rb +0 -60
  240. data/lib/vedeu/support/sentence.rb +0 -91
  241. data/lib/vedeu/support/visible.rb +0 -90
  242. data/test/lib/vedeu/cursor/toggle_test.rb +0 -63
  243. data/test/lib/vedeu/geometry/centre_test.rb +0 -58
  244. data/test/lib/vedeu/geometry/content_test.rb +0 -98
  245. data/test/lib/vedeu/geometry/limit_test.rb +0 -30
  246. data/test/lib/vedeu/output/compositor_test.rb +0 -48
  247. data/test/lib/vedeu/repositories/all_test.rb +0 -135
  248. data/test/lib/vedeu/repositories/collections_test.rb +0 -71
  249. data/test/lib/vedeu/support/coercions_test.rb +0 -84
  250. data/test/lib/vedeu/support/sentence_test.rb +0 -56
  251. data/test/lib/vedeu/support/visible_test.rb +0 -161
@@ -5,8 +5,17 @@ module Vedeu
5
5
  describe Buffer do
6
6
 
7
7
  let(:described) { Vedeu::Buffer }
8
- let(:instance) { described.new(buffer_name, back, front, previous, repository) }
9
- let(:buffer_name) { 'krypton' }
8
+ let(:instance) { described.new(attributes) }
9
+ let(:attributes) {
10
+ {
11
+ name: _name,
12
+ back: back,
13
+ front: front,
14
+ previous: previous,
15
+ repository: repository,
16
+ }
17
+ }
18
+ let(:_name) { 'krypton' }
10
19
  let(:back) {}
11
20
  let(:front) {}
12
21
  let(:previous) {}
@@ -16,11 +25,13 @@ module Vedeu
16
25
 
17
26
  describe '#initialize' do
18
27
  it { instance.must_be_instance_of(described) }
19
- it { instance.instance_variable_get('@name').must_equal(buffer_name) }
28
+ it { instance.instance_variable_get('@name').must_equal(_name) }
20
29
  it { instance.instance_variable_get('@back').must_equal(back) }
21
30
  it { instance.instance_variable_get('@front').must_equal(front) }
22
31
  it { instance.instance_variable_get('@previous').must_equal(previous) }
23
- it { instance.instance_variable_get('@repository').must_equal(Vedeu.buffers) }
32
+ it do
33
+ instance.instance_variable_get('@repository').must_equal(Vedeu.buffers)
34
+ end
24
35
  end
25
36
 
26
37
  describe '#add' do
@@ -52,136 +63,101 @@ module Vedeu
52
63
  end
53
64
  end
54
65
 
55
- describe '#content' do
56
- subject { instance.content }
57
-
58
- it { subject.must_be_instance_of(Array) }
59
-
60
- context 'when there is content on the back buffer' do
61
- let(:back) {
62
- Vedeu.interface 'buffer' do
63
- lines do
64
- line 'old_back'
65
- end
66
- end
67
- }
68
- let(:buffer) { :back }
69
-
70
- it { subject.must_equal([back]) }
71
- end
72
-
73
- context 'when there is no content on the back buffer' do
74
- let(:buffer) { :back }
75
-
76
- it { subject.must_equal([]) }
77
- end
78
-
79
- context 'when there is no content on the back buffer' do
80
- let(:back) {}
81
- let(:buffer) { :back }
82
-
83
- it { subject.must_equal([]) }
84
- end
85
-
86
- context 'when there is content on the front buffer' do
87
- let(:buffer) { :front }
88
- let(:front) {
89
- Vedeu.interface 'buffer' do
90
- lines do
91
- line 'front'
92
- end
93
- end
94
- }
95
-
96
- it { subject.must_equal([front]) }
97
- end
98
-
99
- context 'when there is no content on the front buffer' do
100
- let(:buffer) { :front }
101
-
102
- it { subject.must_equal([]) }
103
- end
104
-
105
- context 'when there is no content on the front buffer' do
106
- let(:buffer) { :front }
107
- let(:front) {}
108
-
109
- it { subject.must_equal([]) }
110
- end
111
-
112
- context 'when there is content on the previous buffer' do
113
- let(:buffer) { :previous }
114
- let(:previous) {
115
- Vedeu.interface 'buffer' do
116
- lines do
117
- line 'old_back'
118
- end
119
- end
120
- }
121
-
122
- it { subject.must_equal([previous]) }
123
- end
124
-
125
- context 'when there is no content on the previous buffer' do
126
- let(:buffer) { :previous }
127
-
128
- it { subject.must_equal([]) }
129
- end
130
-
131
- context 'when there is no content on the previous buffer' do
132
- let(:buffer) { :previous }
133
- let(:previous) {}
134
-
135
- it { subject.must_equal([]) }
136
- end
137
- end
138
-
139
- describe '#swap' do
140
- subject { instance.swap }
141
-
142
- context 'when there is new content on the back buffer' do
143
- let(:back) {
144
- Vedeu.interface 'buffer' do
145
- lines do
146
- line 'back'
147
- end
148
- end
149
- }
150
- let(:front) {
151
- Vedeu.interface 'buffer' do
152
- lines do
153
- line 'front'
154
- end
155
- end
156
- }
157
- let(:previous) {
158
- Vedeu.interface 'buffer' do
159
- lines do
160
- line 'previous'
161
- end
162
- end
163
- }
164
-
165
- context 'when the buffer was updated successfully' do
166
- it { subject.must_equal(true) }
167
- end
168
-
169
- it 'replaces the previous buffer with the front buffer' do
170
- subject
171
- instance.previous.must_equal(front)
172
- end
173
-
174
- it 'replaces the front buffer with the back buffer' do
175
- subject
176
- instance.front.must_equal(back)
177
- end
178
-
179
- it 'replaces the back buffer with an empty buffer' do
180
- subject
181
- instance.back.must_equal(nil)
182
- end
183
- end
184
- end
66
+ # describe '#content' do
67
+ # subject { instance.content }
68
+
69
+ # it { subject.must_be_instance_of(Array) }
70
+
71
+ # context 'when there is content on the back buffer' do
72
+ # before { Vedeu::Output.stubs(:render) }
73
+
74
+ # let(:back) {
75
+ # Vedeu.interface 'buffer' do
76
+ # lines do
77
+ # line 'old_back'
78
+ # end
79
+ # end
80
+ # }
81
+ # let(:front) {
82
+ # Vedeu.interface 'buffer' do
83
+ # lines do
84
+ # line 'front'
85
+ # end
86
+ # end
87
+ # }
88
+ # let(:previous) {
89
+ # Vedeu.interface 'buffer' do
90
+ # lines do
91
+ # line 'previous'
92
+ # end
93
+ # end
94
+ # }
95
+ # let(:buffer) { :back }
96
+
97
+ # it { subject.must_equal([back]) }
98
+
99
+ # it 'replaces the previous buffer with the front buffer' do
100
+ # subject
101
+ # instance.previous.must_equal(front)
102
+ # end
103
+
104
+ # it 'replaces the front buffer with the back buffer' do
105
+ # subject
106
+ # instance.front.must_equal(back)
107
+ # end
108
+
109
+ # it 'replaces the back buffer with an empty buffer' do
110
+ # subject
111
+ # instance.back.must_equal(nil)
112
+ # end
113
+ # end
114
+
115
+ # context 'when there is no content on the back buffer' do
116
+ # let(:buffer) { :back }
117
+
118
+ # it { subject.must_equal([]) }
119
+ # end
120
+
121
+ # context 'when there is content on the front buffer' do
122
+ # before { Vedeu::Output.stubs(:render) }
123
+ # let(:buffer) { :front }
124
+ # let(:front) {
125
+ # Vedeu.interface 'buffer' do
126
+ # lines do
127
+ # line 'front'
128
+ # end
129
+ # end
130
+ # }
131
+
132
+ # it { subject.must_equal([front]) }
133
+ # end
134
+
135
+ # context 'when there is no content on the front buffer' do
136
+ # let(:buffer) { :front }
137
+
138
+ # it { subject.must_equal([]) }
139
+ # end
140
+
141
+ # context 'when there is content on the previous buffer' do
142
+ # before { Vedeu::Output.stubs(:render) }
143
+ # let(:buffer) { :previous }
144
+ # let(:previous) {
145
+ # Vedeu.interface 'buffer' do
146
+ # lines do
147
+ # line 'old_back'
148
+ # end
149
+ # end
150
+ # }
151
+
152
+ # it { subject.must_equal([previous]) }
153
+ # end
154
+
155
+ # context 'when there is no content on the previous buffer' do
156
+ # let(:buffer) { :previous }
157
+
158
+ # it { subject.must_equal([]) }
159
+ # end
160
+ # end
185
161
 
186
162
  end # Buffer
187
163
 
@@ -6,10 +6,18 @@ module Vedeu
6
6
  include Vedeu::Model
7
7
  include Vedeu::DisplayBuffer
8
8
 
9
+ def colour
10
+ Vedeu::Colour.new(background: '#000000', foreground: '#ffffff')
11
+ end
12
+
9
13
  def name
10
14
  'test_interface_model'
11
15
  end
12
16
 
17
+ def style
18
+ Vedeu::Style.new(:normal)
19
+ end
20
+
13
21
  private
14
22
 
15
23
  def repository
@@ -279,7 +279,11 @@ module Vedeu
279
279
  methods_and_keys.each do |meth, _|
280
280
  invalid_params.each do |param|
281
281
  context 'when the parameter is invalid' do
282
- it { proc { Vedeu.configure { send(meth, param) } }.must_raise(InvalidSyntax) }
282
+ it {
283
+ proc {
284
+ Vedeu.configure { send(meth, param) }
285
+ }.must_raise(InvalidSyntax)
286
+ }
283
287
  end
284
288
  end
285
289
  end
@@ -19,12 +19,10 @@ module Vedeu
19
19
 
20
20
  describe '.default_system_keys' do
21
21
  it 'returns the default system keys' do
22
- Configuration.default_system_keys.must_equal({
23
- exit: 'q',
24
- focus_next: :tab,
25
- focus_prev: :shift_tab,
26
- mode_switch: :escape,
27
- })
22
+ Configuration.default_system_keys.must_equal(exit: 'q',
23
+ focus_next: :tab,
24
+ focus_prev: :shift_tab,
25
+ mode_switch: :escape,)
28
26
  end
29
27
  end
30
28
 
@@ -13,7 +13,7 @@ module Vedeu
13
13
  ox: ox,
14
14
  oy: oy,
15
15
  repository: repository,
16
- state: state,
16
+ visible: visible,
17
17
  x: x,
18
18
  y: y,
19
19
  }
@@ -22,32 +22,39 @@ module Vedeu
22
22
  let(:ox) { 3 }
23
23
  let(:oy) { 2 }
24
24
  let(:repository) { Vedeu.cursors }
25
- let(:state) { :show }
25
+ let(:visible) { true }
26
26
  let(:x) { 19 }
27
27
  let(:y) { 8 }
28
28
 
29
29
  describe '#initialize' do
30
- it { instance.must_be_instance_of(Cursor) }
31
- it { instance.instance_variable_get('@name').must_equal('silver') }
32
- it { instance.instance_variable_get('@ox').must_equal(3) }
33
- it { instance.instance_variable_get('@oy').must_equal(2) }
34
- it { instance.instance_variable_get('@repository').must_equal(Vedeu.cursors) }
35
- it { instance.instance_variable_get('@state').must_be_instance_of(Vedeu::Visible) }
36
- it { instance.instance_variable_get('@x').must_equal(19) }
37
- it { instance.instance_variable_get('@y').must_equal(8) }
38
-
39
- it { instance.instance_variable_get('@position').must_be_instance_of(Vedeu::Position) }
30
+ subject { instance }
31
+
32
+ it { subject.must_be_instance_of(Cursor) }
33
+ it { subject.instance_variable_get('@name').must_equal('silver') }
34
+ it { subject.instance_variable_get('@ox').must_equal(3) }
35
+ it { subject.instance_variable_get('@oy').must_equal(2) }
36
+ it { subject.instance_variable_get('@repository').must_equal(repository) }
37
+ it { subject.instance_variable_get('@visible').must_equal(true) }
38
+ it { subject.instance_variable_get('@x').must_equal(19) }
39
+ it { subject.instance_variable_get('@y').must_equal(8) }
40
+
41
+ it do
42
+ subject.instance_variable_get('@position').
43
+ must_be_instance_of(Vedeu::Position)
44
+ end
40
45
  end
41
46
 
42
47
  describe '#inspect' do
43
48
  subject { instance.inspect }
44
49
 
45
50
  it { subject.must_be_instance_of(String) }
46
- it { subject.must_equal("<Vedeu::Cursor (silver, visible, x:19, y:8, ox:3, oy:2)>") }
51
+ it { subject.must_equal(
52
+ '<Vedeu::Cursor (silver, true, x:19, y:8, ox:3, oy:2)>'
53
+ ) }
47
54
  end
48
55
 
49
56
  describe '#to_s' do
50
- let(:state) { true }
57
+ let(:visible) { true }
51
58
 
52
59
  subject { instance.to_s }
53
60
 
@@ -60,7 +67,7 @@ module Vedeu
60
67
  end
61
68
 
62
69
  context 'when the cursor is invisible' do
63
- let(:state) { false }
70
+ let(:visible) { false }
64
71
 
65
72
  it 'returns the invisible cursor escape sequence with position' do
66
73
  subject.must_equal("\e[8;19H\e[?25l")
@@ -74,8 +81,9 @@ module Vedeu
74
81
  end
75
82
  }
76
83
 
77
- it 'returns the escape sequence to position and set the visibility of ' \
78
- 'the cursor and returns to that position after yielding the block' do
84
+ it 'returns the escape sequence to position and set the visibility ' \
85
+ 'of the cursor and returns to that position after yielding the ' \
86
+ 'block' do
79
87
  subject.must_equal("\e[8;19H\e[?25h\e[8;19H\e[?25h")
80
88
  end
81
89
  end
@@ -7,12 +7,12 @@ module Vedeu
7
7
  let(:described) { Vedeu::Move }
8
8
  let(:instance) { described.new(cursor, interface, dy, dx) }
9
9
  let(:cursor) {
10
- Cursor.new({ name: 'Move',
11
- ox: ox,
12
- oy: oy,
13
- state: :show,
14
- x: x,
15
- y: y })
10
+ Cursor.new(name: 'Move',
11
+ ox: ox,
12
+ oy: oy,
13
+ visible: true,
14
+ x: x,
15
+ y: y)
16
16
  }
17
17
  let(:ox) { 0 }
18
18
  let(:oy) { 0 }
@@ -75,7 +75,7 @@ module Vedeu
75
75
  Vedeu.cursors.reset
76
76
 
77
77
  interface_with_border
78
- Vedeu::Cursor.new({ name: 'manganese', oy: 2, ox: 3, x: 8, y: 7 }).store
78
+ Vedeu::Cursor.new(name: 'manganese', oy: 2, ox: 3, x: 8, y: 7).store
79
79
  end
80
80
 
81
81
  subject { Move.by_name(direction, _name) }
@@ -19,7 +19,7 @@ module Vedeu
19
19
 
20
20
  describe '#initialize' do
21
21
  it { instance.must_be_instance_of(described) }
22
- it { instance.instance_variable_get('@uri').must_equal('druby://localhost:21420') }
22
+ it { instance.instance_variable_get('@uri').must_equal(uri) }
23
23
  end
24
24
 
25
25
  describe '.connect' do
@@ -12,7 +12,9 @@ module Vedeu
12
12
  subject { instance }
13
13
 
14
14
  it { subject.must_be_instance_of(Vedeu::Subprocess) }
15
- it { subject.instance_variable_get('@application').must_equal(application) }
15
+ it do
16
+ subject.instance_variable_get('@application').must_equal(application)
17
+ end
16
18
  end
17
19
 
18
20
  end # Subprocess
@@ -16,7 +16,7 @@ module Vedeu
16
16
 
17
17
  it { subject.must_be_instance_of(described) }
18
18
  it { subject.instance_variable_get('@host').must_equal('localhost') }
19
- it { subject.instance_variable_get('@port').must_equal(21420) }
19
+ it { subject.instance_variable_get('@port').must_equal(21_420) }
20
20
  end
21
21
 
22
22
  describe '#host' do
@@ -41,23 +41,23 @@ module Vedeu
41
41
  subject { instance.port }
42
42
 
43
43
  context 'when the port has been defined by the client application' do
44
- let(:port) { 40000 }
44
+ let(:port) { 40_000 }
45
45
 
46
46
  it 'returns the port' do
47
- subject.must_equal(40000)
47
+ subject.must_equal(40_000)
48
48
  end
49
49
  end
50
50
 
51
51
  context 'when the port has not been redefined' do
52
52
  it 'returns the default port' do
53
- subject.must_equal(21420)
53
+ subject.must_equal(21_420)
54
54
  end
55
55
  end
56
56
  end
57
57
 
58
58
  describe '#to_s' do
59
59
  let(:host) { 'myserver' }
60
- let(:port) { 40000 }
60
+ let(:port) { 40_000 }
61
61
 
62
62
  subject { instance.to_s }
63
63
 
@@ -79,6 +79,25 @@ module Vedeu
79
79
  end
80
80
  end
81
81
 
82
+ # describe '#use' do
83
+ # subject {
84
+ # Vedeu::Geometry.build({ name: 'hydrogen' }) { use 'helium' }
85
+ # }
86
+
87
+ # context 'when the named geometry does not exist' do
88
+ # end
89
+
90
+ # context 'when the named geometry exists' do
91
+ # before do
92
+ # Vedeu::Geometry.build({ name: 'helium', x: 5 }).store
93
+ # end
94
+
95
+ # it { subject.must_be_instance_of(Vedeu::Geometry) }
96
+ # it { subject.name.must_equal('hydrogen') }
97
+ # it { subject.x.must_equal(5) }
98
+ # end
99
+ # end
100
+
82
101
  describe '#width' do
83
102
  subject { Vedeu::Geometry.build({}) { width 25 } }
84
103
 
@@ -211,6 +230,18 @@ module Vedeu
211
230
  subject { Vedeu::Geometry.build({}) { xn 15 } }
212
231
 
213
232
  it { subject.xn.must_equal(15) }
233
+
234
+ context 'when a block is given' do
235
+ subject {
236
+ Vedeu::Geometry.build({}) do
237
+ xn do
238
+ 8 + 8
239
+ end
240
+ end
241
+ }
242
+
243
+ it { subject.xn.must_equal(16) }
244
+ end
214
245
  end
215
246
 
216
247
  describe '#yn' do
@@ -219,6 +250,18 @@ module Vedeu
219
250
  subject { Vedeu::Geometry.build({}) { yn 8 } }
220
251
 
221
252
  it { subject.yn.must_equal(8) }
253
+
254
+ context 'when a block is given' do
255
+ subject {
256
+ Vedeu::Geometry.build({}) do
257
+ yn do
258
+ 5 + 3
259
+ end
260
+ end
261
+ }
262
+
263
+ it { subject.yn.must_equal(8) }
264
+ end
222
265
  end
223
266
 
224
267
  end # Geometry
@@ -8,7 +8,7 @@ module Vedeu
8
8
 
9
9
  let(:described) { Vedeu::DSL::Keymap }
10
10
  let(:instance) { described.new(model) }
11
- let(:model) { Vedeu::Keymap.new({ name: '_test_' }) }
11
+ let(:model) { Vedeu::Keymap.new(name: '_test_') }
12
12
 
13
13
  describe '#initialize' do
14
14
  it { instance.must_be_instance_of(described) }
@@ -39,15 +39,16 @@ module Vedeu
39
39
  let(:content) { "Hydrogen\nCarbon\nOxygen\nNitrogen" }
40
40
  let(:as_lines) {
41
41
  [
42
- Vedeu::Line.new({ streams: [Vedeu::Stream.new({ value: 'Hydrogen' })] }),
43
- Vedeu::Line.new({ streams: [Vedeu::Stream.new({ value: 'Carbon' })] }),
44
- Vedeu::Line.new({ streams: [Vedeu::Stream.new({ value: 'Oxygen' })] }),
45
- Vedeu::Line.new({ streams: [Vedeu::Stream.new({ value: 'Nitrogen' })] })
42
+ Vedeu::Line.new(streams: [Vedeu::Stream.new(value: 'Hydrogen')]),
43
+ Vedeu::Line.new(streams: [Vedeu::Stream.new(value: 'Carbon')]),
44
+ Vedeu::Line.new(streams: [Vedeu::Stream.new(value: 'Oxygen')]),
45
+ Vedeu::Line.new(streams: [Vedeu::Stream.new(value: 'Nitrogen')])
46
46
  ]
47
47
  }
48
48
 
49
49
  before do
50
- Vedeu::Template.expects(:parse).with(object, filename).returns(content)
50
+ Vedeu::Template.expects(:parse).
51
+ with(object, filename).returns(content)
51
52
  end
52
53
 
53
54
  subject { instance.template_for(_name, filename, object) }