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
@@ -0,0 +1,51 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ module DSL
6
+
7
+ describe Border do
8
+
9
+ let(:described) { Vedeu::DSL::Border }
10
+ let(:instance) { Class.include(described).new }
11
+ let(:_name) { :vedeu_dsl_border }
12
+
13
+ describe '#border' do
14
+ subject { instance.border(_name) {} }
15
+
16
+ context 'when the name is not given' do
17
+ let(:_name) {}
18
+
19
+ it 'uses the name of the model' do
20
+ # @todo Add more tests.
21
+ end
22
+ end
23
+
24
+ context 'when the name is given' do
25
+ # @todo Add more tests.
26
+ end
27
+
28
+ context 'when the block is not given' do
29
+ subject { instance.border(_name) }
30
+
31
+ it { proc { subject }.must_raise(Vedeu::Error::RequiresBlock) }
32
+ end
33
+
34
+ context 'when the block is given' do
35
+ subject { instance.border { } }
36
+
37
+ # @todo Add more tests.
38
+ end
39
+ end
40
+
41
+ describe '#border!' do
42
+ subject { instance.border! }
43
+
44
+ # @todo Add more tests.
45
+ end
46
+
47
+ end # Border
48
+
49
+ end # DSL
50
+
51
+ end # Vedeu
@@ -4,8 +4,8 @@ module Vedeu
4
4
 
5
5
  module DSL
6
6
 
7
- describe Lines do
8
- end # Lines
7
+ describe Cursors do
8
+ end # Cursors
9
9
 
10
10
  end # DSL
11
11
 
@@ -2,8 +2,52 @@ require 'test_helper'
2
2
 
3
3
  module Vedeu
4
4
 
5
+ class DSLModelTestClass
6
+
7
+ attr_reader :name
8
+
9
+ def initialize(name)
10
+ @name = name
11
+ end
12
+
13
+ end # DSLModelTestClass
14
+
15
+ class DSLModuleTestClass
16
+
17
+ include Vedeu::DSL
18
+
19
+ end # DSLTestClass
20
+
5
21
  describe DSL do
6
22
 
23
+ let(:described) { Vedeu::DSL }
24
+ let(:instance) { Vedeu::DSLModuleTestClass.new(model, client) }
25
+ let(:model) { Vedeu::DSLModelTestClass.new(_name) }
26
+ let(:client) {}
27
+ let(:_name) {}
28
+
29
+ describe '#name' do
30
+ subject { instance.name }
31
+
32
+ context 'when the model is nil' do
33
+ let(:model) {}
34
+
35
+ it { subject.must_equal(nil) }
36
+ end
37
+
38
+ context 'when the model is not nil' do
39
+ context 'when the model has a name' do
40
+ let(:_name) { :vedeu_dsl }
41
+
42
+ it { subject.must_equal(_name) }
43
+ end
44
+
45
+ context 'when the model has no name' do
46
+ it { subject.must_equal(nil) }
47
+ end
48
+ end
49
+ end
50
+
7
51
  end # DSL
8
52
 
9
53
  end # Vedeu
