vedeu 0.7.4 → 0.8.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.
Files changed (277) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -0
  3. data/docs/api.md +5 -1
  4. data/docs/borders.md +2 -26
  5. data/docs/dsl.md +4 -4
  6. data/docs/dsl_elements.md +100 -0
  7. data/docs/events/by_name/action.md +3 -0
  8. data/docs/events/by_name/cursor_hide.md +3 -0
  9. data/docs/events/by_name/cursor_reset.md +3 -0
  10. data/docs/events/by_name/cursor_show.md +3 -0
  11. data/docs/events/by_name/geometry_down.md +3 -0
  12. data/docs/events/by_name/geometry_left.md +3 -0
  13. data/docs/events/by_name/geometry_right.md +3 -0
  14. data/docs/events/by_name/geometry_up.md +3 -0
  15. data/docs/events/by_name/hide_view.md +3 -0
  16. data/docs/events/by_name/set_border_caption.md +13 -0
  17. data/docs/events/by_name/set_border_title.md +13 -0
  18. data/docs/events/by_name/show_view.md +3 -0
  19. data/docs/events/by_name/standalone.md +3 -0
  20. data/docs/events/by_name/toggle_view.md +3 -0
  21. data/docs/events/by_name/view_down.md +4 -0
  22. data/docs/events/by_name/view_left.md +4 -0
  23. data/docs/events/by_name/view_right.md +4 -0
  24. data/docs/events/by_name/view_up.md +4 -0
  25. data/examples/views/empty_template.rb +46 -0
  26. data/examples/views/expected/line.out +1 -0
  27. data/examples/views/expected/lines.out +1 -0
  28. data/examples/views/expected/lines_alignment.out +1 -0
  29. data/examples/views/line.rb +220 -0
  30. data/examples/views/lines.rb +281 -0
  31. data/examples/views/lines_alignment.rb +231 -0
  32. data/examples/views/lines_line_stream.rb +99 -0
  33. data/examples/views/lines_line_streams.rb +73 -0
  34. data/examples/views/lines_line_streams_stream.rb +83 -0
  35. data/examples/views/lines_line_streams_stream_stream.rb +53 -0
  36. data/examples/views/lines_streams.rb +50 -0
  37. data/examples/views/lines_streams_stream.rb +51 -0
  38. data/examples/views/runner.sh +27 -0
  39. data/lib/vedeu/all.rb +6 -2
  40. data/lib/vedeu/application/controller.rb +1 -1
  41. data/lib/vedeu/boolean.rb +35 -0
  42. data/lib/vedeu/borders/border.rb +3 -3
  43. data/lib/vedeu/borders/caption.rb +1 -1
  44. data/lib/vedeu/borders/dsl.rb +1 -20
  45. data/lib/vedeu/borders/title.rb +6 -8
  46. data/lib/vedeu/buffers/buffer.rb +2 -2
  47. data/lib/vedeu/buffers/refresh.rb +1 -1
  48. data/lib/vedeu/cells/border.rb +0 -11
  49. data/lib/vedeu/cells/empty.rb +4 -4
  50. data/lib/vedeu/{geometries/alignment → coercers}/alignment.rb +50 -53
  51. data/lib/vedeu/coercers/all.rb +16 -0
  52. data/lib/vedeu/coercers/colour.rb +78 -0
  53. data/lib/vedeu/coercers/colour_attributes.rb +122 -0
  54. data/lib/vedeu/coercers/horizontal_alignment.rb +28 -0
  55. data/lib/vedeu/coercers/vertical_alignment.rb +27 -0
  56. data/lib/vedeu/colours/all.rb +1 -0
  57. data/lib/vedeu/colours/background.rb +13 -2
  58. data/lib/vedeu/colours/colour.rb +16 -31
  59. data/lib/vedeu/colours/foreground.rb +13 -2
  60. data/lib/vedeu/colours/translator.rb +21 -59
  61. data/lib/vedeu/colours/validator.rb +84 -0
  62. data/lib/vedeu/common.rb +52 -0
  63. data/lib/vedeu/configuration/api.rb +4 -10
  64. data/lib/vedeu/configuration/configuration.rb +4 -4
  65. data/lib/vedeu/cursors/coordinate.rb +1 -1
  66. data/lib/vedeu/cursors/cursor.rb +1 -1
  67. data/lib/vedeu/cursors/dsl.rb +1 -28
  68. data/lib/vedeu/dsl/all.rb +7 -7
  69. data/lib/vedeu/dsl/attributes.rb +224 -0
  70. data/lib/vedeu/dsl/border.rb +127 -0
  71. data/lib/vedeu/dsl/cursors.rb +44 -0
  72. data/lib/vedeu/dsl/dsl.rb +9 -0
  73. data/lib/vedeu/dsl/elements.rb +335 -0
  74. data/lib/vedeu/dsl/geometry.rb +113 -0
  75. data/lib/vedeu/dsl/string/align.rb +127 -0
  76. data/lib/vedeu/dsl/string/all.rb +14 -0
  77. data/lib/vedeu/dsl/string/text.rb +107 -0
  78. data/lib/vedeu/dsl/string/truncate.rb +111 -0
  79. data/lib/vedeu/{output → dsl/string}/wordwrap.rb +10 -6
  80. data/lib/vedeu/dsl/view.rb +124 -248
  81. data/lib/vedeu/dsl/views.rb +244 -0
  82. data/lib/vedeu/editor/cursor.rb +1 -1
  83. data/lib/vedeu/editor/delete.rb +3 -1
  84. data/lib/vedeu/editor/insert.rb +22 -6
  85. data/lib/vedeu/editor/line.rb +15 -9
  86. data/lib/vedeu/editor/lines.rb +27 -18
  87. data/lib/vedeu/esc/actions.rb +73 -26
  88. data/lib/vedeu/esc/all.rb +2 -0
  89. data/lib/vedeu/esc/background.rb +219 -0
  90. data/lib/vedeu/esc/borders.rb +72 -26
  91. data/lib/vedeu/esc/colours.rb +26 -27
  92. data/lib/vedeu/esc/esc.rb +4 -4
  93. data/lib/vedeu/esc/foreground.rb +219 -0
  94. data/lib/vedeu/esc/mouse.rb +16 -13
  95. data/lib/vedeu/events/aliases.rb +2 -2
  96. data/lib/vedeu/events/event.rb +1 -1
  97. data/lib/vedeu/geometries/all.rb +0 -1
  98. data/lib/vedeu/geometries/area/dimension.rb +2 -2
  99. data/lib/vedeu/geometries/dsl/dsl.rb +3 -51
  100. data/lib/vedeu/geometries/dsl/validator.rb +4 -4
  101. data/lib/vedeu/geometries/geometry.rb +10 -10
  102. data/lib/vedeu/geometries/move.rb +4 -4
  103. data/lib/vedeu/groups/dsl.rb +1 -0
  104. data/lib/vedeu/groups/group.rb +1 -1
  105. data/lib/vedeu/input/all.rb +1 -0
  106. data/lib/vedeu/input/capture.rb +14 -10
  107. data/lib/vedeu/input/dsl.rb +20 -26
  108. data/lib/vedeu/input/key.rb +0 -6
  109. data/lib/vedeu/input/keymap.rb +4 -9
  110. data/lib/vedeu/input/keys.rb +13 -0
  111. data/lib/vedeu/input/mapper.rb +29 -14
  112. data/lib/vedeu/input/read.rb +4 -2
  113. data/lib/vedeu/interfaces/dsl.rb +23 -22
  114. data/lib/vedeu/interfaces/interface.rb +2 -2
  115. data/lib/vedeu/logging/debug.rb +33 -0
  116. data/lib/vedeu/logging/log.rb +42 -33
  117. data/lib/vedeu/menus/dsl.rb +7 -18
  118. data/lib/vedeu/menus/menu.rb +1 -1
  119. data/lib/vedeu/models/focus.rb +1 -1
  120. data/lib/vedeu/models/toggleable.rb +4 -4
  121. data/lib/vedeu/null/generic.rb +2 -2
  122. data/lib/vedeu/output/all.rb +0 -2
  123. data/lib/vedeu/output/compressor_cache.rb +1 -1
  124. data/lib/vedeu/output/output.rb +5 -20
  125. data/lib/vedeu/presentation/colour.rb +39 -7
  126. data/lib/vedeu/presentation/style.rb +25 -11
  127. data/lib/vedeu/renderers/html.rb +11 -11
  128. data/lib/vedeu/repositories/assemblage.rb +9 -0
  129. data/lib/vedeu/repositories/collection.rb +1 -0
  130. data/lib/vedeu/repositories/defaults.rb +4 -1
  131. data/lib/vedeu/repositories/model.rb +7 -37
  132. data/lib/vedeu/repositories/parent.rb +6 -6
  133. data/lib/vedeu/repositories/registerable.rb +16 -2
  134. data/lib/vedeu/repositories/repositories.rb +1 -1
  135. data/lib/vedeu/repositories/repository.rb +2 -12
  136. data/lib/vedeu/runtime/flags.rb +1 -1
  137. data/lib/vedeu/terminal/terminal.rb +7 -2
  138. data/lib/vedeu/version.rb +1 -1
  139. data/lib/vedeu/views/all.rb +4 -1
  140. data/lib/vedeu/views/char.rb +5 -4
  141. data/lib/vedeu/views/chars.rb +42 -0
  142. data/lib/vedeu/views/composition.rb +15 -30
  143. data/lib/vedeu/views/default_attributes.rb +74 -0
  144. data/lib/vedeu/views/html_char.rb +2 -2
  145. data/lib/vedeu/views/line.rb +27 -53
  146. data/lib/vedeu/views/lines.rb +31 -0
  147. data/lib/vedeu/views/stream.rb +31 -78
  148. data/lib/vedeu/views/streams.rb +42 -0
  149. data/lib/vedeu/views/value.rb +150 -0
  150. data/lib/vedeu/views/view.rb +32 -36
  151. data/lib/vedeu/views/{view_collection.rb → views.rb} +2 -2
  152. data/test/lib/vedeu/application/application_controller_test.rb +5 -0
  153. data/test/lib/vedeu/application/controller_test.rb +22 -28
  154. data/test/lib/vedeu/boolean_test.rb +57 -0
  155. data/test/lib/vedeu/borders/border_test.rb +130 -36
  156. data/test/lib/vedeu/borders/dsl_test.rb +63 -10
  157. data/test/lib/vedeu/borders/title_test.rb +16 -5
  158. data/test/lib/vedeu/buffers/buffer_test.rb +26 -10
  159. data/test/lib/vedeu/buffers/empty_test.rb +1 -1
  160. data/test/lib/vedeu/cells/border_test.rb +0 -6
  161. data/test/lib/vedeu/cells/clear_test.rb +2 -0
  162. data/test/lib/vedeu/cells/empty_test.rb +12 -2
  163. data/test/lib/vedeu/cells/escape_test.rb +7 -2
  164. data/test/lib/vedeu/{geometries/alignment → coercers}/alignment_test.rb +44 -19
  165. data/test/lib/vedeu/coercers/colour_attributes_test.rb +168 -0
  166. data/test/lib/vedeu/coercers/colour_test.rb +75 -0
  167. data/test/lib/vedeu/{geometries/alignment → coercers}/horizontal_alignment_test.rb +6 -6
  168. data/test/lib/vedeu/{geometries/alignment → coercers}/vertical_alignment_test.rb +6 -6
  169. data/test/lib/vedeu/colours/background_test.rb +17 -1
  170. data/test/lib/vedeu/colours/colour_test.rb +74 -2
  171. data/test/lib/vedeu/colours/foreground_test.rb +17 -1
  172. data/test/lib/vedeu/colours/repository_test.rb +1 -1
  173. data/test/lib/vedeu/colours/translator_test.rb +8 -1
  174. data/test/lib/vedeu/colours/validator_test.rb +60 -0
  175. data/test/lib/vedeu/common_test.rb +138 -0
  176. data/test/lib/vedeu/configuration/api_test.rb +96 -51
  177. data/test/lib/vedeu/cursors/coordinate_test.rb +58 -117
  178. data/test/lib/vedeu/cursors/cursor_test.rb +46 -17
  179. data/test/lib/vedeu/cursors/dsl_test.rb +19 -5
  180. data/test/lib/vedeu/distributed/client_test.rb +8 -3
  181. data/test/lib/vedeu/distributed/server_test.rb +8 -0
  182. data/test/lib/vedeu/distributed/test_application_test.rb +62 -19
  183. data/test/lib/vedeu/distributed/uri_test.rb +4 -2
  184. data/test/lib/vedeu/dsl/attributes_test.rb +212 -0
  185. data/test/lib/vedeu/dsl/border_test.rb +51 -0
  186. data/test/lib/vedeu/dsl/{lines_test.rb → cursors_test.rb} +2 -2
  187. data/test/lib/vedeu/dsl/dsl_test.rb +44 -0
  188. data/test/lib/vedeu/dsl/elements_test.rb +118 -0
  189. data/test/lib/vedeu/dsl/geometry_test.rb +35 -0
  190. data/test/lib/vedeu/dsl/presentation_test.rb +52 -11
  191. data/test/lib/vedeu/dsl/string/align_test.rb +147 -0
  192. data/test/lib/vedeu/dsl/string/text_test.rb +213 -0
  193. data/test/lib/vedeu/dsl/string/truncate_test.rb +97 -0
  194. data/test/lib/vedeu/{output → dsl/string}/wordwrap_test.rb +3 -3
  195. data/test/lib/vedeu/dsl/view_test.rb +30 -42
  196. data/test/lib/vedeu/dsl/views_test.rb +61 -0
  197. data/test/lib/vedeu/editor/cursor_test.rb +30 -12
  198. data/test/lib/vedeu/editor/document_test.rb +18 -10
  199. data/test/lib/vedeu/editor/line_test.rb +4 -1
  200. data/test/lib/vedeu/editor/lines_test.rb +11 -3
  201. data/test/lib/vedeu/esc/actions_test.rb +42 -4
  202. data/test/lib/vedeu/esc/background_test.rb +185 -0
  203. data/test/lib/vedeu/esc/borders_test.rb +37 -9
  204. data/test/lib/vedeu/esc/colours_test.rb +0 -59
  205. data/test/lib/vedeu/esc/foreground_test.rb +185 -0
  206. data/test/lib/vedeu/esc/mouse_test.rb +9 -4
  207. data/test/lib/vedeu/geometries/area/area_test.rb +34 -11
  208. data/test/lib/vedeu/geometries/dsl/dsl_test.rb +52 -61
  209. data/test/lib/vedeu/geometries/geometry_test.rb +62 -18
  210. data/test/lib/vedeu/geometries/position_test.rb +14 -7
  211. data/test/lib/vedeu/groups/dsl_test.rb +24 -15
  212. data/test/lib/vedeu/groups/group_test.rb +18 -8
  213. data/test/lib/vedeu/input/dsl_test.rb +33 -16
  214. data/test/lib/vedeu/input/key_test.rb +8 -1
  215. data/test/lib/vedeu/input/keymap_test.rb +4 -1
  216. data/test/lib/vedeu/input/keys_test.rb +16 -0
  217. data/test/lib/vedeu/interfaces/dsl_test.rb +24 -30
  218. data/test/lib/vedeu/interfaces/interface_test.rb +79 -24
  219. data/test/lib/vedeu/logging/ips_test.rb +10 -1
  220. data/test/lib/vedeu/menus/dsl_test.rb +24 -23
  221. data/test/lib/vedeu/menus/menu_test.rb +18 -8
  222. data/test/lib/vedeu/models/page_test.rb +5 -1
  223. data/test/lib/vedeu/models/row_test.rb +4 -0
  224. data/test/lib/vedeu/models/toggleable_test.rb +10 -6
  225. data/test/lib/vedeu/null/generic_test.rb +90 -1
  226. data/test/lib/vedeu/output/viewport_test.rb +11 -10
  227. data/test/lib/vedeu/plugins/plugin_test.rb +22 -9
  228. data/test/lib/vedeu/presentation/colour_test.rb +2 -1
  229. data/test/lib/vedeu/presentation/presentation_test.rb +13 -8
  230. data/test/lib/vedeu/presentation/style_test.rb +28 -13
  231. data/test/lib/vedeu/renderers/file_test.rb +4 -2
  232. data/test/lib/vedeu/renderers/options_test.rb +1 -1
  233. data/test/lib/vedeu/repositories/assemblage_test.rb +18 -0
  234. data/test/lib/vedeu/repositories/collection_test.rb +34 -10
  235. data/test/lib/vedeu/repositories/defaults_test.rb +6 -0
  236. data/test/lib/vedeu/repositories/model_test.rb +4 -13
  237. data/test/lib/vedeu/repositories/repository_test.rb +12 -5
  238. data/test/lib/vedeu/repositories/store_test.rb +9 -0
  239. data/test/lib/vedeu/runtime/flags_test.rb +6 -4
  240. data/test/lib/vedeu/runtime/launcher_test.rb +1 -1
  241. data/test/lib/vedeu/templating/helpers_test.rb +93 -65
  242. data/test/lib/vedeu/templating/view_template_test.rb +26 -26
  243. data/test/lib/vedeu/views/char_test.rb +36 -11
  244. data/test/lib/vedeu/views/chars_test.rb +71 -0
  245. data/test/lib/vedeu/views/composition_test.rb +17 -16
  246. data/test/lib/vedeu/views/default_attributes_test.rb +97 -0
  247. data/test/lib/vedeu/views/line_test.rb +20 -75
  248. data/test/lib/vedeu/views/lines_test.rb +47 -0
  249. data/test/lib/vedeu/views/stream_test.rb +38 -63
  250. data/test/lib/vedeu/views/streams_test.rb +9 -0
  251. data/test/lib/vedeu/views/value_test.rb +112 -0
  252. data/test/lib/vedeu/views/view_test.rb +67 -45
  253. data/test/lib/vedeu/views/views_test.rb +22 -0
  254. data/test/support/examples/material_colours_app.rb +2 -2
  255. data/test/support/helpers/model_test_class.rb +1 -0
  256. data/test/test_helper.rb +3 -1
  257. data/vedeu.gemspec +2 -2
  258. metadata +124 -58
  259. data/lib/vedeu/dsl/composition.rb +0 -150
  260. data/lib/vedeu/dsl/line.rb +0 -119
  261. data/lib/vedeu/dsl/lines.rb +0 -23
  262. data/lib/vedeu/dsl/shared.rb +0 -85
  263. data/lib/vedeu/dsl/stream.rb +0 -40
  264. data/lib/vedeu/dsl/streams.rb +0 -23
  265. data/lib/vedeu/dsl/text.rb +0 -98
  266. data/lib/vedeu/geometries/alignment/all.rb +0 -11
  267. data/lib/vedeu/geometries/alignment/horizontal_alignment.rb +0 -27
  268. data/lib/vedeu/geometries/alignment/vertical_alignment.rb +0 -27
  269. data/lib/vedeu/output/text.rb +0 -275
  270. data/test/lib/vedeu/dsl/composition_test.rb +0 -67
  271. data/test/lib/vedeu/dsl/line_test.rb +0 -85
  272. data/test/lib/vedeu/dsl/shared_test.rb +0 -66
  273. data/test/lib/vedeu/dsl/stream_test.rb +0 -30
  274. data/test/lib/vedeu/dsl/streams_test.rb +0 -13
  275. data/test/lib/vedeu/dsl/text_test.rb +0 -122
  276. data/test/lib/vedeu/output/text_test.rb +0 -156
  277. data/test/lib/vedeu/views/view_collection_test.rb +0 -13
