vedeu 0.2.12 → 0.3.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 (305) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/Guardfile +13 -0
  4. data/README.md +11 -9
  5. data/Rakefile +10 -1
  6. data/bin/vedeu_test +14 -0
  7. data/config/cucumber.yml +8 -0
  8. data/docs/api.md +45 -16
  9. data/docs/events.md +21 -9
  10. data/docs/getting_started.md +16 -0
  11. data/docs/views.md +158 -0
  12. data/examples/borders_app.rb +236 -110
  13. data/examples/colour_support.sh +98 -0
  14. data/examples/colours_app.rb +41 -0
  15. data/examples/configuration_app.rb +11 -6
  16. data/examples/cursor_app.rb +60 -61
  17. data/examples/focus_app.rb +72 -34
  18. data/examples/hello_world.rb +13 -8
  19. data/examples/lines_app.rb +37 -28
  20. data/features/start_stop.feature +27 -0
  21. data/features/support/env.rb +14 -0
  22. data/lib/vedeu/all.rb +29 -0
  23. data/lib/vedeu/api.rb +39 -0
  24. data/lib/vedeu/application.rb +15 -7
  25. data/lib/vedeu/bindings.rb +121 -0
  26. data/lib/vedeu/buffers/all.rb +10 -0
  27. data/lib/vedeu/{repositories/models → buffers}/buffer.rb +47 -64
  28. data/lib/vedeu/buffers/display_buffer.rb +118 -0
  29. data/lib/vedeu/configuration/all.rb +6 -0
  30. data/lib/vedeu/configuration/api.rb +3 -1
  31. data/lib/vedeu/configuration/cli.rb +3 -1
  32. data/lib/vedeu/configuration/configuration.rb +23 -2
  33. data/lib/vedeu/cursor/all.rb +23 -0
  34. data/lib/vedeu/cursor/cursor.rb +116 -0
  35. data/lib/vedeu/cursor/move_cursor.rb +137 -0
  36. data/lib/vedeu/cursor/toggle_cursor.rb +53 -0
  37. data/lib/vedeu/dsl/all.rb +28 -0
  38. data/lib/vedeu/dsl/components/all.rb +7 -0
  39. data/lib/vedeu/dsl/components/border.rb +104 -0
  40. data/lib/vedeu/dsl/components/geometry.rb +153 -0
  41. data/lib/vedeu/dsl/components/keymap.rb +93 -0
  42. data/lib/vedeu/dsl/components/menu.rb +82 -0
  43. data/lib/vedeu/dsl/composition.rb +72 -0
  44. data/lib/vedeu/dsl/interface.rb +210 -0
  45. data/lib/vedeu/dsl/line.rb +135 -0
  46. data/lib/vedeu/dsl/shared/all.rb +7 -0
  47. data/lib/vedeu/dsl/shared/colour.rb +85 -0
  48. data/lib/vedeu/dsl/shared/style.rb +38 -0
  49. data/lib/vedeu/dsl/shared/text.rb +102 -0
  50. data/lib/vedeu/dsl/shared/use.rb +47 -0
  51. data/lib/vedeu/dsl/stream.rb +49 -0
  52. data/lib/vedeu/dsl/view.rb +136 -0
  53. data/lib/vedeu/events/all.rb +10 -0
  54. data/lib/vedeu/{repositories/models → events}/event.rb +97 -8
  55. data/lib/vedeu/events/trigger.rb +58 -0
  56. data/lib/vedeu/exceptions.rb +34 -0
  57. data/lib/vedeu/input/all.rb +29 -0
  58. data/lib/vedeu/input/input.rb +26 -0
  59. data/lib/vedeu/{models → input}/key.rb +21 -11
  60. data/lib/vedeu/input/keymap.rb +130 -0
  61. data/lib/vedeu/input/keys.rb +8 -0
  62. data/lib/vedeu/input/mapper.rb +112 -0
  63. data/lib/vedeu/launcher.rb +7 -4
  64. data/lib/vedeu/models/all.rb +12 -0
  65. data/lib/vedeu/models/collection.rb +71 -0
  66. data/lib/vedeu/{repositories → models}/focus.rb +63 -21
  67. data/lib/vedeu/models/geometry.rb +100 -259
  68. data/lib/vedeu/{repositories/models → models}/group.rb +16 -14
  69. data/lib/vedeu/{repositories/models → models}/menu.rb +85 -22
  70. data/lib/vedeu/models/model.rb +51 -0
  71. data/lib/vedeu/models/view/all.rb +12 -0
  72. data/lib/vedeu/models/view/char.rb +84 -0
  73. data/lib/vedeu/models/view/chars.rb +8 -0
  74. data/lib/vedeu/models/view/composition.rb +101 -0
  75. data/lib/vedeu/models/view/interface.rb +215 -0
  76. data/lib/vedeu/models/view/interfaces.rb +8 -0
  77. data/lib/vedeu/models/view/line.rb +134 -0
  78. data/lib/vedeu/models/view/lines.rb +8 -0
  79. data/lib/vedeu/models/view/stream.rb +144 -0
  80. data/lib/vedeu/models/view/streams.rb +8 -0
  81. data/lib/vedeu/output/all.rb +8 -0
  82. data/lib/vedeu/output/border.rb +387 -0
  83. data/lib/vedeu/output/compositor.rb +41 -30
  84. data/lib/vedeu/output/output.rb +6 -13
  85. data/lib/vedeu/output/viewport.rb +78 -94
  86. data/lib/vedeu/output/writer.rb +29 -0
  87. data/lib/vedeu/presentation/all.rb +9 -0
  88. data/lib/vedeu/{colours → presentation}/background.rb +1 -9
  89. data/lib/vedeu/{colours → presentation}/colour.rb +21 -8
  90. data/lib/vedeu/{colours → presentation}/foreground.rb +5 -9
  91. data/lib/vedeu/presentation/presentation.rb +91 -0
  92. data/lib/vedeu/presentation/style.rb +47 -0
  93. data/lib/vedeu/{colours → presentation}/translator.rb +11 -5
  94. data/lib/vedeu/repositories/all.rb +5 -0
  95. data/lib/vedeu/repositories/menus.rb +5 -42
  96. data/lib/vedeu/{support → repositories}/repository.rb +78 -41
  97. data/lib/vedeu/support/all.rb +22 -0
  98. data/lib/vedeu/support/bounding_area.rb +2 -1
  99. data/lib/vedeu/support/coercions.rb +18 -1
  100. data/lib/vedeu/support/console.rb +73 -0
  101. data/lib/vedeu/support/content_geometry.rb +69 -0
  102. data/lib/vedeu/support/coordinate.rb +246 -0
  103. data/lib/vedeu/support/esc.rb +29 -2
  104. data/lib/vedeu/support/log.rb +36 -2
  105. data/lib/vedeu/support/node.rb +61 -0
  106. data/lib/vedeu/support/position.rb +28 -13
  107. data/lib/vedeu/support/position_validator.rb +79 -0
  108. data/lib/vedeu/support/read.rb +65 -0
  109. data/lib/vedeu/support/refresh.rb +8 -32
  110. data/lib/vedeu/support/terminal.rb +34 -4
  111. data/lib/vedeu/support/text.rb +104 -0
  112. data/lib/vedeu/support/trace.rb +11 -23
  113. data/lib/vedeu/support/visible.rb +75 -0
  114. data/lib/vedeu/support/write.rb +85 -0
  115. data/lib/vedeu/traps.rb +18 -0
  116. data/lib/vedeu.rb +41 -101
  117. data/test/integration/dsl/compositions_test.rb +27 -0
  118. data/test/integration/dsl/interfaces_test.rb +261 -0
  119. data/test/integration/dsl/keymaps_test.rb +42 -0
  120. data/test/integration/dsl/lines_test.rb +146 -0
  121. data/test/integration/dsl/menus_test.rb +59 -0
  122. data/test/integration/dsl/streams_test.rb +129 -0
  123. data/test/integration/dsl/views_test.rb +63 -0
  124. data/test/lib/vedeu/api_test.rb +163 -0
  125. data/test/lib/vedeu/application_test.rb +19 -10
  126. data/test/lib/vedeu/bindings_test.rb +54 -0
  127. data/test/lib/vedeu/buffers/all_test.rb +11 -0
  128. data/test/lib/vedeu/buffers/buffer_test.rb +196 -0
  129. data/test/lib/vedeu/buffers/display_buffer_test.rb +58 -0
  130. data/test/lib/vedeu/configuration/api_test.rb +42 -58
  131. data/test/lib/vedeu/configuration/cli_test.rb +4 -4
  132. data/test/lib/vedeu/configuration/configuration_test.rb +11 -29
  133. data/test/lib/vedeu/cursor/all_test.rb +33 -0
  134. data/test/lib/vedeu/cursor/cursor_test.rb +85 -0
  135. data/test/lib/vedeu/cursor/move_cursor_test.rb +212 -0
  136. data/test/lib/vedeu/cursor/toggle_cursor_test.rb +63 -0
  137. data/test/lib/vedeu/dsl/components/border_test.rb +414 -0
  138. data/test/lib/vedeu/dsl/components/geometry_test.rb +231 -0
  139. data/test/lib/vedeu/dsl/components/keymap_test.rb +80 -0
  140. data/test/lib/vedeu/dsl/components/menu_test.rb +115 -0
  141. data/test/lib/vedeu/dsl/composition_test.rb +41 -0
  142. data/test/lib/vedeu/dsl/interface_test.rb +470 -0
  143. data/test/lib/vedeu/dsl/line_test.rb +60 -0
  144. data/test/lib/vedeu/dsl/shared/colour_test.rb +100 -0
  145. data/test/lib/vedeu/dsl/shared/style_test.rb +22 -0
  146. data/test/lib/vedeu/dsl/shared/text_test.rb +15 -0
  147. data/test/lib/vedeu/dsl/shared/use_test.rb +27 -0
  148. data/test/lib/vedeu/dsl/stream_test.rb +26 -0
  149. data/test/lib/vedeu/dsl/view_test.rb +73 -0
  150. data/test/lib/vedeu/events/all_test.rb +11 -0
  151. data/test/lib/vedeu/events/event_test.rb +109 -0
  152. data/test/lib/vedeu/events/trigger_test.rb +60 -0
  153. data/test/lib/vedeu/input/all_test.rb +11 -0
  154. data/test/lib/vedeu/input/input_test.rb +7 -3
  155. data/test/lib/vedeu/input/key_test.rb +72 -0
  156. data/test/lib/vedeu/input/keymap_test.rb +89 -0
  157. data/test/lib/vedeu/input/mapper_test.rb +94 -0
  158. data/test/lib/vedeu/launcher_test.rb +19 -20
  159. data/test/lib/vedeu/models/collection_test.rb +114 -0
  160. data/test/lib/vedeu/{repositories → models}/focus_test.rb +46 -13
  161. data/test/lib/vedeu/models/geometry_test.rb +35 -39
  162. data/test/lib/vedeu/models/group_test.rb +100 -0
  163. data/test/lib/vedeu/models/menu_test.rb +288 -0
  164. data/test/lib/vedeu/models/model_test.rb +31 -0
  165. data/test/lib/vedeu/models/view/char_test.rb +166 -0
  166. data/test/lib/vedeu/models/view/chars_test.rb +18 -0
  167. data/test/lib/vedeu/models/view/composition_test.rb +41 -0
  168. data/test/lib/vedeu/models/view/interface_test.rb +128 -0
  169. data/test/lib/vedeu/models/view/interfaces_test.rb +18 -0
  170. data/test/lib/vedeu/models/view/line_test.rb +214 -0
  171. data/test/lib/vedeu/models/view/lines_test.rb +18 -0
  172. data/test/lib/vedeu/models/view/stream_test.rb +106 -0
  173. data/test/lib/vedeu/models/view/streams_test.rb +18 -0
  174. data/test/lib/vedeu/output/border_test.rb +357 -0
  175. data/test/lib/vedeu/output/compositor_test.rb +61 -15
  176. data/test/lib/vedeu/output/output_test.rb +25 -84
  177. data/test/lib/vedeu/output/viewport_test.rb +171 -45
  178. data/test/lib/vedeu/output/writer_test.rb +45 -0
  179. data/test/lib/vedeu/{colours → presentation}/background_test.rb +0 -0
  180. data/test/lib/vedeu/{colours → presentation}/colour_test.rb +5 -5
  181. data/test/lib/vedeu/{colours → presentation}/foreground_test.rb +0 -0
  182. data/test/lib/vedeu/presentation/presentation_test.rb +56 -0
  183. data/test/lib/vedeu/presentation/style_test.rb +69 -0
  184. data/test/lib/vedeu/presentation/translator_test.rb +63 -0
  185. data/test/lib/vedeu/repositories/all_test.rb +7 -0
  186. data/test/lib/vedeu/repositories/menus_test.rb +3 -156
  187. data/test/lib/vedeu/repositories/repository_test.rb +271 -0
  188. data/test/lib/vedeu/support/bounding_area_test.rb +3 -3
  189. data/test/lib/vedeu/support/coercions_test.rb +39 -0
  190. data/test/lib/vedeu/support/common_test.rb +31 -16
  191. data/test/lib/vedeu/support/console_test.rb +85 -0
  192. data/test/lib/vedeu/support/content_geometry_test.rb +107 -0
  193. data/test/lib/vedeu/support/coordinate_test.rb +190 -0
  194. data/test/lib/vedeu/support/esc_test.rb +18 -0
  195. data/test/lib/vedeu/support/grid_test.rb +15 -10
  196. data/test/lib/vedeu/support/log_test.rb +3 -0
  197. data/test/lib/vedeu/support/position_test.rb +22 -2
  198. data/test/lib/vedeu/support/position_validator_test.rb +11 -0
  199. data/test/lib/vedeu/support/read_test.rb +88 -0
  200. data/test/lib/vedeu/support/refresh_test.rb +44 -12
  201. data/test/lib/vedeu/support/sentence_test.rb +6 -4
  202. data/test/lib/vedeu/support/terminal_test.rb +81 -70
  203. data/test/lib/vedeu/support/text_test.rb +93 -0
  204. data/test/lib/vedeu/support/trace_test.rb +21 -9
  205. data/test/lib/vedeu/support/visible_test.rb +148 -0
  206. data/test/lib/vedeu/support/write_test.rb +136 -0
  207. data/test/lib/vedeu/traps_test.rb +11 -0
  208. data/test/lib/vedeu_test.rb +2 -0
  209. data/test/support/helpers/all.rb +7 -0
  210. data/test/support/helpers/dsl_model_test_class.rb +25 -0
  211. data/test/support/{test_classes → helpers}/helpers.rb +0 -2
  212. data/test/support/helpers/misc.rb +15 -0
  213. data/test/support/helpers/model_test_class.rb +34 -0
  214. data/test/support/{test_classes → helpers}/presentation.rb +0 -0
  215. data/test/support/{test_classes → helpers}/repositories.rb +3 -3
  216. data/test/support/{test_modules/repository.rb → helpers/repository_test_module.rb} +5 -1
  217. data/test/test_helper.rb +19 -22
  218. data/vedeu.gemspec +11 -6
  219. metadata +322 -181
  220. data/lib/vedeu/api/api.rb +0 -239
  221. data/lib/vedeu/api/composition.rb +0 -38
  222. data/lib/vedeu/api/defined.rb +0 -52
  223. data/lib/vedeu/api/helpers.rb +0 -161
  224. data/lib/vedeu/api/interface.rb +0 -287
  225. data/lib/vedeu/api/keymap.rb +0 -75
  226. data/lib/vedeu/api/line.rb +0 -107
  227. data/lib/vedeu/api/menu.rb +0 -111
  228. data/lib/vedeu/api/stream.rb +0 -96
  229. data/lib/vedeu/models/border.rb +0 -238
  230. data/lib/vedeu/models/char.rb +0 -43
  231. data/lib/vedeu/models/composition.rb +0 -72
  232. data/lib/vedeu/models/line.rb +0 -100
  233. data/lib/vedeu/models/stream.rb +0 -130
  234. data/lib/vedeu/models/style.rb +0 -52
  235. data/lib/vedeu/repositories/buffers.rb +0 -52
  236. data/lib/vedeu/repositories/cursors.rb +0 -64
  237. data/lib/vedeu/repositories/events.rb +0 -147
  238. data/lib/vedeu/repositories/groups.rb +0 -47
  239. data/lib/vedeu/repositories/interfaces.rb +0 -78
  240. data/lib/vedeu/repositories/keymaps.rb +0 -196
  241. data/lib/vedeu/repositories/models/cursor.rb +0 -209
  242. data/lib/vedeu/repositories/models/interface.rb +0 -163
  243. data/lib/vedeu/repositories/models/keymap.rb +0 -111
  244. data/lib/vedeu/repositories/models/offset.rb +0 -91
  245. data/lib/vedeu/repositories/offsets.rb +0 -69
  246. data/lib/vedeu/support/exceptions.rb +0 -34
  247. data/lib/vedeu/support/keymap_validator.rb +0 -100
  248. data/lib/vedeu/support/model.rb +0 -14
  249. data/lib/vedeu/support/presentation.rb +0 -86
  250. data/lib/vedeu/support/registrar.rb +0 -53
  251. data/test/integration/api/api_test.rb +0 -97
  252. data/test/integration/api_dsl/dsl_api_test.rb +0 -4
  253. data/test/integration/api_dsl/dsl_composition_test.rb +0 -4
  254. data/test/integration/api_dsl/dsl_defined_test.rb +0 -4
  255. data/test/integration/api_dsl/dsl_helpers_test.rb +0 -4
  256. data/test/integration/api_dsl/dsl_interface_test.rb +0 -4
  257. data/test/integration/api_dsl/dsl_keymap.rb +0 -4
  258. data/test/integration/api_dsl/dsl_line_test.rb +0 -4
  259. data/test/integration/api_dsl/dsl_menu_test.rb +0 -4
  260. data/test/integration/api_dsl/dsl_stream_test.rb +0 -138
  261. data/test/integration/cursors_test.rb +0 -9
  262. data/test/integration/defining_interfaces_test.rb +0 -26
  263. data/test/integration/run_once_test.rb +0 -26
  264. data/test/integration/views/basic_view_test.rb +0 -807
  265. data/test/lib/vedeu/api/api_test.rb +0 -204
  266. data/test/lib/vedeu/api/composition_test.rb +0 -31
  267. data/test/lib/vedeu/api/defined_test.rb +0 -79
  268. data/test/lib/vedeu/api/helpers_test.rb +0 -111
  269. data/test/lib/vedeu/api/interface_test.rb +0 -410
  270. data/test/lib/vedeu/api/keymap_test.rb +0 -65
  271. data/test/lib/vedeu/api/line_test.rb +0 -83
  272. data/test/lib/vedeu/api/menu_test.rb +0 -85
  273. data/test/lib/vedeu/api/stream_test.rb +0 -59
  274. data/test/lib/vedeu/colours/translator_test.rb +0 -22
  275. data/test/lib/vedeu/models/border_test.rb +0 -197
  276. data/test/lib/vedeu/models/char_test.rb +0 -52
  277. data/test/lib/vedeu/models/composition_test.rb +0 -45
  278. data/test/lib/vedeu/models/key_test.rb +0 -43
  279. data/test/lib/vedeu/models/line_test.rb +0 -123
  280. data/test/lib/vedeu/models/stream_test.rb +0 -233
  281. data/test/lib/vedeu/models/style_test.rb +0 -59
  282. data/test/lib/vedeu/repositories/buffers_test.rb +0 -37
  283. data/test/lib/vedeu/repositories/cursors_test.rb +0 -62
  284. data/test/lib/vedeu/repositories/events_test.rb +0 -57
  285. data/test/lib/vedeu/repositories/groups_test.rb +0 -28
  286. data/test/lib/vedeu/repositories/interfaces_test.rb +0 -51
  287. data/test/lib/vedeu/repositories/keymaps_test.rb +0 -223
  288. data/test/lib/vedeu/repositories/models/buffer_test.rb +0 -174
  289. data/test/lib/vedeu/repositories/models/cursor_test.rb +0 -158
  290. data/test/lib/vedeu/repositories/models/event_test.rb +0 -53
  291. data/test/lib/vedeu/repositories/models/group_test.rb +0 -98
  292. data/test/lib/vedeu/repositories/models/interface_test.rb +0 -130
  293. data/test/lib/vedeu/repositories/models/keymap_test.rb +0 -27
  294. data/test/lib/vedeu/repositories/models/menu_test.rb +0 -246
  295. data/test/lib/vedeu/repositories/models/offset_test.rb +0 -128
  296. data/test/lib/vedeu/repositories/offsets_test.rb +0 -39
  297. data/test/lib/vedeu/support/keymap_validator_test.rb +0 -62
  298. data/test/lib/vedeu/support/model_test.rb +0 -23
  299. data/test/lib/vedeu/support/presentation_test.rb +0 -53
  300. data/test/lib/vedeu/support/registrar_test.rb +0 -94
  301. data/test/lib/vedeu/support/repository_test.rb +0 -208
  302. data/test/support/test_classes/all.rb +0 -5
  303. data/test/support/test_classes/coercions.rb +0 -16
  304. data/test/support/test_classes/model.rb +0 -23
  305. data/test/support/test_modules/all.rb +0 -1
