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
@@ -9,16 +9,17 @@ module Vedeu
9
9
  let(:described) { Vedeu::Output::Viewport }
10
10
  let(:instance) { described.new(view) }
11
11
  let(:view) {
12
- Vedeu::Views::View.build(name: 'lithium', style: nil) do
13
- lines do
14
- line 'barium'
15
- line 'carbon'
16
- line 'helium'
17
- line 'iodine'
18
- line 'nickel'
19
- line 'osmium'
20
- end
21
- end
12
+ values = [
13
+ 'barium',
14
+ 'carbon',
15
+ 'helium',
16
+ 'iodine',
17
+ 'nickel',
18
+ 'osmium',
19
+ ].map { |value| Vedeu::Views::Stream.new(value: value) }
20
+ streams = values.map { |value| Vedeu::Views::Streams.new([value]) }
21
+ lines = streams.map { |stream| Vedeu::Views::Line.new(value: stream) }
22
+ Vedeu::Views::View.new(value: Vedeu::Views::Lines.new(lines))
22
23
  }
23
24
  let(:visible) { true }
24
25
  let(:interface) {
@@ -20,15 +20,28 @@ module Vedeu
20
20
  it { instance.instance_variable_get('@enabled').must_equal(false) }
21
21
  end
22
22
 
23
- describe 'accessors' do
24
- it do
25
- instance.must_respond_to(:name)
26
- instance.must_respond_to(:gem)
27
- instance.must_respond_to(:gem_name)
28
- instance.must_respond_to(:enabled)
29
- instance.must_respond_to(:enabled=)
30
- instance.must_respond_to(:enabled?)
31
- end
23
+ describe '#name' do
24
+ it { instance.must_respond_to(:name) }
25
+ end
26
+
27
+ describe '#gem' do
28
+ it { instance.must_respond_to(:gem) }
29
+ end
30
+
31
+ describe '#gem_name' do
32
+ it { instance.must_respond_to(:gem_name) }
33
+ end
34
+
35
+ describe '#enabled' do
36
+ it { instance.must_respond_to(:enabled) }
37
+ end
38
+
39
+ describe '#enabled=' do
40
+ it { instance.must_respond_to(:enabled=) }
41
+ end
42
+
43
+ describe '#enabled?' do
44
+ it { instance.must_respond_to(:enabled?) }
32
45
  end
33
46
 
34
47
  describe '#load!' do
@@ -6,7 +6,8 @@ module Vedeu
6
6
 
7
7
  describe Colour do
8
8
 
9
- let(:includer) { Vedeu::PresentationColourTestClass.new(attributes) }
9
+ let(:described) { Vedeu::Presentation::Colour }
10
+ let(:includer) { Vedeu::PresentationColourTestClass.new(attributes) }
10
11
  let(:attributes) {
11
12
  {
12
13
  colour: colour,
@@ -65,18 +65,23 @@ module Vedeu
65
65
  }
66
66
  let(:stream_value) { 'Some text' }
67
67
  let(:stream_style) { Vedeu::Presentation::Style.new(:underline) }
68
+ let(:expected) {
69
+ "\e[38;2;255;0;0m\e[48;2;0;0;0m\e[4m" \
70
+ "\e[38;2;255;0;0m\e[48;2;0;0;0m\e[4mS" \
71
+ "\e[38;2;255;0;0m\e[48;2;0;0;0m\e[4mo" \
72
+ "\e[38;2;255;0;0m\e[48;2;0;0;0m\e[4mm" \
73
+ "\e[38;2;255;0;0m\e[48;2;0;0;0m\e[4me" \
74
+ "\e[38;2;255;0;0m\e[48;2;0;0;0m\e[4m " \
75
+ "\e[38;2;255;0;0m\e[48;2;0;0;0m\e[4mt" \
76
+ "\e[38;2;255;0;0m\e[48;2;0;0;0m\e[4me" \
77
+ "\e[38;2;255;0;0m\e[48;2;0;0;0m\e[4mx" \
78
+ "\e[38;2;255;0;0m\e[48;2;0;0;0m\e[4mt"
79
+ }
68
80
 
69
81
  it { includer.must_respond_to(:to_str) }
70
82
 
71
83
  it 'returns output' do
72
- stream.to_s.must_equal(
73
- # - stream colour
74
- # - stream style
75
- # - stream content
76
- "\e[38;2;255;0;0m\e[48;2;0;0;0m" \
77
- "\e[4m" \
78
- 'Some text'
79
- )
84
+ stream.to_s.must_equal(expected)
80
85
  end
81
86
  end
82
87
 
@@ -10,20 +10,21 @@ module Vedeu
10
10
  let(:instance) { described.new(_value) }
11
11
  let(:_value) { 'bold' }
12
12
 
13
- describe 'alias methods' do
14
- it { instance.must_respond_to(:escape_sequences) }
15
- end
16
-
17
13
  describe '#initialize' do
18
14
  it { instance.must_be_instance_of(described) }
19
15
  it { instance.instance_variable_get('@value').must_equal('bold') }
20
16
  end
21
17
 
22
- describe 'accessors' do
23
- it do
24
- instance.must_respond_to(:value)
25
- instance.must_respond_to(:value=)
26
- end
18
+ describe '#escape_sequences' do
19
+ it { instance.must_respond_to(:escape_sequences) }
20
+ end
21
+
22
+ describe '#value' do
23
+ it { instance.must_respond_to(:value) }
24
+ end
25
+
26
+ describe '#value=' do
27
+ it { instance.must_respond_to(:value=) }
27
28
  end
28
29
 
29
30
  describe '.coerce' do
@@ -52,6 +53,16 @@ module Vedeu
52
53
 
53
54
  it { subject.value.must_equal([:bold, :blink]) }
54
55
  end
56
+
57
+ context 'when the value is a Hash' do
58
+ let(:_value) {
59
+ {
60
+ style: [:bold, :blink]
61
+ }
62
+ }
63
+
64
+ it { subject.value.must_equal([:bold, :blink]) }
65
+ end
55
66
  end
56
67
 
57
68
  describe '#attributes' do
@@ -78,6 +89,10 @@ module Vedeu
78
89
  end
79
90
  end
80
91
 
92
+ describe '#==' do
93
+ it { instance.must_respond_to(:==) }
94
+ end
95
+
81
96
  describe '#to_s' do
82
97
  let(:_value) {}
83
98
 
@@ -86,7 +101,7 @@ module Vedeu
86
101
  it { subject.must_be_instance_of(String) }
87
102
  it { subject.must_equal('') }
88
103
 
89
- describe 'for a single style' do
104
+ context 'for a single style' do
90
105
  let(:_value) { 'normal' }
91
106
 
92
107
  it 'returns an escape sequence' do
@@ -94,7 +109,7 @@ module Vedeu
94
109
  end
95
110
  end
96
111
 
97
- describe 'for multiple styles' do
112
+ context 'for multiple styles' do
98
113
  let(:_value) { ['normal', 'underline'] }
99
114
 
100
115
  it 'returns an escape sequence for multiple styles' do
@@ -102,7 +117,7 @@ module Vedeu
102
117
  end
103
118
  end
104
119
 
105
- describe 'for an unknown style' do
120
+ context 'for an unknown style' do
106
121
  let(:_value) { 'unknown' }
107
122
 
108
123
  it 'returns an empty string for an unknown style' do
@@ -110,7 +125,7 @@ module Vedeu
110
125
  end
111
126
  end
112
127
 
113
- describe 'for an empty or nil' do
128
+ context 'for an empty or nil' do
114
129
  let(:_value) { '' }
115
130
 
116
131
  it 'returns an empty string for empty or nil' do
@@ -32,8 +32,6 @@ module Vedeu
32
32
 
33
33
  subject { instance.render(output) }
34
34
 
35
- it { instance.must_respond_to(:clear) }
36
-
37
35
  # it { subject.must_be_instance_of(String) }
38
36
 
39
37
  context 'when the filename option is not set' do
@@ -66,6 +64,10 @@ module Vedeu
66
64
  end
67
65
  end
68
66
 
67
+ describe '#clear' do
68
+ it { instance.must_respond_to(:clear) }
69
+ end
70
+
69
71
  end # File
70
72
 
71
73
  end # Renderers
@@ -23,7 +23,7 @@ module Vedeu
23
23
  }
24
24
  let(:compression) { false }
25
25
 
26
- describe 'accessors' do
26
+ describe '#options=' do
27
27
  it { instance.must_respond_to(:options=) }
28
28
  end
29
29
 
@@ -42,6 +42,20 @@ module Vedeu
42
42
  end
43
43
  end
44
44
 
45
+ describe '#any?' do
46
+ subject { instance.any? }
47
+
48
+ context 'when the collection is empty' do
49
+ let(:collection) { [] }
50
+
51
+ it { subject.must_equal(false) }
52
+ end
53
+
54
+ context 'when the collection is not empty' do
55
+ it { subject.must_equal(true) }
56
+ end
57
+ end
58
+
45
59
  describe '#empty?' do
46
60
  subject { instance.empty? }
47
61
 
@@ -75,6 +89,10 @@ module Vedeu
75
89
  end
76
90
  end
77
91
 
92
+ describe '#==' do
93
+ it { instance.must_respond_to(:==) }
94
+ end
95
+
78
96
  describe '#size' do
79
97
  subject { instance.size }
80
98
 
@@ -19,15 +19,32 @@ module Vedeu
19
19
  it { instance.instance_variable_get('@parent').must_equal(parent) }
20
20
  end
21
21
 
22
- describe 'accessors' do
23
- it do
24
- instance.must_respond_to(:collection)
25
- instance.must_respond_to(:all)
26
- instance.must_respond_to(:parent)
27
- instance.must_respond_to(:parent=)
28
- instance.must_respond_to(:name)
29
- instance.must_respond_to(:name=)
30
- end
22
+ describe '#collection' do
23
+ it { instance.must_respond_to(:collection) }
24
+ end
25
+
26
+ describe '#all' do
27
+ it { instance.must_respond_to(:all) }
28
+ end
29
+
30
+ describe '#value' do
31
+ it { instance.must_respond_to(:value) }
32
+ end
33
+
34
+ describe '#parent' do
35
+ it { instance.must_respond_to(:parent) }
36
+ end
37
+
38
+ describe '#parent=' do
39
+ it { instance.must_respond_to(:parent=) }
40
+ end
41
+
42
+ describe '#name' do
43
+ it { instance.must_respond_to(:name) }
44
+ end
45
+
46
+ describe '#name=' do
47
+ it { instance.must_respond_to(:name=) }
31
48
  end
32
49
 
33
50
  describe '.coerce' do
@@ -40,11 +57,14 @@ module Vedeu
40
57
  describe '#add' do
41
58
  subject { instance.add(:hydrogen) }
42
59
 
43
- it { instance.must_respond_to(:<<) }
44
60
  it { subject.must_be_instance_of(Vedeu::Repositories::Collection) }
45
61
  it { subject.all.must_equal([:hydrogen]) }
46
62
  end
47
63
 
64
+ describe '#<<' do
65
+ it { instance.must_respond_to(:<<) }
66
+ end
67
+
48
68
  describe '#all' do
49
69
  subject { instance.all }
50
70
 
@@ -76,6 +96,10 @@ module Vedeu
76
96
  end
77
97
  end
78
98
 
99
+ describe '#to_str' do
100
+ it { instance.must_respond_to(:to_str) }
101
+ end
102
+
79
103
  end # Collection
80
104
 
81
105
  end # Repositories
@@ -39,6 +39,12 @@ module Vedeu
39
39
  instance.instance_variables.
40
40
  must_equal([:@some_attribute])
41
41
  end
42
+
43
+ context 'when the attributes is not a Hash' do
44
+ let(:attributes) { :invalid }
45
+
46
+ it { proc { instance }.must_raise(Vedeu::Error::InvalidSyntax) }
47
+ end
42
48
  end
43
49
 
44
50
  # @todo Add more tests.
@@ -14,8 +14,11 @@ module Vedeu
14
14
  }