@@ -73,18 +73,40 @@ module Vedeu
73
73
  it { subject.instance_variable_get('@y').must_equal(y) }
74
74
  end
75
75
 
76
- describe 'accessors' do
77
- it do
78
- instance.must_respond_to(:attributes)
79
- instance.must_respond_to(:name)
80
- instance.must_respond_to(:ox)
81
- instance.must_respond_to(:ox=)
82
- instance.must_respond_to(:oy)
83
- instance.must_respond_to(:oy=)
84
- instance.must_respond_to(:visible)
85
- instance.must_respond_to(:x=)
86
- instance.must_respond_to(:y=)
87
- end
76
+ describe '#attributes' do
77
+ it { instance.must_respond_to(:attributes) }
78
+ end
79
+
80
+ describe '#name' do
81
+ it { instance.must_respond_to(:name) }
82
+ end
83
+
84
+ describe '#ox' do
85
+ it { instance.must_respond_to(:ox) }
86
+ end
87
+
88
+ describe '#ox=' do
89
+ it { instance.must_respond_to(:ox=) }
90
+ end
91
+
92
+ describe '#oy' do
93
+ it { instance.must_respond_to(:oy) }
94
+ end
95
+
96
+ describe '#oy=' do
97
+ it { instance.must_respond_to(:oy=) }
98
+ end
99
+
100
+ describe '#visible' do
101
+ it { instance.must_respond_to(:visible) }
102
+ end
103
+
104
+ describe '#x=' do
105
+ it { instance.must_respond_to(:x=) }
106
+ end
107
+
108
+ describe '#y=' do
109
+ it { instance.must_respond_to(:y=) }
88
110
  end
