vedeu 0.7.4 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
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