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
@@ -35,13 +35,31 @@ module Vedeu
35
35
  end
36
36
  }
37
37
 
38
- it { subject.must_be_instance_of(Vedeu::Border) }
39
-
40
38
  context 'when the block is not given' do
41
39
  subject { instance.border }
42
40
 
43
41
  it { proc { subject }.must_raise(InvalidSyntax) }
44
42
  end
43
+
44
+ context 'when the block is given' do
45
+ subject { instance.border { } }
46
+
47
+ it { subject.must_be_instance_of(Vedeu::Border) }
48
+
49
+ context 'when the name is not given' do
50
+ it 'uses the interface name for storing the border' do
51
+ subject.name.must_equal('actinium')
52
+ end
53
+ end
54
+
55
+ context 'when the name is given' do
56
+ subject { instance.border('magnesium') { } }
57
+
58
+ it 'uses the name for storing the border' do
59
+ subject.name.must_equal('magnesium')
60
+ end
61
+ end
62
+ end
45
63
  end
46
64
 
47
65
  describe '#border!' do
@@ -59,7 +77,7 @@ module Vedeu
59
77
 
60
78
  it {
61
79
  subject
62
- Vedeu.cursors.find('actinium').state.visible?.must_equal(false)
80
+ Vedeu.cursors.find('actinium').visible?.must_equal(false)
63
81
  }
64
82
 
65
83
  context 'when the value is false' do
@@ -67,16 +85,16 @@ module Vedeu
67
85
 
68
86
  it {
69
87
  subject
70
- Vedeu.cursors.find('actinium').state.visible?.must_equal(false)
88
+ Vedeu.cursors.find('actinium').visible?.must_equal(false)
71
89
  }
72
90
  end
73
91
 
74
- context 'when the value is :hide' do
75
- let(:value) { :hide }
92
+ context 'when the value is nil' do
93
+ let(:value) {}
76
94
 
77
95
  it {
78
96
  subject
79
- Vedeu.cursors.find('actinium').state.visible?.must_equal(false)
97
+ Vedeu.cursors.find('actinium').visible?.must_equal(false)
80
98
  }
81
99
  end
82
100
 
@@ -85,7 +103,7 @@ module Vedeu
85
103
 
86
104
  it {
87
105
  subject
88
- Vedeu.cursors.find('actinium').state.visible?.must_equal(true)
106
+ Vedeu.cursors.find('actinium').visible?.must_equal(true)
89
107
  }
90
108
  end
91
109
 
@@ -94,7 +112,7 @@ module Vedeu
94
112
 
95
113
  it {
96
114
  subject
97
- Vedeu.cursors.find('actinium').state.visible?.must_equal(true)
115
+ Vedeu.cursors.find('actinium').visible?.must_equal(true)
98
116
  }
99
117
  end
100
118
 
@@ -103,7 +121,7 @@ module Vedeu
103
121
 
104
122
  it {
105
123
  subject
106
- Vedeu.cursors.find('actinium').state.visible?.must_equal(true)
124
+ Vedeu.cursors.find('actinium').visible?.must_equal(true)
107
125
  }
108
126
  end
109
127
  end
@@ -113,7 +131,7 @@ module Vedeu
113
131
 
114
132
  it {
115
133
  subject
116
- Vedeu.cursors.find('actinium').state.visible?.must_equal(true)
134
+ Vedeu.cursors.find('actinium').visible?.must_equal(true)
117
135
  }
118
136
  end
119
137
 
@@ -159,13 +177,31 @@ module Vedeu
159
177
  end
160
178
  }
161
179
 
162
- it { subject.must_be_instance_of(Vedeu::Geometry) }
163
-
164
- context 'when the require block is not provided' do
180
+ context 'when the required block is not provided' do
165
181
  subject { instance.geometry }
166
182
 
167
183
  it { proc { subject }.must_raise(InvalidSyntax) }
168
184
  end