15
15
  }
16
16
 
17
- describe 'accessors' do
17
+ describe '#repository' do
18
18
  it { instance.must_respond_to(:repository) }
19
+ end
20
+
21
+ describe '#repository=' do
19
22
  it { instance.must_respond_to(:repository=) }
20
23
  end
21
24
 
@@ -28,18 +31,6 @@ module Vedeu
28
31
  # it { skip }
29
32
  end
30
33
 
31
- describe '.child' do
32
- let(:klass) {}
33
-
34
- subject { described.child(klass) }
35
-
36
- it { described.must_respond_to(:member) }
37
- it { described.must_respond_to(:collection) }
38
-
39
- # @todo Add more tests.
40
- # it { skip }
41
- end
42
-
43
34
  describe '.repository' do
44
35
  let(:klass) {}
45
36
 
@@ -54,8 +54,11 @@ module Vedeu
54
54
  it { instance.instance_variable_get('@storage').must_equal(storage) }
55
55
  end
56
56
 
57
- describe 'accessors' do
57
+ describe '#model' do
58
58
  it { instance.must_respond_to(:model) }
59
+ end
60
+
61
+ describe '#storage' do
59
62
  it { instance.must_respond_to(:storage) }
60
63
  end
61
64
 
@@ -218,8 +221,6 @@ module Vedeu
218
221
  describe '#remove' do
