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
@@ -38,9 +38,11 @@ module Vedeu
38
38
  end
39
39
  end
40
40
 
41
- describe '#interactive!' do
41
+ describe '#interactive' do
42
42
  it { instance.must_respond_to(:interactive) }
43
+ end
43
44
 
45
+ describe '#interactive!' do
44
46
  it 'sets the option to the desired value' do
45
47
  configuration = Vedeu.configure { interactive! }
46
48
  configuration.interactive?.must_equal(true)
@@ -62,9 +64,11 @@ module Vedeu
62
64
  end
63
65
  end
64
66
 
65
- describe '#standalone!' do
67
+ describe '#standalone' do
66
68
  it { instance.must_respond_to(:standalone) }
69
+ end
67
70
 
71
+ describe '#standalone!' do
68
72
  it 'sets the option to the desired value' do
69
73
  configuration = Vedeu.configure { standalone! }
70
74
  configuration.interactive?.must_equal(false)
@@ -87,8 +91,6 @@ module Vedeu
87
91
  end
88
92
 
89
93
  describe '#run_once!' do
90
- it { instance.must_respond_to(:run_once) }
91
-
92
94
  it 'sets the option to the desired value' do
93
95
  configuration = Vedeu.configure { run_once! }
94
96
  configuration.once.must_equal(true)
@@ -110,9 +112,11 @@ module Vedeu
110
112
  end
111
113
  end
112
114
 
113
- describe '#drb!' do
114
- it { instance.must_respond_to(:drb) }
115
+ describe '#run_once' do
116
+ it { instance.must_respond_to(:run_once) }
117
+ end
115
118
 
119
+ describe '#drb!' do
116
120
  it 'sets the option to the desired value' do
117
121
  configuration = Vedeu.configure { drb! }
118
122
  configuration.drb.must_equal(true)
@@ -134,6 +138,10 @@ module Vedeu
134
138
  end
135
139
  end
136
140
 
141
+ describe '#drb' do
142
+ it { instance.must_respond_to(:drb) }
143
+ end
144
+
137
145
  describe '#drb_host' do
138
146
  it 'sets the options to the desired value' do
139
147
  configuration = Vedeu.configure { drb_host('localhost') }
@@ -163,36 +171,40 @@ module Vedeu
163
171
  end
164
172
 
165
173
  describe '#cooked!' do
166
- it { instance.must_respond_to(:cooked) }
167
-
168
174
  it 'sets the option to the desired value' do
169
175
  configuration = Vedeu.configure { cooked! }
170
176
  configuration.terminal_mode.must_equal(:cooked)
171
177
  end
172
178
  end
173
179
 
174
- describe '#fake!' do
175
- it { instance.must_respond_to(:fake) }
180
+ describe '#cooked' do
181
+ it { instance.must_respond_to(:cooked) }
182
+ end
176
183
 
184
+ describe '#fake!' do
177
185
  it 'sets the option to the desired value' do
178
186
  configuration = Vedeu.configure { fake! }
179
187
  configuration.terminal_mode.must_equal(:fake)
180
188
  end
181
189
  end
182
190
 
191
+ describe '#fake' do
192
+ it { instance.must_respond_to(:fake) }
193
+ end
194
+
183
195
  describe '#raw!' do
184
196
  subject { Vedeu.configure { raw! } }
185
197
 
186
- it { instance.must_respond_to(:raw) }
187
-
188
198
  it 'sets the option to the desired value' do
189
199
  subject.terminal_mode.must_equal(:raw)
190
200
  end
191
201
  end
192
202
 
193
- describe '#debug!' do
194
- it { instance.must_respond_to(:debug) }
203
+ describe '#raw' do
204
+ it { instance.must_respond_to(:raw) }
205
+ end
195
206
 
207
+ describe '#debug!' do
196
208
  it 'sets the option to the desired value' do
197
209
  configuration = Vedeu.configure { debug! }
198
210
  configuration.debug.must_equal(true)
@@ -209,14 +221,18 @@ module Vedeu
209
221
  end
210
222
  end
211
223
 
224
+ describe '#debug' do
225
+ it { instance.must_respond_to(:debug) }
226
+ end
227
+
212
228
  describe '#colour_mode' do
213
- context 'when the value is invalid (nil)' do
229
+ context 'when the value is invalid (nil' do
214
230
  it { proc {
215
231
  Vedeu.configure { colour_mode(nil) }
216
232
  }.must_raise(Vedeu::Error::InvalidSyntax) }