185
+
186
+ context 'when the block is given' do
187
+ subject { instance.geometry { } }
188
+
189
+ it { subject.must_be_instance_of(Vedeu::Geometry) }
190
+
191
+ context 'when the name is not given' do
192
+ it 'uses the interface name for storing the geometry' do
193
+ subject.name.must_equal('actinium')
194
+ end
195
+ end
196
+
197
+ context 'when the name is given' do
198
+ subject { instance.geometry('magnesium') { } }
199
+
200
+ it 'uses the name for storing the geometry' do
201
+ subject.name.must_equal('magnesium')
202
+ end
203
+ end
204
+ end
169
205
  end
170
206
 
171
207
  describe '#group' do
@@ -184,13 +220,15 @@ module Vedeu
184
220
  end
185
221
 
186
222
  context 'when the named group exists' do
223
+ let(:members) { Set['actinium', 'lanthanum'] }
224
+
187
225
  before do
188
- Vedeu::Group.new({ name: 'elements', members: ['lanthanum'] }).store
226
+ Vedeu::Group.new(name: 'elements', members: ['lanthanum']).store
189
227
  end
190
228
 
191
229
  it {
192
230
  subject
193
- Vedeu.groups.find('elements').members.must_equal(Set['actinium', 'lanthanum'])
231
+ Vedeu.groups.find('elements').members.must_equal(members)
194
232
  }
195
233
  end
196
234
 
@@ -238,6 +276,33 @@ module Vedeu
238
276
  end
239
277
  end
240
278
 
279
+ describe '#show!' do
280
+ subject {
281
+ Vedeu.interface 'xenon' do
282
+ show!
283
+ end
284
+ }
285
+
286
+ it { subject.visible.must_equal(true) }
287
+ end
288
+
289
+ describe '#hide!' do
290
+ subject {
291
+ Vedeu.interface 'xenon' do
292
+ hide!
293
+ end
294
+ }
295
+
296
+ it { subject.visible.must_equal(false) }
297
+ end
298
+
299
+ describe '#visible' do
300
+ it { instance.visible(false).must_equal(false) }
301
+ it { instance.visible(true).must_equal(true) }
302
+ it { instance.visible(nil).must_equal(false) }
303
+ it { instance.visible(:show).must_equal(true) }
304
+ end
305
+
241
306
  end # Interface
242
307
 
243
308
  end # DSL
@@ -26,7 +26,7 @@ module Vedeu
26
26
 
27
27
  it 'sets the background' do
28
28
  subject.attributes.must_equal(
29
- { background: '#00ff00', foreground: '' }
29
+ background: '#00ff00', foreground: ''
30
30
  )
31
31
  end
32
32
  end
@@ -38,7 +38,7 @@ module Vedeu
38
38
 
39
39
  it 'sets the foreground' do
40
40
  subject.attributes.must_equal(
41
- { background: '', foreground: '#ff00ff' }
41
+ background: '', foreground: '#ff00ff'
42
42
  )
43
43
  end
44
44
  end
@@ -55,7 +55,7 @@ module Vedeu
55
55
 
56
56
  it 'sets only the valid attributes' do
57
57
  subject.attributes.must_equal(
58
- { background: '', foreground: '#ff00ff' }
58
+ background: '', foreground: '#ff00ff'
59
59
  )
60
60
  end
61
61
  end
@@ -65,7 +65,7 @@ module Vedeu
65
65
 
66
66
  it 'sets only the valid attributes' do
67
67
  subject.attributes.must_equal(
68
- { background: '#00ff00', foreground: '' }
68
+ background: '#00ff00', foreground: ''
69
69
  )
70
70
  end
71
71
  end
@@ -4,27 +4,105 @@ module Vedeu
4
4
 
5
5
  module DSL
6
6
 
7
- class TextTestClass
8
- include Vedeu::DSL::Text
9
-
10
- end
11
-
12
7
  describe Text do
13
8
 
14
- let(:instance) { Vedeu::DSL::TextTestClass.new }
15
- let(:value) {}
16
- let(:options) { {} }
17
-
18
9
  describe '#text' do
10
+ let(:value) {}
11
+ let(:options) { {} }
12
+ let(:modified_options) {
13
+ {
14
+ anchor: anchor,
15
+ model: model,
16
+ }
17
+ }
18
+ let(:anchor) { :text }
19
+ let(:model) { Vedeu::Line.new }
20
+ let(:instance) { Vedeu::DSL::Line.new(model) }
21
+
19
22
  subject { instance.text(value, options) }
