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,97 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ module Views
6
+
7
+ class DefaultAttributesTest
8
+
9
+ include Vedeu::Views::DefaultAttributes
10
+
11
+ def nil_for_testing_purposes
12
+ nil
13
+ end
14
+ alias_method :client, :nil_for_testing_purposes
15
+ alias_method :colour, :nil_for_testing_purposes
16
+ alias_method :name, :nil_for_testing_purposes
17
+ alias_method :parent, :nil_for_testing_purposes
18
+ alias_method :style, :nil_for_testing_purposes
19
+
20
+ end # DefaultAttributesTest
21
+
22
+ describe DefaultAttributes do
23
+
24
+ let(:described) { Vedeu::Views::DefaultAttributes }
25
+ let(:instance) {}
26
+
27
+ let(:including_described) { Vedeu::Views::DefaultAttributesTest }
28
+ let(:including_instance) { including_described.new }
29
+ let(:model) {}
30
+
31
+ describe '#align' do
32
+ it { including_instance.must_respond_to(:align) }
33
+ end
34
+
35
+ describe '#client' do
36
+ it { including_instance.must_respond_to(:client) }
37
+ end
38
+
39
+ describe '#colour' do
40
+ it { including_instance.must_respond_to(:colour) }
41
+ end
42
+
43
+ describe '#name' do
44
+ it { including_instance.must_respond_to(:name) }
45
+ end
46
+
47
+ describe '#pad' do
48
+ it { including_instance.must_respond_to(:pad) }
49
+ end
50
+
51
+ describe '#parent' do
52
+ it { including_instance.must_respond_to(:parent) }
53
+ end
54
+
55
+ describe '#style' do
56
+ it { including_instance.must_respond_to(:style) }
57
+ end
58
+
59
+ describe '#truncate' do
60
+ it { including_instance.must_respond_to(:truncate) }
61
+ end
62
+
63
+ describe '#width' do
64
+ it { including_instance.must_respond_to(:width) }
65
+ end
66
+
67
+ describe '#wordwrap' do
68
+ it { including_instance.must_respond_to(:wordwrap) }
69
+ end
70
+
71
+ describe '#attributes' do
72
+ let(:expected) {
73
+ {
74
+ align: nil,
75
+ client: nil,
76
+ colour: nil,
77
+ name: nil,
78
+ pad: ' ',
79
+ parent: nil,
80
+ style: nil,
81
+ truncate: false,
82
+ width: nil,
83
+ wordwrap: false,
84
+ }
85
+ }
86
+
87
+ subject { including_instance.attributes }
88
+
89
+ it { subject.must_be_instance_of(Hash) }
90
+ it { subject.must_equal(expected) }
91
+ end
92
+
93
+ end # DefaultAttributes
94
+
95
+ end # Views
96
+
97
+ end # Vedeu
@@ -4,19 +4,6 @@ module Vedeu
4
4
 
5
5
  module Views
6
6
 
7
- describe Lines do
8
-
9
- let(:described) { Vedeu::Views::Lines }
10
- let(:instance) { described.new }
11
-
12
- it { described.superclass.must_equal(Vedeu::Repositories::Collection) }
13
-
14
- describe '#initialize' do
15
- it { instance.must_be_instance_of(described) }
16
- end
17
-
18
- end # Lines
19
-
20
7
  describe Line do
21
8
 
22
9
  let(:described) { Vedeu::Views::Line }
@@ -69,17 +56,27 @@ module Vedeu
69
56
  it { instance.instance_variable_get('@parent').must_equal(parent) }
70
57
  end
71
58
 
72
- describe 'accessors' do
73
- it do
74
- instance.must_respond_to(:parent)
75
- instance.must_respond_to(:parent=)
76
- end
59
+ describe '#client' do
60
+ it { instance.must_respond_to(:client) }
61
+ end
62
+
63
+ describe '#client=' do
64
+ it { instance.must_respond_to(:client=) }
65
+ end
66
+
67
+ describe '#parent' do
68
+ it { instance.must_respond_to(:parent) }
69
+ end
70
+
71
+ describe '#parent=' do
72
+ it { instance.must_respond_to(:parent=) }
77
73
  end
78
74
 
79
75
  describe '#add' do
80
76
  subject { instance.add(child) }
77
+ end
81
78
 
82
- it { instance.must_respond_to(:add) }
79
+ describe '#<<' do
83
80
  it { instance.must_respond_to(:<<) }
84
81
  end
85
82
 
@@ -105,14 +102,6 @@ module Vedeu
105
102
  end
106
103
  end
107
104
 
108
- describe '#deputy' do
109
- subject { instance.deputy }
110
-
111
- it 'returns the DSL instance' do
112
- subject.must_be_instance_of(Vedeu::DSL::Line)
113
- end
114
- end
115
-
116
105
  describe '#eql?' do