217
233
  end
218
234
 
219
- context 'when the value is invalid (empty)' do
235
+ context 'when the value is invalid (empty' do
220
236
  it { proc {
221
237
  Vedeu.configure { colour_mode('') }
222
238
  }.must_raise(Vedeu::Error::InvalidSyntax) }
@@ -274,8 +290,6 @@ module Vedeu
274
290
  # returns([some])
275
291
  # end
276
292
 
277
- it { instance.must_respond_to(:renderers) }
278
-
279
293
  # it 'sets the options to the desired value' do
280
294
  # configuration = Vedeu.configure do
281
295
  # renderer proc { other }
@@ -284,6 +298,10 @@ module Vedeu
284
298
  # end
285
299
  end
286
300
 
301
+ describe '#renderers' do
302
+ it { instance.must_respond_to(:renderers) }
303
+ end
304
+
287
305
  describe '#root' do
288
306
  it 'sets the options to the desired value' do
289
307
  configuration = Vedeu.configure { root(:controller, :action, :args) }
@@ -318,9 +336,11 @@ module Vedeu
318
336
  end
319
337
  end
320
338
 
321
- describe '#compression!' do
339
+ describe '#compression' do
322
340
  it { instance.must_respond_to(:compression) }
341
+ end
323
342
 
343
+ describe '#compression!' do
324
344
  it 'sets the option to the desired value' do
325
345
  configuration = Vedeu.configure { compression! }
326
346
  configuration.compression.must_equal(true)
@@ -387,60 +407,81 @@ module Vedeu
387
407
  end
388
408
 
389
409
  describe '#colour' do
390
- context 'when a background and foreground is given' do
391
- it do
392
- configuration = Vedeu.configure { colour background: '#ff0000', foreground: '#ffff00' }
393
- configuration.colour.must_be_instance_of(Vedeu::Colours::Colour)
394
- configuration.colour.to_s.must_equal("\e[38;2;255;255;0m\e[48;2;255;0;0m")
410
+ let(:configuration) {
411
+ Vedeu.configure do
395
412
  end
413
+ }
414
+
415
+ subject { configuration.colour }
416
+
417
+ it { subject.must_be_instance_of(Vedeu::Colours::Colour) }
418
+
419
+ context 'when a background and foreground is given' do
420
+ let(:configuration) {
421
+ Vedeu.configure do
422
+ colour background: '#ff0000', foreground: '#ffff00'
423
+ end
424
+ }
425
+ let(:expected) {
426
+ Vedeu::Colours::Colour.coerce(background: '#ff0000',
427
+ foreground: '#ffff00')
428
+ }
429
+
430
+ it { subject.must_equal(expected) }
396
431
  end
397
432
 
398
433
  context 'when only a background is given' do
399
- it do
400
- configuration = Vedeu.configure { colour background: '#ff0000' }
401
- configuration.colour.must_be_instance_of(Vedeu::Colours::Colour)
402
- configuration.colour.to_s.must_equal("\e[48;2;255;0;0m")
403
- end
434
+ let(:configuration) {
435
+ Vedeu.configure { colour background: '#ff0000' }
436
+ }
437
+ let(:expected) {
438
+ Vedeu::Colours::Colour.coerce(background: '#ff0000')
439
+ }
440
+
441
+ it { subject.must_equal(expected) }
404
442
  end
405
443
 
406
444
  context 'when only a foreground is given' do
407
- it do
408
- configuration = Vedeu.configure { colour foreground: '#ffff00' }
409
- configuration.colour.must_be_instance_of(Vedeu::Colours::Colour)
410
- configuration.colour.to_s.must_equal("\e[38;2;255;255;0m")
411
- end
445
+ let(:configuration) {
446
+ Vedeu.configure { colour foreground: '#ffff00' }
447
+ }
448
+ let(:expected) {
449
+ Vedeu::Colours::Colour.coerce(foreground: '#ffff00')
450
+ }
451
+
452
+ it { subject.must_equal(expected) }
412
453
  end
413
454
 
414
455
  context 'when neither a background nor foreground is given' do
415
- it do
416
- configuration = Vedeu.configure { colour background: nil, foreground: nil }
417
- configuration.colour.must_be_instance_of(Vedeu::Colours::Colour)
418
- configuration.colour.to_s.must_equal('')
419
- end
456
+ let(:expected) { Vedeu::Colours::Colour.new(background: :default, foreground: :default) }
457
+
458
+ it { subject.must_equal(expected) }
420
459
  end