20
23
 
21
24
  context 'when the model is a Vedeu::Interface' do
25
+ let(:model) { Vedeu::Interface.new }
26
+ let(:instance) { Vedeu::DSL::Interface.new(model) }
27
+
28
+ it { subject.must_be_instance_of(Vedeu::Lines) }
29
+
30
+ it 'adds the text to the model' do
31
+ Vedeu::Text.expects(:add).with(value, modified_options)
32
+ subject
33
+ end
22
34
  end
23
35
 
24
36
  context 'when the model is a Vedeu::Line' do
37
+ let(:model) { Vedeu::Line.new }
38
+ let(:instance) { Vedeu::DSL::Line.new(model) }
39
+
40
+ it { subject.must_be_instance_of(Vedeu::Streams) }
41
+
42
+ it 'adds the text to the model' do
43
+ Vedeu::Text.expects(:add).with(value, modified_options)
44
+ subject
45
+ end
25
46
  end
26
47
 
27
48
  context 'when the model is a Vedeu::Stream' do
49
+ let(:parent) { Vedeu::Line.new }
50
+ let(:model) { Vedeu::Stream.new(parent: parent) }
51
+ let(:instance) { Vedeu::DSL::Stream.new(model) }
52
+
53
+ it { subject.must_be_instance_of(Vedeu::Streams) }
54
+
55
+ it 'adds the text to the model' do
56
+ Vedeu::Text.expects(:add).with(value, modified_options)
57
+ subject
58
+ end
59
+ end
60
+
61
+ context 'alias methods' do
62
+ context '#align' do
63
+ let(:anchor) { :align }
64
+
65
+ it 'adds the text to the model' do
66
+ Vedeu::Text.expects(:add).with(value, modified_options)
67
+ instance.align(value, options)
68
+ end
69
+ end
70
+
71
+ context '#center' do
72
+ let(:anchor) { :center }
73
+
74
+ it 'adds the text to the model' do
75
+ Vedeu::Text.expects(:add).with(value, modified_options)
76
+ instance.center(value, options)
77
+ end
78
+ end
79
+
80
+ context '#centre' do
81
+ let(:anchor) { :centre }
82
+
83
+ it 'adds the text to the model' do
84
+ Vedeu::Text.expects(:add).with(value, modified_options)
85
+ instance.centre(value, options)
86
+ end
87
+ end
88
+
89
+ context '#left' do
90
+ let(:anchor) { :left }
91
+
92
+ it 'adds the text to the model' do
93
+ Vedeu::Text.expects(:add).with(value, modified_options)
94
+ instance.left(value, options)
95
+ end
96
+ end
97
+
98
+ context '#right' do
99
+ let(:anchor) { :right }
100
+
101
+ it 'adds the text to the model' do
102
+ Vedeu::Text.expects(:add).with(value, modified_options)
103
+ instance.right(value, options)
104
+ end
105
+ end
28
106
  end
29
107
  end
30
108
 
@@ -8,7 +8,7 @@ module Vedeu
8
8
 
9
9
  let(:described) { Vedeu::DSL::Stream }
10
10
  let(:instance) { described.new(model) }
11
- let(:model) { Vedeu::Stream.new({ parent: parent }) }
11
+ let(:model) { Vedeu::Stream.new(parent: parent) }
12
12
  let(:client) {}
13
13
  let(:parent) { Vedeu::Line.new }
14
14
 
@@ -29,7 +29,9 @@ module Vedeu
29
29
  it { instance.instance_variable_get('@deadline').must_equal(0) }
30
30
  it { instance.instance_variable_get('@executed_at').must_equal(0) }
31
31
  it { instance.instance_variable_get('@now').must_equal(0) }
32
- it { instance.instance_variable_get('@repository').must_equal(Vedeu.events) }
32
+ it do
33
+ instance.instance_variable_get('@repository').must_equal(Vedeu.events)
34
+ end
33
35
  end