@@ -0,0 +1,118 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ module DSL
6
+
7
+ class ElementsTest
8
+
9
+ include Vedeu::DSL::Elements
10
+
11
+ attr_reader :model
12
+
13
+ def initialize(model)
14
+ @model = model
15
+ end
16
+
17
+ end # ElementsTest
18
+
19
+ describe Elements do
20
+
21
+ let(:described) { Vedeu::DSL::Elements }
22
+ let(:instance) {}
23
+
24
+ let(:including_described) { Vedeu::DSL::ElementsTest }
25
+ let(:including_instance) { including_described.new(model) }
26
+ let(:model) {}
27
+
28
+ describe '#lines' do
29
+ subject { including_instance.lines { } }
30
+
31
+ context 'when the block is given' do
32
+ context 'when a model exists' do
33
+ let(:model) {}
34
+ end
35
+
36
+ context 'when a model does not exist' do
37
+ it { proc { subject }.must_raise(Vedeu::Error::Fatal) }
38
+ end
39
+ end
40
+
41
+ context 'when the block is not given' do
42
+ subject { including_instance.lines }
43
+
44
+ it { proc { subject }.must_raise(Vedeu::Error::RequiresBlock) }
45
+ end
46
+ end
47
+
48
+ describe '#line' do
49
+ subject { including_instance.line { } }
50
+
51
+ context 'when a model exists' do
52
+ let(:model) { Vedeu::Views::View.new }
53
+
54
+ context 'when the block is given' do
55
+ # @todo Add more tests.
56
+ end
57
+
58
+ context 'when the block is not given' do
59
+ subject { including_instance.line }
60
+
61
+ # @todo Add more tests.
62
+ end
63
+ end
64
+
65
+ context 'when a model does not exist' do
66
+ it { proc { subject }.must_raise(Vedeu::Error::Fatal) }
67
+ end
68
+ end
69
+
70
+ describe '#streams' do
71
+ subject { including_instance.streams { } }
72
+
73
+ context 'when the block is given' do
74
+ context 'when a model exists' do
75
+ let(:model) {}
76
+
77
+ # @todo Add more tests.
78
+ end
79
+
80
+ context 'when a model does not exist' do
81
+ it { proc { subject }.must_raise(Vedeu::Error::Fatal) }
82
+ end
83
+ end
84
+
85
+ context 'when the block is not given' do
86
+ subject { including_instance.streams }
87
+
88
+ it { proc { subject }.must_raise(Vedeu::Error::RequiresBlock) }
89
+ end
90
+ end
91
+
92
+ describe '#stream' do
93
+ subject { including_instance.stream { } }
94
+
95
+ context 'when a model exists' do
96
+ let(:model) { Vedeu::Views::View.new }
97
+
98
+ context 'when the block is given' do
99
+ # @todo Add more tests.
100
+ end
101
+
102
+ context 'when the block is not given' do
103
+ subject { including_instance.stream }
104
+
105
+ # @todo Add more tests.
106
+ end
107
+ end
108
+
109
+ context 'when a model does not exist' do
110
+ it { proc { subject }.must_raise(Vedeu::Error::Fatal) }
111
+ end
112
+ end
113
+
114
+ end # Elements
115
+
116
+ end # DSL
117
+
118
+ end # Vedeu
@@ -0,0 +1,35 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ module DSL
6
+
7
+ describe Geometry do
8
+
9
+ # describe '#geometry' do
10
+ # context 'when the required block is not given' do
11
+ # subject { instance.geometry }
12
+
13
+ # it { proc { subject }.must_raise(Vedeu::Error::RequiresBlock) }
14
+ # end
15
+
16
+ # context 'when the block is given' do
17
+ # subject { instance.geometry { } }
18
+
19
+ # context 'when the name is not given' do
20
+ # it 'uses the name of the model' do
21
+ # # @todo Add more tests.
22
+ # end
23
+ # end
24
+
25
+ # context 'when the name is given' do
26
+ # # @todo Add more tests.
27
+ # end
28
+ # end
29
+ # end
30
+
31
+ end # Geometry
32
+
33
+ end # DSL
34
+
35
+ end # Vedeu
@@ -35,15 +35,30 @@ module Vedeu
35
35
 
36
36
  subject { instance.background(background) }
37
37
 
38
+ it do
39
+ dsl.colour.background.must_be_instance_of(Vedeu::Colours::Background)
40
+ end
41
+ it { dsl.colour.background.colour.must_equal(background) }
42
+ end
43
+
44
+ describe '#bg' do
38
45
  it { instance.must_respond_to(:bg) }
46
+ end
47
+
48
+ describe '#bgcolor' do
39
49
  it { instance.must_respond_to(:bgcolor) }
50
+ end
51
+
52
+ describe '#bg=' do
40
53
  it { instance.must_respond_to(:bg=) }
54
+ end
55
+
56
+ describe '#bgcolor=' do
41
57
  it { instance.must_respond_to(:bgcolor=) }
58
+ end
59
+
60
+ describe '#background=' do
42
61
  it { instance.must_respond_to(:background=) }
43
- it do
44
- dsl.colour.background.must_be_instance_of(Vedeu::Colours::Background)
45
- end
46
- it { dsl.colour.background.colour.must_equal(background) }
47
62
  end
48
63
 
49
64
  describe '#foreground' do
@@ -56,15 +71,30 @@ module Vedeu
56
71
 
57
72
  subject { instance.foreground(foreground) }
58
73
 
74
+ it do
75
+ dsl.colour.foreground.must_be_instance_of(Vedeu::Colours::Foreground)
76
+ end
77
+ it { dsl.colour.foreground.colour.must_equal(foreground) }
78
+ end
79
+
80
+ describe '#fg' do
59
81
  it { instance.must_respond_to(:fg) }
82
+ end
83
+
84
+ describe '#fgcolor' do
60
85
  it { instance.must_respond_to(:fgcolor) }
86
+ end
87
+
88
+ describe '#fg=' do
61
89
  it { instance.must_respond_to(:fg=) }
90
+ end
91
+
92
+ describe '#fgcolor=' do
62
93
  it { instance.must_respond_to(:fgcolor=) }
94
+ end
95
+
96
+ describe '#foreground=' do
63
97
  it { instance.must_respond_to(:foreground=) }
64
- it do
65
- dsl.colour.foreground.must_be_instance_of(Vedeu::Colours::Foreground)
66
- end
67
- it { dsl.colour.foreground.colour.must_equal(foreground) }
68
98
  end
69
99
 
70
100
  describe '#colour' do
@@ -72,7 +102,6 @@ module Vedeu
72
102
 
73
103
  subject { instance.colour(attributes) }
74
104
 
75
- it { instance.must_respond_to(:colour=) }
76
105
  it { subject.must_be_instance_of(Vedeu::Colours::Colour) }
77
106
 
78
107
  context 'with an empty value' do
@@ -83,16 +112,28 @@ module Vedeu
83
112
  end
84
113
  end
85
114
 