219
222
  subject { instance.remove('francium') }
220
223
 
221
- it { instance.must_respond_to(:delete) }
222
-
223
224
  context 'when the storage is empty' do
224
225
  before { instance.reset }
225
226
 
@@ -248,13 +249,15 @@ module Vedeu
248
249
  end
249
250
  end
250
251
 
252
+ describe '#delete' do
253
+ it { instance.must_respond_to(:delete) }
254
+ end
255
+
251
256
  describe '#store' do
252
257
  subject { instance.store(model_instance) }
253
258
 
254
259
  before { Vedeu.stubs(:log) }
255
260
 
256
- it { instance.must_respond_to(:register) }
257
-
258
261
  context 'when a name attribute is empty or nil' do
259
262
  before { model_instance.name = '' }
260
263
 
@@ -268,6 +271,10 @@ module Vedeu
268
271
  end
269
272
  end
270
273
 
274
+ describe '#register' do
275
+ it { instance.must_respond_to(:register) }
276
+ end
277
+
271
278
  end # Repository
272
279
 
273
280
  end # Repositories
@@ -82,7 +82,9 @@ module Vedeu
82
82
 
83
83
  it { subject.must_equal(true) }
84
84
  end
85
+ end
85
86
 
87
+ describe '#registered?' do
86
88
  it { instance.must_respond_to(:registered?) }
87
89
  end
88
90
 
@@ -136,8 +138,13 @@ module Vedeu
136
138
  it 'resets the repository' do
137
139
  instance.reset.must_equal({})
138
140
  end
141
+ end
139
142
 
143
+ describe '#reset!' do
140
144
  it { instance.must_respond_to(:reset!) }
145
+ end
146
+
147
+ describe '#clear' do
141
148
  it { instance.must_respond_to(:clear) }
142
149
  end
143
150
 
@@ -159,7 +166,9 @@ module Vedeu
159
166
  subject { instance.storage }
160
167
 
161
168
  it { subject.must_equal({}) }
169
+ end
162
170
 
171
+ describe '#all' do
163
172
  it { instance.must_respond_to(:all) }
164
173
  end
165
174