34
36
 
35
37
  describe '#bind' do
@@ -18,10 +18,14 @@ module Vedeu
18
18
  end
19
19
 
20
20
  describe '#initialize' do
21
- it { instance.must_be_instance_of(Vedeu::Trigger) }
22
- it { instance.instance_variable_get('@name').must_equal(event_name) }
23
- it { instance.instance_variable_get('@args').must_equal([args]) }
24
- it { instance.instance_variable_get('@repository').must_equal(Vedeu.events) }
21
+ subject { instance }
22
+
23
+ it { subject.must_be_instance_of(Vedeu::Trigger) }
24
+ it { subject.instance_variable_get('@name').must_equal(event_name) }
25
+ it { subject.instance_variable_get('@args').must_equal([args]) }
26
+ it do
27
+ subject.instance_variable_get('@repository').must_equal(Vedeu.events)
28
+ end
25
29
  end
26
30
 
27
31
  describe '#trigger' do
@@ -117,7 +117,7 @@ module Vedeu
117
117
  let(:d) { 5 }
118
118
  let(:d_dn) { 2 }
119
119
 
120
- it { subject.must_equal(7) }
120
+ it { subject.must_equal(6) }
121
121
  end
122
122
 
123
123
  context 'when only d_dn is given' do
@@ -40,7 +40,9 @@ module Vedeu
40
40
  it { instance.instance_variable_get('@xn').must_equal(xn) }
41
41
  it { instance.instance_variable_get('@y').must_equal(y) }
42
42
  it { instance.instance_variable_get('@yn').must_equal(yn) }
43
- it { instance.instance_variable_get('@repository').must_equal(Vedeu.geometries) }
43
+ it do
44
+ instance.instance_variable_get('@repository').must_equal(Vedeu.geometries)
45
+ end
44
46
  end
45
47
 
46
48
  describe '#top, #right, #bottom, #left' do
@@ -85,7 +87,7 @@ module Vedeu
85
87
 
86
88
  it { instance.top.must_equal(4) }
87
89
  it { instance.right.must_equal(18) }
88
- it { instance.bottom.must_equal(10) }
90
+ it { instance.bottom.must_equal(9) }
89
91
  it { instance.left.must_equal(1) }
90
92
  end
91
93
 
@@ -93,7 +95,7 @@ module Vedeu
93
95
  let(:attributes) { { height: 6, width: 18, x: 4 } }
94
96
 
95
97
  it { instance.top.must_equal(1) }
96
- it { instance.right.must_equal(22) }
98
+ it { instance.right.must_equal(21) }
97
99
  it { instance.bottom.must_equal(6) }
98
100
  it { instance.left.must_equal(4) }
99
101
  end
@@ -53,16 +53,25 @@ module Vedeu
53
53
 
54
54
  it { subject.must_be_instance_of(Vedeu::Position) }
55
55
 
56
- context 'when the interface has a border' do
57
- before { Vedeu.border('IndexPosition.from_interface') {} }
56
+ context 'when the interface is registered' do
57
+ context 'when the interface has a border' do
58
+ before { Vedeu.border('IndexPosition.from_interface') {} }
58
59
 
59
- it { subject.x.must_equal(8) }
60
- it { subject.y.must_equal(10) }
60
+ it { subject.x.must_equal(8) }
61
+ it { subject.y.must_equal(10) }
62
+ end
63
+
64
+ context 'when the interface does not have a border' do
65
+ it { subject.x.must_equal(7) }
66
+ it { subject.y.must_equal(9) }
67
+ end
61
68
  end
62
69
 
63
- context 'when the interface does not have a border' do
64
- it { subject.x.must_equal(7) }
65
- it { subject.y.must_equal(9) }
70
+ context 'when the interface is not registered' do
71
+ before { Vedeu.interfaces.reset }
72
+
73
+ it { subject.x.must_equal(4) }
74
+ it { subject.y.must_equal(4) }
66
75
  end
67
76
  end
68
77
 
@@ -74,6 +83,20 @@ module Vedeu
74
83
  it { subject.x.must_equal(22) }
75
84
  end