115
+ describe '#colour=' do
116
+ it { instance.must_respond_to(:colour=) }
117
+ end
118
+
86
119
  describe '#style' do
87
120
  let(:args) { :bold }
88
121
 
89
122
  subject { instance.style(args) }
90
123
 
124
+ it { subject.must_be_instance_of(Vedeu::Presentation::Style) }
125
+ end
126
+
127
+ describe '#style=' do
91
128
  it { instance.must_respond_to(:style=) }
129
+ end
130
+
131
+ describe '#styles' do
92
132
  it { instance.must_respond_to(:styles) }
93
- it { instance.must_respond_to(:styles=) }
133
+ end
94
134
 
95
- it { subject.must_be_instance_of(Vedeu::Presentation::Style) }
135
+ describe '#styles=' do
136
+ it { instance.must_respond_to(:styles=) }
96
137
  end
97
138
 
98
139
  end # Presentation
@@ -0,0 +1,147 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ module DSL
6
+
7
+ describe Align do
8
+
9
+ let(:described) { Vedeu::DSL::Align }
10
+ let(:instance) { described.new(_value, options) }
11
+ let(:_value) { 'Some text...' }
12
+ let(:options) {
13
+ {
14
+ align: align,
15
+ name: _name,
16
+ pad: pad,
17
+ width: width,
18
+ }
19
+ }
20
+ let(:align) { :right }
21
+ let(:_name) { :vedeu_dsl_align }
22
+ let(:pad) { ' ' }
23
+ let(:width) { 20 }
24
+ let(:geometry) {
25
+ Vedeu::Geometries::Geometry.new(name: _name, width: 30)
26
+ }
27
+
28
+ before { Vedeu.geometries.stubs(:by_name).returns(geometry) }
29
+
30
+ describe '#initialize' do
31
+ it { instance.must_be_instance_of(described) }
32
+
33
+ context 'when the value is given' do
34
+ it { instance.instance_variable_get('@value').must_equal(_value) }
35
+ end
36
+
37
+ context 'when the value is not given' do
38
+ let(:_value) {}
39
+
40
+ it { instance.instance_variable_get('@value').must_equal('') }
41
+ end
42
+
43
+ context 'when the options are given' do
44
+ it { instance.instance_variable_get('@options').must_equal(options) }
45
+ end
46
+
47
+ context 'when the options are not given' do
48
+ let(:options) { {} }
49
+ let(:expected) {
50
+ {
51
+ align: :left,
52
+ name: nil,
53
+ pad: ' ',
54
+ width: nil,
55
+ }
56
+ }
57
+
58
+ it { instance.instance_variable_get('@options').must_equal(expected) }
59
+ end
60
+ end
61
+
62
+ describe '#text' do
63
+ subject { instance.text }
64
+
65
+ context 'when the align option is not set' do
66
+ let(:align) {}
67
+
68
+ it { subject.must_equal(_value) }
69
+ end
70
+
71
+ context 'when the align option is set to :left' do
72
+ let(:align) { :left }
73
+
74
+ context 'when a custom pad character is given' do
75
+ let(:pad) { '#' }
76
+ let(:expected) { 'Some text...########' }
77
+
78
+ it { subject.must_equal(expected) }
79
+ end
80
+
81
+ context 'when a width is given' do
82
+ let(:expected) { 'Some text... ' }
83
+
84
+ it { subject.must_equal(expected) }
85
+ end
86
+
87
+ context 'when a width is not given' do
88
+ let(:width) {}
89
+ let(:expected) { 'Some text... ' }
90
+
91
+ it 'uses the width of the named geometry' do
92
+ subject.must_equal(expected)
93
+ end
94
+ end
95
+ end
96
+
97
+ context 'when the align option is set to :centre' do
98
+ let(:align) { :centre }
99
+
100
+ context 'when a width is given' do
101
+ let(:expected) { ' Some text... ' }
102
+
103
+ it { subject.must_equal(expected) }
104
+ end
105
+
106
+ context 'when a width is not given' do
107
+ let(:width) {}
108
+ let(:expected) { ' Some text... ' }
109
+
110
+ it 'uses the width of the named geometry' do
111
+ subject.must_equal(expected)
112
+ end
113
+ end
114
+ end
115
+
116
+ context 'when the align option is set to :right' do
117
+ let(:align) { :right }
118
+
119
+ context 'when a width is given' do
120
+ let(:expected) { ' Some text...' }
121
+
122
+ it { subject.must_equal(expected) }
123
+ end
124
+
125
+ context 'when a width is not given' do
126
+ let(:width) {}
127
+ let(:expected) { ' Some text...' }
128
+
129
+ it 'uses the width of the named geometry' do
130
+ subject.must_equal(expected)
131
+ end
132
+ end
133
+ end
134
+
135
+ context 'when the align option is invalid' do
136
+ let(:align) { :invalid }
137
+ let(:expected) { 'Some text...' }
138
+
139
+ it { subject.must_equal(expected) }
140
+ end
141
+ end
142
+
143
+ end # Align
144
+
145
+ end # DSL
146
+
147
+ end # Vedeu