117
106
  let(:other) { instance }
118
107
 
@@ -127,6 +116,10 @@ module Vedeu
127
116
  end
128
117
  end
129
118
 
119
+ describe '#==' do
120
+ it { instance.must_respond_to(:==) }
121
+ end
122
+
130
123
  describe '#name' do
131
124
  subject { instance.name }
132
125
 
@@ -151,54 +144,6 @@ module Vedeu
151
144
  end
152
145
  end
153
146
 
154
- describe '#value' do
155
- subject { instance.value }
156
-
157
- it { instance.must_respond_to(:streams) }
158
-
159
- it { subject.must_be_instance_of(Vedeu::Views::Streams) }
160
- end
161
-
162
- describe '#to_s' do
163
- subject { instance.to_s }
164
-
165
- it { subject.must_be_instance_of(String) }
166
-
167
- it 'returns the line complete with formatting' do
168
- # (starts in Line colour)
169
- # (starts in Line style)
170
- # Stream 1 colour
171
- # Stream 1 style
172
- # Stream 1 value
173
- # (resets style to Line style)
174
- # (resets colour to Line colour)
175
- # Stream 2 colour
176
- # Stream 2 style
177
- # Stream 2 value
178
- # (resets style to Line style)
179
- # (resets colour to Line colour)
180
- # Stream 3 colour
181
- # Stream 3 style
182
- # Stream 3 value
183
- # (resets style to Line style)
184
- # (resets colour to Line colour)
185
-
186
- subject.must_equal(
187
- "\e[38;2;255;0;0m\e[48;2;0;0;0m" \
188
- "\e[24m\e[22m\e[27m" \
189
- "\e[38;2;255;255;0m" \
190
- "\e[24m\e[22m\e[27m" \
191
- 'Something interesting ' \
192
- "\e[38;2;0;255;0m" \
193
- "\e[24m\e[22m\e[27m" \
194
- 'on this line ' \
195
- "\e[38;2;0;0;255m" \
196
- "\e[24m\e[22m\e[27m" \
197
- 'would be cool, eh?'
198
- )
199
- end
200
- end
201
-
202
147
  end # Line
203
148
 
204
149
  end # Views
@@ -6,6 +6,53 @@ module Vedeu
6
6
 
7
7
  describe Lines do
8
8
 
9
+ let(:described) { Vedeu::Views::Lines }
10
+ let(:instance) { described.new }
11
+ let(:collection) { Vedeu::Views::Lines.new }
12
+ let(:parent) {}
13
+ let(:_name) {}
14
+
15
+ it { described.superclass.must_equal(Vedeu::Repositories::Collection) }
16
+
17
+ describe '.coerce' do
18
+ let(:line) { Vedeu::Views::Line.new }
19
+
20
+ subject { described.coerce(collection, parent, _name) }
21
+
22
+ context 'when the collection is a Vedeu::Views::Lines' do
23
+ it { subject.must_equal(collection) }
24
+ end
25
+
26
+ context 'when the collection is an Array' do
27
+ context 'when the collection is not empty' do
28
+ let(:collection) { [line, nil, line] }
29
+ let(:expected) { described.new([line, line]) }
30
+
31
+ it { subject.must_equal(expected) }
32
+ end
33
+
34
+ context 'when the collection is empty' do
35
+ let(:collection) { [] }
36
+ let(:expected) { described.new }
37
+
38
+ it { subject.must_equal(expected) }
39
+ end
40
+ end
41
+
42
+ context 'when the collection is a Vedeu::Views::Line' do
43
+ let(:collection) { line }
44
+ let(:expected) { described.new([line]) }
45
+
46
+ it { subject.must_equal(expected) }
47
+ end
48
+
49
+ context 'when the collection is something else' do
50
+ let(:collection) { :invalid }
51
+
52
+ it { proc { subject }.must_raise(Vedeu::Error::InvalidSyntax) }
53
+ end
54
+ end
55
+
9
56
  end # Lines
10
57
 
11
58
  end # Views
@@ -4,32 +4,21 @@ module Vedeu
4
4
 
5
5
  module Views
6
6
 
7
- describe Streams do
8
-
9
- let(:described) { Vedeu::Views::Streams }
10
- let(:instance) { described.new }
11
-
12
- it { described.superclass.must_equal(Vedeu::Repositories::Collection) }
13
-
14
- describe '#initialize' do
15
- it { instance.must_be_instance_of(described) }
16
- end
17
-
18
- end # Streams
19
-
20
7
  describe Stream do
21
8
 
22
9
  let(:described) { Vedeu::Views::Stream }
23
10
  let(:instance) { described.new(attributes) }