76
85
 
86
+ describe '#eql?' do
87
+ let(:other) { described.new(8, 21) }
88
+
89
+ subject { instance.eql?(other) }
90
+
91
+ it { subject.must_equal(true) }
92
+
93
+ context 'when different to other' do
94
+ let(:other) { described.new(2, 9) }
95
+
96
+ it { subject.must_equal(false) }
97
+ end
98
+ end
99
+
77
100
  describe '#y' do
78
101
  subject { instance.y }
79
102
 
@@ -0,0 +1,57 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ describe NullGeometry do
6
+
7
+ let(:described) { Vedeu::NullGeometry }
8
+ let(:instance) { described.new }
9
+
10
+ before do
11
+ Vedeu::Terminal.stubs(:height).returns(25)
12
+ Vedeu::Terminal.stubs(:width).returns(40)
13
+ end
14
+
15
+ describe '#initialize' do
16
+ it { instance.must_be_instance_of(described) }
17
+ end
18
+
19
+ describe '#centred' do
20
+ subject { instance.centred }
21
+
22
+ it { subject.must_equal(false) }
23
+ end
24
+
25
+ describe '#store' do
26
+ subject { instance.store }
27
+
28
+ it { subject.must_be_instance_of(described) }
29
+ end
30
+
31
+ describe '#height' do
32
+ it { instance.height.must_equal(25) }
33
+ end
34
+
35
+ describe '#width' do
36
+ it { instance.width.must_equal(40) }
37
+ end
38
+
39
+ describe '#x' do
40
+ it { instance.x.must_equal(1) }
41
+ end
42
+
43
+ describe '#xn' do
44
+ it { instance.xn.must_equal(40) }
45
+ end
46
+
47
+ describe '#y' do
48
+ it { instance.y.must_equal(1) }
49
+ end
50
+
51
+ describe '#yn' do
52
+ it { instance.yn.must_equal(25) }
53
+ end
54
+
55
+ end # NullGeometry
56
+
57
+ end # Vedeu
@@ -41,6 +41,20 @@ module Vedeu
41
41
  it { subject.must_equal([5, 16]) }
42
42
  end
43
43
 
44
+ describe '#eql?' do
45
+ let(:other) { described.new(6, 17) }
46
+
47
+ subject { instance.eql?(other) }
48
+
49
+ it { subject.must_equal(true) }
50
+
51
+ context 'when different to other' do
52
+ let(:other) { described.new(2, 9) }
53
+
54
+ it { subject.must_equal(false) }
55
+ end
56
+ end
57
+
44
58
  describe '#to_position' do
45
59
  subject { instance.to_position }
46
60
 
@@ -5,18 +5,32 @@ module Vedeu
5
5
  describe PositionValidator do
6
6
 
7
7
  let(:described) { Vedeu::PositionValidator }
8
- let(:instance) { described.new(interface, x, y) }
9
- let(:interface) {}
8
+ let(:instance) { described.new(_name, x, y) }
9
+ let(:_name) {}
10
10
  let(:x) {}
11
11
  let(:y) {}
12
12
 
13
13
  describe '#initialize' do
14
14
  it { instance.must_be_instance_of(described) }
15
- it { instance.instance_variable_get('@interface').must_equal(interface) }
15
+ it { instance.instance_variable_get('@name').must_equal(_name) }
16
16
  it { instance.instance_variable_get('@x').must_equal(x) }
17
17
  it { instance.instance_variable_get('@y').must_equal(y) }
18
18
  end
19
19
 
20
+ describe '.validate' do
21
+ subject { described.validate(_name, x, y) }
22
+
23
+ it { instance.must_be_instance_of(described) }
24
+ end
25
+
26
+ describe '#y' do
27
+ subject { described.validate(_name, x, y).y }
28
+ end
29
+
30
+ describe '#x' do
31
+ subject { described.validate(_name, x, y).x }
32
+ end
33
+
20
34
  end # PositionValidator
21
35
 
22
36
  end # Vedeu
@@ -20,7 +20,9 @@ module Vedeu
20
20
  it { instance.must_be_instance_of(Keymap) }
