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
@@ -1,85 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- module DSL
6
-
7
- describe Line do
8
-
9
- let(:described) { Vedeu::DSL::Line }
10
- let(:instance) { described.new(model) }
11
- let(:model) { Vedeu::Views::Line.new(attributes) }
12
- let(:client) {}
13
- let(:colour) { Vedeu::Colours::Colour.new }
14
- let(:parent) { Vedeu::Views::View.new }
15
- let(:style) { Vedeu::Presentation::Style.new }
16
- let(:_value) { [] }
17
- let(:attributes) {
18
- {
19
- client: client,
20
- value: _value,
21
- parent: parent,
22
- colour: colour,
23
- style: style,
24
- }
25
- }
26
-
27
- describe '#line' do
28
- let(:_value) { '' }
29
-
30
- subject {
31
- instance.line do
32
- # ...
33
- end
34
- }
35
-
36
- it { subject.must_be_instance_of(Vedeu::Views::Lines) }
37
- it { subject[0].must_be_instance_of(Vedeu::Views::Line) }
38
- it { instance.must_respond_to(:line=) }
39
-
40
- context 'when the block is given' do
41
- end
42
-
43
- context 'when the block is not given' do
44
- context 'when the value is given' do
45
- subject { instance.line(_value) }
46
- end
47
-
48
- context 'when the value is not given' do
49
- let(:_value) {}
50
-
51
- subject { instance.line(_value) }
52
-
53
- it { proc { subject }.must_raise(Vedeu::Error::RequiresBlock) }
54
- end
55
- end
56
- end
57
-
58
- describe '#streams' do
59
- context 'when the block is given' do
60
- subject {
61
- instance.streams do
62
- # ...
63
- end
64
- }
65
-
66
- it { subject.must_be_instance_of(Vedeu::Views::Streams) }
67
- it { subject[0].must_be_instance_of(Vedeu::Views::Stream) }
68
- end
69
-
70
- context 'when the block is not given' do
71
- it do
72
- proc { instance.streams }.must_raise(Vedeu::Error::RequiresBlock)
73
- end
74
- end
75
-
76
- it { instance.must_respond_to(:stream) }
77
- it { instance.must_respond_to(:stream=) }
78
- it { instance.must_respond_to(:streams=) }
79
- end
80
-
81
- end # Line
82
-
83
- end # DSL
84
-
85
- end # Vedeu
@@ -1,66 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- module DSL
6
-
7
- describe Shared do
8
-
9
- let(:described) { Vedeu::DSL::Shared }
10
- let(:instance) { Class.include(described).new }
11
-
12
- describe '#border' do
13
- context 'when the block is not given' do
14
- subject { instance.border }
15
-
16
- it { proc { subject }.must_raise(Vedeu::Error::RequiresBlock) }
17
- end
18
-
19
- context 'when the block is given' do
20
- subject { instance.border { } }
21
-
22
- context 'when the name is not given' do
23
- it 'uses the name of the model' do
24
- # @todo Add more tests.
25
- end
26
- end
27
-
28
- context 'when the name is given' do
29
- # @todo Add more tests.
30
- end
31
- end
32
- end
33
-
34
- describe '#border!' do
35
- subject { instance.border! }
36
-
37
- # @todo Add more tests.
38
- end
39
-
40
- describe '#geometry' do
41
- context 'when the required block is not given' do
42
- subject { instance.geometry }
43
-
44
- it { proc { subject }.must_raise(Vedeu::Error::RequiresBlock) }
45
- end
46
-
47
- context 'when the block is given' do
48
- subject { instance.geometry { } }
49
-
50
- context 'when the name is not given' do
51
- it 'uses the name of the model' do
52
- # @todo Add more tests.
53
- end
54
- end
55
-
56
- context 'when the name is given' do
57
- # @todo Add more tests.
58
- end
59
- end
60
- end
61
-
62
- end # Shared
63
-
64
- end # DSL
65
-
66
- end # Vedeu
@@ -1,30 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- module DSL
6
-
7
- describe Stream do
8
-
9
- let(:described) { Vedeu::DSL::Stream }
10
- let(:instance) { described.new(model) }
11
- let(:model) { Vedeu::Views::Stream.new(parent: parent) }
12
- let(:parent) { Vedeu::Views::Line.new }
13
-
14
- describe '#stream' do
15
- subject { instance.stream { } }
16
-
17
- it { subject.must_be_instance_of(Vedeu::Views::Streams) }
18
-
19
- context 'when the block is not given' do
20
- subject { instance.stream }
21
-
22
- it { proc { subject }.must_raise(Vedeu::Error::RequiresBlock) }
23
- end
24
- end
25
-
26
- end # Stream
27
-
28
- end # DSL
29
-
30
- end # Vedeu
@@ -1,13 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- module DSL
6
-
7
- describe Streams do
8
-
9
- end # Streams
10
-
11
- end # DSL
12
-
13
- end # Vedeu
@@ -1,122 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- module DSL
6
-
7
- describe Text do
8
-
9
- describe '#text' do
10
- let(:_value) {}
11
- let(:options) { {} }
12
- let(:modified_options) {
13
- {
14
- anchor: anchor,
15
- model: model,
16
- name: model.name,
17
- client: nil,
18
- }
19
- }
20
- let(:anchor) { :text }
21
- let(:model) { Vedeu::Views::Line.new }
22
- let(:instance) { Vedeu::DSL::Line.new(model) }
23
-
24
- subject { instance.text(_value, options) }
25
-
26
- it { instance.must_respond_to(:text=) }
27
- it { instance.must_respond_to(:align=) }
28
- it { instance.must_respond_to(:center=) }
29
- it { instance.must_respond_to(:centre=) }
30
- it { instance.must_respond_to(:left=) }
31
- it { instance.must_respond_to(:right=) }
32
-
33
- context 'when the model is a Vedeu::Views::View' do
34
- let(:model) { Vedeu::Views::View.new }
35
- let(:instance) { Vedeu::Interfaces::DSL.new(model) }
36
-
37
- it { subject.must_be_instance_of(Vedeu::Views::Lines) }
38
-
39
- it 'adds the text to the model' do
40
- Vedeu::Output::Text.expects(:add).with(_value, modified_options)
41
- subject
42
- end
43
- end
44
-
45
- context 'when the model is a Vedeu::Views::Line' do
46
- let(:model) { Vedeu::Views::Line.new }
47
- let(:instance) { Vedeu::DSL::Line.new(model) }
48
-
49
- it { subject.must_be_instance_of(Vedeu::Views::Streams) }
50
-
51
- it 'adds the text to the model' do
52
- Vedeu::Output::Text.expects(:add).with(_value, modified_options)
53
- subject
54
- end
55
- end
56
-
57
- context 'when the model is a Vedeu::Views::Stream' do
58
- let(:parent) { Vedeu::Views::Line.new }
59
- let(:model) { Vedeu::Views::Stream.new(parent: parent) }
60
- let(:instance) { Vedeu::DSL::Stream.new(model) }
61
-
62
- it { subject.must_be_instance_of(Vedeu::Views::Streams) }
63
-
64
- it 'adds the text to the model' do
65
- Vedeu::Output::Text.expects(:add).with(_value, modified_options)
66
- subject
67
- end
68
- end
69
-
70
- context 'alias methods' do
71
- context '#align' do
72
- let(:anchor) { :align }
73
-
74
- it 'adds the text to the model' do
75
- Vedeu::Output::Text.expects(:add).with(_value, modified_options)
76
- instance.align(_value, options)
77
- end
78
- end
79
-
80
- context '#center' do
81
- let(:anchor) { :center }
82
-
83
- it 'adds the text to the model' do
84
- Vedeu::Output::Text.expects(:add).with(_value, modified_options)
85
- instance.center(_value, options)
86
- end
87
- end
88
-
89
- context '#centre' do
90
- let(:anchor) { :centre }
91
-
92
- it 'adds the text to the model' do
93
- Vedeu::Output::Text.expects(:add).with(_value, modified_options)
94
- instance.centre(_value, options)
95
- end
96
- end
97
-
98
- context '#left' do
99
- let(:anchor) { :left }
100
-
101
- it 'adds the text to the model' do
102
- Vedeu::Output::Text.expects(:add).with(_value, modified_options)
103
- instance.left(_value, options)
104
- end
105
- end
106
-
107
- context '#right' do
108
- let(:anchor) { :right }
109
-
110
- it 'adds the text to the model' do
111
- Vedeu::Output::Text.expects(:add).with(_value, modified_options)
112
- instance.right(_value, options)
113
- end
114
- end
115
- end
116
- end
117
-
118
- end # Text
119
-
120
- end # DSL
121
-
122
- end # Vedeu
@@ -1,156 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- module Output
6
-
7
- describe Text do
8
-
9
- let(:described) { Vedeu::Output::Text }
10
- let(:_value) { 'Testing the Text class with various options' }
11
- let(:options) {
12
- {
13
- anchor: anchor,
14
- background: background,
15
- colour: colour,
16
- foreground: foreground,
17
- model: model,
18
- pad: pad,
19
- width: width,
20
- }
21
- }
22
- let(:anchor) { :left }
23
- let(:background) { nil }
24
- let(:colour) { nil }
25
- let(:foreground) { nil }
26
- let(:model) { nil }
27
- let(:pad) { ' ' }
28
- let(:width) { nil }
29
-
30
- describe '.with' do
31
- subject { described.with(_value, options) }
32
-
33
- context 'when a width is provided' do
34
- context 'when value longer than the width' do
35
- let(:width) { 23 }
36
-
37
- it 'returns the value truncated' do
38
- subject.must_equal('Testing the Text class ')
39
- end
40
- end
41
-
42
- context 'when value is shorter or equal to the width' do
43
- let(:width) { 48 }
44
-
45
- context 'and an anchor is not set' do
46
- it 'returns the value left aligned' do
47
- subject
48
- .must_equal('Testing the Text class with various options ')
49
- end
50
- end
51
-
52
- context 'and the anchor is set to :left' do
53
- it 'returns the value left aligned' do
54
- subject
55
- .must_equal('Testing the Text class with various options ')
56
- end
57
- end
58
-
59
- context 'and the anchor is set to :align' do
60
- let(:anchor) { :align }
61
-
62
- it 'returns the value left aligned' do
63
- subject
64
- .must_equal('Testing the Text class with various options ')
65
- end
66
- end
67
-
68
- context 'and the anchor is set to centre' do
69
- let(:anchor) { :centre }
70
-
71
- it 'returns the value centre aligned' do
72
- subject
73
- .must_equal(' Testing the Text class with various options ')
74
- end
75
- end
76
-
77
- context 'and the anchor is set to right' do
78
- let(:anchor) { :right }
79
-
80
- it 'returns the value right aligned' do
81
- subject
82
- .must_equal(' Testing the Text class with various options')
83
- end
84
- end
85
-
86
- context 'and the anchor is invalid' do
87
- let(:anchor) { :invalid }
88
-
89
- it 'returns the value left aligned' do
90
- subject
91
- .must_equal('Testing the Text class with various options ')
92
- end
93
- end
94
- end
95
- end
96
-
97
- context 'when a width is not provided' do
98
- let(:width) {}
99
- let(:_value) { 'some value' }
100
-
101
- it 'returns the value as a string' do
102
- subject.must_equal('some value')
103
- end
104
- end
105
- end
106
-
107
- describe '.add' do
108
- subject { described.add(value, options) }
109
-
110
- context 'when the model is a Vedeu::Views::View' do
111
- let(:model) { Vedeu::Views::View.new }
112
-
113
- it { subject.must_be_instance_of(Vedeu::Views::Lines) }
114
- end
115
-
116
- context 'when the model is a Vedeu::Views::Line' do
117
- let(:model) { Vedeu::Views::Line.new }
118
-
119
- it { subject.must_be_instance_of(Vedeu::Views::Streams) }
120
- end
121
-
122
- context 'when the model is a Vedeu::Views::Stream' do
123
- let(:parent) { Vedeu::Views::Line.new }
124
- let(:model) { Vedeu::Views::Stream.new(parent: parent) }
125
-
126
- it { subject.must_be_instance_of(Vedeu::Views::Streams) }
127
- end
128
-
129
- context 'when the model is not given' do
130
- let(:model) {}
131
-
132
- it { subject.must_be_instance_of(NilClass) }
133
- end
134
-
135
- context 'when the colour option is given' do
136
- let(:colour) { { background: '#33ff33', foreground: '#ffaa00' } }
137
-
138
- # @todo Add more tests.
139
- # it { skip }
140
- end
141
-
142
- context 'when the background and/or foreground options are given' do
143
- let(:background) { '#111111' }
144
- let(:foreground) { '#aadd00' }
145
-
146
- # @todo Add more tests.
147
- # it { skip }
148
- end
149
-
150
- end
151
-
152
- end # Text
153
-
154
- end # Output
155
-
156
- end # Vedeu