24
11
  let(:attributes) {
25
12
  {
26
- value: _value,
27
- parent: parent,
28
13
  colour: colour,
29
- style: style
14
+ name: _name,
15
+ parent: parent,
16
+ style: style,
17
+ value: _value,
30
18
  }
31
19
  }
32
- let(:_value) { 'Some text' }
20
+ let(:_name) {}
21
+ let(:_value) { 'Some text' }
33
22
  let(:parent) {
34
23
  Vedeu::Views::Line.new(value: [],
35
24
  parent: line_parent,
@@ -47,19 +36,35 @@ module Vedeu
47
36
 
48
37
  describe '#initialize' do
49
38
  it { instance.must_be_instance_of(described) }
50
- it { instance.instance_variable_get('@value').must_equal(_value) }
39
+ it { instance.instance_variable_get('@colour').must_equal(colour) }
40
+ it { instance.instance_variable_get('@name').must_equal(_name) }
51
41
  it { instance.instance_variable_get('@parent').must_equal(parent) }
42
+ it { instance.instance_variable_get('@style').must_equal(style) }
43
+ it { instance.instance_variable_get('@value').must_equal(_value) }
52
44
  end
53
45
 
54
- describe 'accessors' do
55
- it do
56
- instance.must_respond_to(:parent)
57
- instance.must_respond_to(:parent=)
58
- instance.must_respond_to(:value)
59
- instance.must_respond_to(:content)
60
- instance.must_respond_to(:text)
61
- instance.must_respond_to(:value=)
62
- end
46
+ describe '#parent' do
47
+ it { instance.must_respond_to(:parent) }
48
+ end
49
+
50
+ describe '#parent=' do
51
+ it { instance.must_respond_to(:parent=) }
52
+ end
53
+
54
+ describe '#value' do
55
+ it { instance.must_respond_to(:value) }
56
+ end
57
+
58
+ describe '#content' do
59
+ it { instance.must_respond_to(:content) }
60
+ end
61
+
62
+ describe '#text' do
63
+ it { instance.must_respond_to(:text) }
64
+ end
65
+
66
+ describe '#value=' do
67
+ it { instance.must_respond_to(:value=) }
63
68
  end
64
69
 
65
70
  describe '#add' do
@@ -68,7 +73,9 @@ module Vedeu
68
73
  subject { instance.add(child) }
69
74
 
70
75
  it { subject.must_be_instance_of(Vedeu::Views::Streams) }
76
+ end
71
77
 
78
+ describe '#<<' do
72
79
  it { instance.must_respond_to(:<<) }
73
80
  end
74
81
 
@@ -78,32 +85,6 @@ module Vedeu
78
85
  it { subject.must_be_instance_of(Hash) }
79
86
  end
80
87
 
81
- describe '#chars' do
82
- subject { instance.chars }
83
-
84
- it { subject.must_be_instance_of(Array) }
85
-
86
- context 'when there is content' do
87
- it { subject.size.must_equal(9) }
88
- end
89
-
90
- context 'when there is no content' do
91
- let(:_value) { '' }
92
-
93
- it 'returns an empty collection' do
94
- subject.must_equal([])
95
- end
96
- end
97
- end
98
-
99
- describe '#deputy' do
100
- subject { instance.deputy }
101
-
102
- it 'returns the DSL instance' do
103
- subject.must_be_instance_of(Vedeu::DSL::Stream)
104
- end
105
- end
106
-
107
88
  describe '#eql?' do
108
89
  let(:other) { described.new(attributes) }
109
90
 
@@ -120,6 +101,10 @@ module Vedeu
120
101
  end
121
102
  end
122
103
 
104
+ describe '#==' do
105
+ it { instance.must_respond_to(:==) }
106
+ end
107
+
123
108
  describe '#name' do
124
109
  subject { instance.name }
125
110
 
@@ -134,16 +119,6 @@ module Vedeu
134
119
  end
135
120
  end
136
121
 
137
- describe '#size' do
138
- subject { instance.size }
139
-
140
- it { subject.must_be_instance_of(Fixnum) }
141
-
142
- it 'returns the size of the stream' do
143
- subject.must_equal(9)
144
- end
145
- end
146
-
147
122
  end # Stream
148
123
 
149
124
  end # Views
@@ -6,6 +6,15 @@ module Vedeu
6
6
 
7
7
  describe Streams do
8
8
 
9
+ let(:described) { Vedeu::Views::Streams }
10
+ let(:instance) { described.new }
11
+
12
+ it { described.superclass.must_equal(Vedeu::Repositories::Collection) }
13
+
14
+ describe '#initialize' do
15
+ it { instance.must_be_instance_of(described) }
16
+ end
17
+
9
18
  end # Streams
10
19
 
11
20
  end # Views