21
21
  it { instance.instance_variable_get('@name').must_equal(map_name) }
22
22
  it { instance.instance_variable_get('@keys').must_be_instance_of(Array) }
23
- it { instance.instance_variable_get('@repository').must_equal(Vedeu.keymaps) }
23
+ it do
24
+ instance.instance_variable_get('@repository').must_equal(Vedeu.keymaps)
25
+ end
24
26
  end
25
27
 
26
28
  describe '#add' do
@@ -18,12 +18,16 @@ module Vedeu
18
18
  it { instance.must_be_instance_of(described) }
19
19
  it { instance.instance_variable_get('@key').must_equal(key) }
20
20
  it { instance.instance_variable_get('@name').must_equal(keymap) }
21
- it { instance.instance_variable_get('@repository').must_equal(Vedeu.keymaps) }
21
+ it do
22
+ instance.instance_variable_get('@repository').must_equal(Vedeu.keymaps)
23
+ end
22
24
 
23
25
  context 'when the repository is provided' do
24
26
  let(:repository) { Vedeu::Repository.new }
25
27
 
26
- it { instance.instance_variable_get('@repository').must_equal(repository) }
28
+ it do
29
+ instance.instance_variable_get('@repository').must_equal(repository)
30
+ end
27
31
  end
28
32
  end
29
33
 
@@ -41,7 +45,7 @@ module Vedeu
41
45
 
42
46
  context 'and the key is defined' do
43
47
  let(:key_test) { Key.new('a') { :do_something } }
44
- let(:keymap_test) { Keymap.new({ name: 'test', keys: [key_test] }) }
48
+ let(:keymap_test) { Keymap.new(name: 'test', keys: [key_test]) }
45
49
 
46
50
  before do
47
51
  Vedeu.keymaps.reset
@@ -71,7 +75,7 @@ module Vedeu
71
75
 
72
76
  context 'and the key is defined' do
73
77
  let(:key_test) { Key.new('a') { :do_something } }
74
- let(:keymap_test) { Keymap.new({ name: 'test', keys: [key_test] }) }
78
+ let(:keymap_test) { Keymap.new(name: 'test', keys: [key_test]) }
75
79
 
76
80
  before do
77
81
  Vedeu.keymaps.reset
@@ -8,7 +8,7 @@ module Vedeu
8
8
  let(:instance) { described.new }
9
9
 
10
10
  before do
11
- Configuration.stubs(:configure)#.returns(test_configuration)
11
+ Configuration.stubs(:configure)# .returns(test_configuration)
12
12
  Application.stubs(:start)
13
13
  Kernel.stubs(:exit)
14
14
  Kernel.stubs(:puts)
@@ -24,17 +24,19 @@ module Vedeu
24
24
  let(:y) {}
25
25
 
26
26
  describe '#initialize' do
27
- it { instance.must_be_instance_of(Vedeu::Cell) }
28
- it { instance.instance_variable_get('@background').must_equal(background) }
29
- it { instance.instance_variable_get('@foreground').must_equal(foreground) }
30
- it { instance.instance_variable_get('@style').must_equal(style) }
31
- it { instance.instance_variable_get('@value').must_equal(value) }
32
- it { instance.instance_variable_get('@x').must_equal(x) }
33
- it { instance.instance_variable_get('@y').must_equal(y) }
27
+ subject { instance }
28
+
29
+ it { subject.must_be_instance_of(described) }
30
+ it { subject.instance_variable_get('@background').must_equal(background) }
31
+ it { subject.instance_variable_get('@foreground').must_equal(foreground) }
32
+ it { subject.instance_variable_get('@style').must_equal(style) }
33
+ it { subject.instance_variable_get('@value').must_equal(value) }
34
+ it { subject.instance_variable_get('@x').must_equal(x) }
35
+ it { subject.instance_variable_get('@y').must_equal(y) }
34
36
  end
35
37
 
36
38
  describe '#eql?' do
37
- let(:other) { described.new({ background: '#000000' }) }
39
+ let(:other) { described.new(background: '#000000') }
38
40
 
39
41
  subject { instance.eql?(other) }
40
42