421
460
  end
422
461
 
423
462
  describe '#foreground' do
463
+ subject { configuration.foreground }
464
+
424
465
  context 'when a value is given' do
425
- it do
426
- configuration = Vedeu.configure { foreground '#ffff00' }
427
- configuration.foreground.must_be_instance_of(Vedeu::Colours::Foreground)
428
- configuration.foreground.to_s.must_equal("\e[38;2;255;255;0m")
429
- end
466
+ let(:configuration) {
467
+ Vedeu.configure { foreground('#ffff00') }
468
+ }
469
+ let(:expected) { Vedeu::Colours::Foreground.coerce('#ffff00') }
470
+
471
+ it { subject.must_equal(expected) }
430
472
  end
431
473
 
432
474
  context 'when a value is not given' do
433
- it do
434
- configuration = Vedeu.configure { background nil }
435
- configuration.foreground.must_be_instance_of(Vedeu::Colours::Foreground)
436
- configuration.foreground.to_s.must_equal("\e[39m")
437
- end
475
+ let(:configuration) {
476
+ Vedeu.configure {}
477
+ }
478
+ let(:expected) { Vedeu::Colours::Foreground.new(:default) }
479
+
480
+ it { subject.must_equal(expected) }
438
481
  end
439
482
  end
440
483
 
441
484
  describe '#mouse!' do
442
- it { instance.must_respond_to(:mouse) }
443
-
444
485
  it 'sets the option to the desired value' do
445
486
  configuration = Vedeu.configure { mouse! }
446
487
  configuration.mouse.must_equal(true)
@@ -462,6 +503,10 @@ module Vedeu
462
503
  end
463
504
  end
464
505
 
506
+ describe '#mouse' do
507
+ it { instance.must_respond_to(:mouse) }
508
+ end
509
+
465
510
  end # API
466
511
 
467
512
  end # Config
@@ -15,9 +15,16 @@ module Vedeu
15
15
  type: type,
16
16
  }
17
17
  }
18
- let(:_name) {}
19
- let(:offset) {}
20
- let(:type) {}
18
+ let(:_name) {}
19
+ let(:offset) {}
20
+ let(:type) {}
21
+ let(:geometry) {
22
+ Vedeu::Geometries::Geometry.new(name: _name, x: 2, y: 3, xn: 10, yn: 6)
23
+ }
24
+
25
+ before do
26
+ Vedeu.geometries.stubs(:by_name).returns(geometry)
27
+ end
21
28
 
22
29
  describe '#initialize' do
23
30
  it { instance.must_be_instance_of(described) }
@@ -26,139 +33,73 @@ module Vedeu
26
33
  it { instance.instance_variable_get('@type').must_equal(type) }
27
34
  end
28
35
 
29
- describe '#dn' do
30
- subject { instance.dn }
31
-
32
- # it { skip }
33
- end
34
-
35
- describe '#position' do
36
- subject { instance.position }
37
-
38
- # it { skip }
39
- end
40
-
41
- # let(:described) { Vedeu::Cursors::Coordinate }
42
- # let(:instance) { described.new(_name, oy, ox) }
43
- # let(:_name) { 'coordinate' }
44
- # let(:oy) { 0 }
45
- # let(:ox) { 0 }
46
- # let(:height) { 6 }
47
- # let(:width) { 6 }
48
- # let(:x) { 7 }
49
- # let(:y) { 5 }
50
- # let(:border) { Vedeu::Borders::Border.new(name: _name, enabled: true) }
51
- # let(:geometry) {
52
- # Vedeu::Geometries::Geometry.new(name: _name,
53
- # height: height,
54
- # width: width,
55
- # x: x,
56
- # y: y)
57
- # }
58
-
59
- # before do
60
- # Vedeu.borders.stubs(:by_name).returns(border)
61
- # Vedeu.geometries.stubs(:by_name).returns(geometry)
62
- # end
63
-
64
- # describe '#initialize' do
65
- # it { instance.must_be_instance_of(described) }
66
- # it { instance.instance_variable_get('@name').must_equal(_name) }
67
- # it { instance.instance_variable_get('@oy').must_equal(oy) }
68
- # it { instance.instance_variable_get('@ox').must_equal(ox) }
69
- # end
70
-
71
- # describe '#yn' do
72
- # subject { instance.yn }
36
+ describe '#dn_position' do
37
+ subject { instance.dn_position }
73
38
 