89
111
 
90
112
  describe '#eql?' do
@@ -101,6 +123,10 @@ module Vedeu
101
123
  end
102
124
  end
103
125
 
126
+ describe '#==' do
127
+ it { instance.must_respond_to(:==) }
128
+ end
129
+
104
130
  describe '#hide' do
105
131
  let(:visible) { true }
106
132
  let(:escape) {
@@ -114,10 +140,10 @@ module Vedeu
114
140
 
115
141
  subject { instance.hide }
116
142
 
117
- it {
143
+ it do
118
144
  Vedeu.expects(:render_output).with(escape)
119
145
  subject
120
- }
146
+ end
121
147
  end
122
148
 
123
149
  describe '#inspect' do
@@ -255,10 +281,10 @@ module Vedeu
255
281
 
256
282
  subject { instance.show }
257
283
 
258
- it {
284
+ it do
259
285
  Vedeu.expects(:render_output).with(escape)
260
286
  subject
261
- }
287
+ end
262
288
  end
263
289
 
264
290
  describe '#to_a' do
@@ -273,7 +299,6 @@ module Vedeu
273
299
 
274
300
  subject { instance.to_s }
275
301
 
276
- it { instance.must_respond_to(:to_str) }
277
302
  it { subject.must_be_instance_of(String) }
278
303
 
279
304
  context 'when the cursor is visible' do
@@ -305,6 +330,10 @@ module Vedeu
305
330
  end
306
331
  end
307
332
 
333
+ describe '#to_str' do
334
+ it { instance.must_respond_to(:to_str) }
335
+ end
336
+
308
337
  describe '#x' do
309
338
  subject { instance.x }
310
339
 
@@ -15,11 +15,25 @@ module Vedeu
15
15
  let(:described) { Vedeu::Cursors::DSL }
16
16
  let(:instance) { Vedeu::Cursors::DSLTestClass.new }
17
17
 
18
- it { instance.must_respond_to(:cursor) }
19
- it { instance.must_respond_to(:cursor!) }
20
- it { instance.must_respond_to(:show_cursor!) }
21
- it { instance.must_respond_to(:no_cursor!) }
22
- it { instance.must_respond_to(:hide_cursor!) }
18
+ describe '#cursor' do
19
+ it { instance.must_respond_to(:cursor) }
20
+ end
21
+
22
+ describe '#cursor!' do
23
+ it { instance.must_respond_to(:cursor!) }
24
+ end
25
+
26
+ describe '#show_cursor!' do
27
+ it { instance.must_respond_to(:show_cursor!) }
28
+ end
29
+
30
+ describe '#no_cursor!' do
31
+ it { instance.must_respond_to(:no_cursor!) }
32
+ end
33
+
34
+ describe '#hide_cursor!' do
35
+ it { instance.must_respond_to(:hide_cursor!) }
36
+ end
23
37
 
24
38
  # describe '#cursor' do
25
39
  # let(:_value) {}
@@ -47,7 +47,6 @@ module Vedeu
47
47
  let(:data) {}
48
48
 
49
49
  subject { instance.input(data) }
50
- it { instance.must_respond_to(:read) }
51
50
 
52
51
  context 'when the DRb server is not available or not enabled' do
53
52
  before { DRbObject.stubs(:new_with_uri).raises(DRb::DRbConnError) }
@@ -61,11 +60,13 @@ module Vedeu
61
60
  end
62
61
  end
63
62
 
63
+ describe '#read' do
64
+ it { instance.must_respond_to(:read) }
65
+ end
66
+
64
67
  describe '#output' do
65
68
  subject { instance.output }
66
69
 
67
- it { instance.must_respond_to(:write) }
68
-
69
70
  context 'when the DRb server is not available or not enabled' do
70
71
  before { DRbObject.stubs(:new_with_uri).raises(DRb::DRbConnError) }
71
72
 
@@ -78,6 +79,10 @@ module Vedeu
78
79
  end
79
80
  end
80
81
 
82
+ describe '#write' do
83
+ it { instance.must_respond_to(:write) }
84
+ end
85
+
81
86
  describe '#shutdown' do
82
87
  subject { instance.shutdown }
83
88
 
@@ -204,10 +204,18 @@ module Vedeu
204
204
  end
205
205
 
206
206
  describe '#input' do
207
+ it { instance.must_respond_to(:input) }
208
+ end
209
+
210
+ describe '#read' do
207
211
  it { instance.must_respond_to(:read) }
208
212
  end
209
213
 
210
214
  describe '#output' do
215
+ it { instance.must_respond_to(:output) }
216
+ end
217
+
218
+ describe '#write' do
211
219
  it { instance.must_respond_to(:write) }
212
220
  end
213
221
 
@@ -12,25 +12,68 @@ module Vedeu
12
12
  it { instance.must_be_instance_of(described) }
13
13
  end
14
14
 
15
- describe 'accessors' do
16
- it do
17
- instance.must_respond_to(:borders)
18
- instance.must_respond_to(:borders=)
19
- instance.must_respond_to(:configuration)
20
- instance.must_respond_to(:configuration=)
21
- instance.must_respond_to(:events)
22
- instance.must_respond_to(:events=)
23
- instance.must_respond_to(:geometries)
24
- instance.must_respond_to(:geometries=)
25
- instance.must_respond_to(:interfaces)
26
- instance.must_respond_to(:interfaces=)
27
- instance.must_respond_to(:keymaps)
28
- instance.must_respond_to(:keymaps=)
29
- instance.must_respond_to(:menus)
30
- instance.must_respond_to(:menus=)
31
- instance.must_respond_to(:views)
32
- instance.must_respond_to(:views=)
33
- end
15
+ describe '#borders' do
16
+ it { instance.must_respond_to(:borders) }
17
+ end
18
+
19
+ describe '#borders=' do
20
+ it { instance.must_respond_to(:borders=) }
21
+ end
22
+
23
+ describe '#configuration' do
24
+ it { instance.must_respond_to(:configuration) }
25
+ end
26
+
27
+ describe '#configuration=' do
28
+ it { instance.must_respond_to(:configuration=) }
29
+ end
30
+
31
+ describe '#events' do
32
+ it { instance.must_respond_to(:events) }
33
+ end
34
+
35
+ describe '#events=' do
36
+ it { instance.must_respond_to(:events=) }
37
+ end
38
+
39
+ describe '#geometries' do
40
+ it { instance.must_respond_to(:geometries) }
41
+ end
42
+
43
+ describe '#geometries=' do
44
+ it { instance.must_respond_to(:geometries=) }
45
+ end
46
+
47
+ describe '#interfaces' do
48
+ it { instance.must_respond_to(:interfaces) }
49
+ end
50
+
51
+ describe '#interfaces=' do
52
+ it { instance.must_respond_to(:interfaces=) }
53
+ end
54
+
55
+ describe '#keymaps' do
56
+ it { instance.must_respond_to(:keymaps) }
57
+ end
58
+
59
+ describe '#keymaps=' do
60
+ it { instance.must_respond_to(:keymaps=) }
61
+ end
62
+
63
+ describe '#menus' do
64
+ it { instance.must_respond_to(:menus) }
65
+ end
66
+
67
+ describe '#menus=' do
68
+ it { instance.must_respond_to(:menus=) }
69
+ end
70
+
71
+ describe '#views' do
72
+ it { instance.must_respond_to(:views) }
73
+ end
74
+
75
+ describe '#views=' do
76
+ it { instance.must_respond_to(:views=) }
34
77
  end
35
78
 
36
79
  describe '.build' do
@@ -59,13 +59,15 @@ module Vedeu
59
59
 
60
60
  subject { instance.to_s }
61
61
 
62
- it { instance.must_respond_to(:to_str) }
63
-
64
62
  it 'returns a single value for the uri' do
65
63
  subject.must_equal('druby://myserver:40000')
66
64
  end
67
65
  end
68
66
 
67
+ describe '#to_str' do
68
+ it { instance.must_respond_to(:to_str) }
69
+ end
70
+
69
71
  end # Uri
70
72
 
71
73
  end # Distributed
@@ -0,0 +1,212 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ module DSL
6
+
7
+ describe Attributes do
8
+
9
+ let(:described) { Vedeu::DSL::Attributes }
10
+ let(:instance) { described.new(context, model, _value, options) }
11
+ let(:context) {}
12
+ let(:model) { Vedeu::Views::View.new(name: _name) }
13
+ let(:_value) { 'Some text...' }
14
+ let(:options) {
15
+ {
16
+ align: align,
17
+ colour: colour,
18
+ pad: pad,
19
+ style: style,
20
+ truncate: truncate,
21
+ width: width,
22
+ wordwrap: wordwrap,
23
+ }
24
+ }
25
+ # let(:block) {}
26
+ let(:align) {}
27
+ let(:colour) {}
28
+ let(:_name) { :vedeu_dsl_attributes_model }
29
+ let(:pad) {}
30
+ let(:style) {}
31
+ let(:truncate) {}
32
+ let(:width) {}
33
+ let(:wordwrap) {}
34
+
35
+ describe '#initialize' do
36
+ it { instance.must_be_instance_of(described) }
37
+ it { instance.instance_variable_get('@context').must_equal(context) }
38
+ it { instance.instance_variable_get('@model').must_equal(model) }
39
+
40
+ context 'when the value is nil' do
41
+ let(:_value) {}
42
+
43
+ it { instance.instance_variable_get('@value').must_equal('') }
44
+ end
45
+
46
+ context 'when the value is not nil' do
47
+ it { instance.instance_variable_get('@value').must_equal(_value) }
48
+ end
49
+
50
+ context 'when the options are nil' do
51
+ let(:options) {}
52
+
53
+ it { instance.instance_variable_get('@options').must_equal({}) }
54
+ end
55
+
56
+ context 'when the options are not nil' do
57
+ it { instance.instance_variable_get('@options').must_equal(options) }
58
+ end
59
+ end
60
+
61
+ describe '.build' do
62
+ subject { described.build(context, model, _value, options) }
63
+
64
+ it { subject.must_be_instance_of(Hash) }
65
+
66
+ context 'when there is no align option' do
67
+ it { subject[:align].value.must_equal(:none) }
68
+ end
69
+
70
+ context 'when there is an align option' do
71
+ let(:align) { :center }
72
+
73
+ it { subject[:align].value.must_equal(:centre) }
74
+
75
+ context 'when the align option is invalid' do
76
+ let(:align) { :invalid }
77
+
78
+ it { subject[:align].value.must_equal(:none) }
79
+ end
80
+ end
81
+
82
+ context 'when there are no colour options' do
83
+ it { subject[:colour].must_be_instance_of(Vedeu::Colours::Colour) }
84
+ end
85
+
86
+ context 'when there are colour options' do
87
+ let(:colour) {
88
+ {
89
+ background: '#000088',
90
+ foreground: '#ffff00',
91
+ }
92
+ }
93
+
94
+ it { subject[:colour].must_be_instance_of(Vedeu::Colours::Colour) }
95
+ it do
96
+ subject[:colour].background.must_be_instance_of(Vedeu::Colours::Background)
97
+ end
98
+ it { subject[:colour].background.value.must_equal('#000088') }
99
+ it do
100
+ subject[:colour].foreground.must_be_instance_of(Vedeu::Colours::Foreground)
101
+ end
102
+ it { subject[:colour].foreground.value.must_equal('#ffff00') }
103
+ end
104
+
105
+ context 'when the model has a name' do
106
+ it { subject[:name].must_equal(_name) }
107
+ end
108
+
109
+ context 'when the model does not have a name' do
110
+ let(:_name) {}
111
+
112
+ it { subject[:name].must_equal(nil) }
113
+ end
114
+
115
+ context 'when the model has a name' do
116
+ it { subject[:name].must_equal(_name) }
117
+ end
118
+
119
+ context 'when the model does not have a name' do
120
+ let(:_name) {}
121
+
122
+ it { subject[:name].must_equal(nil) }
123
+ end
124
+
125
+ context 'when the pad option is nil' do
126
+ let(:pad) {}
127
+
128
+ it { subject[:pad].must_equal(' ') }
129
+ end
130
+
131
+ context 'when the pad option is not a string' do
132
+ let(:pad) { 44 }
133
+
134
+ it { subject[:pad].must_equal('4') }
135
+ end
136
+
137
+ context 'when the pad is a multi-character string' do
138
+ let(:pad) { 'multi' }
139
+
140
+ it { subject[:pad].must_equal('m') }
141
+ end
142
+
143
+ context 'when there are no style options' do
144
+ it { subject[:style].must_be_instance_of(Vedeu::Presentation::Style) }
145
+ it { subject[:style].value.must_equal(nil) }
146
+ end
147
+
148
+ context 'when there are style options' do
149
+ let(:style) { [:bold, :underline] }
150
+
151
+ it do
152
+ Vedeu::Presentation::Style.expects(:coerce).with(options[:style])
153
+ subject
154
+ end
155
+ it { subject[:style].must_be_instance_of(Vedeu::Presentation::Style) }
156
+ it { subject[:style].value.must_equal(style) }
157
+ end
158
+
159
+ context 'when the truncate option is true' do
160
+ let(:truncate) { true }
161
+
162
+ it { subject[:truncate].must_equal(true) }
163
+ end
164
+
165
+ context 'when the truncate option is not given or false' do
166
+ it { subject[:truncate].must_equal(false) }
167
+ end
168
+
169
+ context 'when the width option is given' do
170
+ let(:width) { 15 }
171
+
172
+ it { subject[:width].must_equal(width) }
173
+ end
174
+
175
+ context 'when the width option is not given' do
176
+ context 'when the name option is given' do
177
+ let(:geometry) {
178
+ Vedeu::Geometries::Geometry.new(name: _name, width: 20)
179
+ }
180
+
181
+ before { Vedeu.geometries.stubs(:by_name).returns(geometry) }
182
+
183
+ it { subject[:width].must_equal(20) }
184
+ end
185
+
186
+ context 'when the name option is not given' do
187
+ let(:_name) {}
188
+
189
+ it { subject[:width].must_equal(nil) }
190
+ end
191
+ end
192
+
193
+ context 'when the wordwrap option is true' do
194
+ let(:wordwrap) { true }
195
+
196
+ it { subject[:wordwrap].must_equal(true) }
197
+ end
198
+
199
+ context 'when the wordwrap option is not given or false' do
200
+ it { subject[:wordwrap].must_equal(false) }
201
+ end
202
+ end
203
+
204
+ describe '#attributes' do
205
+ it { instance.must_respond_to(:attributes) }
206
+ end
207
+
208
+ end # Attributes
209
+
210
+ end # DSL
211
+
212
+ end # Vedeu