@@ -1,204 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- describe API do
6
-
7
- let(:event) { mock('Event') }
8
-
9
- before { Event.stubs(:new).returns(event) }
10
-
11
- describe '.configure' do
12
- it 'raises an exception unless a block was given' do
13
- proc { Vedeu.configure }.must_raise(InvalidSyntax)
14
- end
15
- end
16
-
17
- describe '.defined' do
18
- it 'returns a reference to the API::Defined module' do
19
- Vedeu.defined.must_equal(Vedeu::API::Defined)
20
- end
21
- end
22
-
23
- describe '.focus' do
24
- it 'sets the named interface to be focussed' do
25
- Vedeu.expects(:trigger).with(:_focus_by_name_, 'plutonium')
26
-
27
- Vedeu.focus('plutonium')
28
- end
29
- end
30
-
31
- describe '.interface' do
32
- it 'creates and stores a new interface' do
33
- Vedeu::Buffers.reset
34
-
35
- Vedeu.interface('Vedeu.interface').must_be_instance_of(API::Interface)
36
- end
37
- end
38
-
39
- describe '.keypress' do
40
- before do
41
- Interfaces.reset
42
-
43
- Vedeu.interface('barium') {}
44
- end
45
-
46
- context 'when the key is registered' do
47
- before do
48
- Vedeu.keys do
49
- interface 'barium'
50
- key('j') { :j_pressed }
51
- end
52
- end
53
-
54
- it 'returns the result of proc stored for the keypress' do
55
- Vedeu.keypress('j').must_equal(:j_pressed)
56
- end
57
- end
58
-
59
- context 'when the key is not registered' do
60
- it 'returns false' do
61
- Vedeu.keypress('k').must_equal(false)
62
- end
63
- end
64
- end
65
-
66
- describe '.keys' do
67
- it 'returns an instance of API::Keymap' do
68
- Vedeu.keys do
69
- # ...
70
- end.must_be_instance_of(API::Keymap)
71
- end
72
-
73
- it 'raises an exception when the block is not provided' do
74
- proc { Vedeu.keys }.must_raise(InvalidSyntax)
75
- end
76
- end
77
-
78
- describe '.log' do
79
- it 'writes the message to the log file when debugging is enabled' do
80
- Configuration.stub(:debug?, true) do
81
- Vedeu.log('Testing debugging to log').must_equal(true)
82
- end
83
- end
84
-
85
- it 'returns nil when debugging is disabled' do
86
- Configuration.stub(:debug?, false) do
87
- Vedeu.log('some message not logged...').must_equal(nil)
88
- end
89
- end
90
-
91
- it 'write the message to the log file when the `force` argument ' \
92
- 'evaluates to true' do
93
- Configuration.stub(:debug?, false) do
94
- Vedeu.log('Testing forced debugging to log', true).must_equal(true)
95
- end
96
- end
97
- end
98
-
99
- describe '.menu' do
100
- it 'creates and stores a new menu' do
101
- Vedeu.menu('Vedeu.menu') do
102
- # ...
103
- end.must_be_instance_of(API::Menu)
104
- end
105
- end
106
-
107
- describe '.render' do
108
- it 'directly writes the view buffer to the terminal' do
109
- skip
110
- end
111
- end
112
-
113
- describe '.resize' do
114
- before do
115
- Interfaces.reset
116
- Terminal.console.stubs(:print)
117
- end
118
-
119
- it 'returns a TrueClass' do
120
- Vedeu.resize.must_be_instance_of(TrueClass)
121
- end
122
- end
123
-
124
- describe '.trigger' do
125
- it 'triggers the specifed event and returns the collection of events' \
126
- ' which this trigger triggers' do
127
- Vedeu.trigger(:vedeu_trigger_event, :event_arguments).must_equal([])
128
- end
129
- end
130
-
131
- describe '.unevent' do
132
- it 'unregister the event by name' do
133
- Vedeu.event(:calcium) { proc { |x| x } }
134
- Events.registered.must_include(:calcium)
135
- Vedeu.unevent(:calcium)
136
- Events.registered.wont_include(:calcium)
137
- end
138
- end
139
-
140
- describe '.use' do
141
- before { Vedeu::Interfaces.reset }
142
-
143
- it 'raises an exception if the interface has not been defined' do
144
- proc { Vedeu.use('unknown') }
145
- .must_raise(ModelNotFound)
146
- end
147
-
148
- it 'returns an instance of the named interface' do
149
- Vedeu.interface('aluminium')
150
-
151
- Vedeu.use('aluminium').must_be_instance_of(Vedeu::Interface)
152
- end
153
- end
154
-
155
- describe '.view' do
156
- let(:composition) {
157
- {
158
- interfaces: [{
159
- border: {},
160
- colour: {},
161
- cursor: :hide,
162
- delay: 0.0,
163
- geometry: {},
164
- group: '',
165
- lines: [],
166
- name: "some_interface",
167
- parent: {},
168
- style: '',
169
- }]
170
- }
171
- }
172
-
173
- it 'returns the view attributes for an interface (see View)' do
174
- Vedeu.view('some_interface').must_equal(composition)
175
- end
176
- end
177
-
178
- describe '.views' do
179
- it 'allows multiple views to be defined at once' do
180
- attrs = Vedeu.views do
181
- view 'view_1' do
182
- line do
183
- text '1. A line of text in view 1.'
184
- text '2. Another line of text in view 1.'
185
- end
186
- end
187
- view 'view_2' do
188
- line do
189
- text '1. A line of text in view 2.'
190
- text '2. Another line of text in view 2.'
191
- end
192
- end
193
- end
194
- attrs[:interfaces].size.must_equal(2)
195
- end
196
-
197
- it 'raises an exception if a block was not given' do
198
- proc { Vedeu.views }.must_raise(InvalidSyntax)
199
- end
200
- end
201
-
202
- end # API
203
-
204
- end # Vedeu
@@ -1,31 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- module API
6
-
7
- describe Composition do
8
-
9
- describe '.render' do
10
- it 'raises an exception when a block is not given' do
11
- proc { Vedeu.render }.must_raise(InvalidSyntax)
12
- end
13
- end
14
-
15
- describe '#view' do
16
- it 'returns a Hash' do
17
- Vedeu.view('thulium') do
18
- # ...
19
- end.must_be_instance_of(Hash)
20
- end
21
-
22
- it 'allows a single view to be defined' do
23
- skip
24
- end
25
- end
26
-
27
- end # Composition
28
-
29
- end # API
30
-
31
- end # Vedeu
@@ -1,79 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- module API
6
-
7
- describe Defined do
8
-
9
- describe '#events' do
10
- it 'returns all events currently registered' do
11
- Vedeu.event(:birthday) { :eat_too_much_cake }
12
-
13
- Defined.events.must_include(:birthday)
14
- end
15
- end
16
-
17
- describe '#groups' do
18
- before { Vedeu::Groups.reset }
19
-
20
- it 'returns no groups when none currently registered' do
21
- Defined.groups.must_equal([])
22
- end
23
-
24
- it 'returns all groups currently registered' do
25
- Vedeu.interface('hydrogen') { group 'elements' }
26
-
27
- Defined.groups.must_equal(['elements'])
28
- end
29
- end
30
-
31
- describe '#interfaces' do
32
- before { Vedeu::Interfaces.reset }
33
-
34
- it 'returns no interfaces when none currently registered' do
35
- Defined.interfaces.must_equal([])
36
- end
37
-
38
- it 'returns all interfaces currently registered' do
39
- Vedeu.interface('hydrogen') { group 'elements' }
40
-
41
- Defined.interfaces.must_equal(['hydrogen'])
42
- end
43
- end
44
-
45
- describe '#keymaps' do
46
- before { Vedeu::Keymaps.reset }
47
-
48
- it 'returns the default keymap when no others are registered' do
49
- Defined.keymaps.must_equal(['_global_keymap_'])
50
- end
51
-
52
- it 'returns all keymaps currently registered' do
53
- Vedeu.keys('flerovium') do
54
- key('u') { :some_action }
55
- end
56
-
57
- Defined.keymaps.must_equal(['_global_keymap_', 'flerovium'])
58
- end
59
- end
60
-
61
- describe '#menus' do
62
- before { Vedeu::Menus.reset }
63
-
64
- it 'returns no menus when none currently registered' do
65
- Defined.menus.must_equal([])
66
- end
67
-
68
- it 'returns all menus currently registered' do
69
- Vedeu.menu('seaborgium') { items [:promethium, :astatine, :niobium] }
70
-
71
- Defined.menus.must_equal(['seaborgium'])
72
- end
73
- end
74
-
75
- end # Defined
76
-
77
- end # API
78
-
79
- end # Vedeu
@@ -1,111 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- module API
6
-
7
- describe Helpers do
8
-
9
- describe '#background' do
10
- it { return_type_for(HelpersTestClass.new.background('#00ff00'), Hash) }
11
-
12
- it 'returns the value assigned' do
13
- HelpersTestClass.new.background('#00ff00').must_equal({ background: '#00ff00' })
14
- end
15
-
16
- it 'raises an exception if the value is not defined' do
17
- proc { HelpersTestClass.new.background('') }.must_raise(InvalidSyntax)
18
- end
19
- end
20
-
21
- describe '#foreground' do
22
- it { return_type_for(HelpersTestClass.new.foreground('#00ff00'), Hash) }
23
-
24
- it 'returns the value assigned' do
25
- HelpersTestClass.new.foreground('#00ff00').must_equal({ foreground: '#00ff00' })
26
- end
27
-
28
- it 'raises an exception if the value is not defined' do
29
- proc { HelpersTestClass.new.foreground('') }.must_raise(InvalidSyntax)
30
- end
31
- end
32
-
33
- describe '#colour' do
34
- it 'raises an exception if neither a :foreground or :background ' \
35
- 'attribute exists' do
36
- proc { HelpersTestClass.new.colour({}) }.must_raise(InvalidSyntax)
37
- end
38
-
39
- it 'sets the attribute when a :foreground is given' do
40
- HelpersTestClass.new.colour({ foreground: '#ff0000' })
41
- .must_equal({ foreground: '#ff0000' })
42
- end
43
-
44
- it 'sets the attribute when a :background is given' do
45
- HelpersTestClass.new.colour({ background: '#ff0000' })
46
- .must_equal({ background: '#ff0000' })
47
- end
48
- end
49
-
50
- describe '#style' do
51
- it 'return an empty collection with no arguments' do
52
- HelpersTestClass.new.style.must_equal([])
53
- end
54
-
55
- it 'return a collection containing the style' do
56
- HelpersTestClass.new.style('normal').must_equal(['normal'])
57
- end
58
-
59
- it 'return a collection containing the styles' do
60
- HelpersTestClass.new.style(['bold', 'underline'])
61
- .must_equal(['bold', 'underline'])
62
- end
63
-
64
- it 'returns Stream attributes with an empty block' do
65
- HelpersTestClass.new.style do
66
- #...
67
- end.must_equal(
68
- [{ colour: {}, style: [], text: '', width: nil, align: :left, parent: nil, }]
69
- )
70
- end
71
-
72
- it 'returns Stream attributes with a block' do
73
- HelpersTestClass.new.style do
74
- style 'italic'
75
- end.must_equal(
76
- [
77
- {
78
- colour: {},
79
- style: ['italic'],
80
- text: '',
81
- width: nil,
82
- align: :left,
83
- parent: nil,
84
- }
85
- ]
86
- )
87
- end
88
-
89
- it 'returns Stream attributes with a block' do
90
- HelpersTestClass.new.style do
91
- style ['italic', 'blink']
92
- end.must_equal(
93
- [
94
- {
95
- colour: {},
96
- style: ['italic', 'blink'],
97
- text: '',
98
- width: nil,
99
- align: :left,
100
- parent: nil,
101
- }
102
- ]
103
- )
104
- end
105
- end
106
-
107
- end # Helpers
108
-
109
- end # API
110
-
111
- end # Vedeu