74
- # context 'when the height is <= to 0' do
75
- # let(:height) { 0 }
39
+ context 'when the type is x' do
40
+ let(:type) { :x }
76
41
 
77
- # it { subject.must_equal(0) }
78
- # end
42
+ context 'when d_dn is <= 0' do
43
+ before { geometry.stubs(:bordered_width).returns(0) }
79
44
 
80
- # context 'when the height is > 0' do
81
- # it { subject.must_equal(9) }
82
- # end
83
- # end
45
+ it { subject.must_equal(0) }
46
+ end
84
47
 
85
- # describe '#xn' do
86
- # subject { instance.xn }
48
+ context 'when d_dn > 0' do
49
+ it { subject.must_equal(11) }
50
+ end
51
+ end
87
52
 
88
- # context 'when the width is <= to 0' do
89
- # let(:width) { 0 }
53
+ context 'when the type is y' do
54
+ let(:type) { :y }
90
55
 
91
- # it { subject.must_equal(0) }
92
- # end
56
+ context 'when d_dn is <= 0' do
57
+ before { geometry.stubs(:bordered_height).returns(0) }
93
58
 
94
- # context 'when the width is > 0' do
95
- # it { subject.must_equal(11) }
96
- # end
97
- # end
59
+ it { subject.must_equal(0) }
60
+ end
98
61
 
99
- # describe '#y' do
100
- # let(:oy) { 0 }
101
-
102
- # subject { instance.y }
103
-
104
- # it { subject.must_be_instance_of(Fixnum) }
105
-
106
- # context 'with a negative index' do
107
- # let(:oy) { -3 }
108
-
109
- # it { subject.must_equal(6) }
110
- # end
111
-
112
- # context 'with an index greater than the maximum index for y' do
113
- # let(:oy) { 9 }
114
-
115
- # it { subject.must_equal(9) }
116
-
117
- # context 'but the height is negative' do
118
- # let(:height) { -2 }
119
-
120
- # it { subject.must_equal(1) }
121
- # end
122
- # end
123
-
124
- # context 'with an index within range' do
125
- # let(:oy) { 3 }
126
-
127
- # it { subject.must_equal(8) }
128
- # end
129
- # end
62
+ context 'when d_dn > 0' do
63
+ it { subject.must_equal(7) }
64
+ end
65
+ end
66
+ end
130
67
 
131
- # describe '#x' do
132
- # let(:ox) { 0 }
68
+ describe '#d_position' do
69
+ subject { instance.d_position }
133
70
 
134
- # subject { instance.x }
71
+ context 'when the type is x' do
72
+ let(:type) { :x }
135
73
 
136
- # it { subject.must_be_instance_of(Fixnum) }
74
+ context 'when the offset is <= 0' do
75
+ let(:offset) { 0 }
137
76
 
138
- # context 'with a negative index' do
139
- # let(:ox) { -3 }
77
+ it { subject.must_equal(2) }
78
+ end
140
79
 
141
- # it { subject.must_equal(8) }
142
- # end
80
+ context 'when the offset is > dn_index' do
81
+ let(:offset) { 0 }
143
82
 
144
- # context 'with an index greater than the maximum index for x' do
145
- # let(:ox) { 9 }
83
+ it { subject.must_equal(2) }
84
+ end
146
85
 
147
- # it { subject.must_equal(11) }
86
+ context 'when the offset is <= dn_index' do
87
+ let(:offset) { 0 }
148
88
 
149
- # context 'but the width is negative' do
150
- # let(:width) { -2 }
89
+ it { subject.must_equal(2) }
90
+ end
91
+ end
151
92
 
152
- # it { subject.must_equal(3) }
153
- # end
154
- # end
93
+ context 'when the type is y' do
94
+ let(:type) { :y }
155
95
 
156
- # context 'with an index within range' do
157
- # let(:ox) { 3 }
96
+ context 'when the offset is <= 0' do
97
+ let(:offset) { 0 }
158
98
 
159
- # it { subject.must_equal(10) }
160
- # end
161
- # end
99
+ it { subject.must_equal(3) }
100
+ end
101
+ end
102
+ end
162
103
 
163
104
  end # Coordinate
164
105