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
@@ -0,0 +1,146 @@
1
+ require 'test_helper'
2
+
3
+ describe 'Lines' do
4
+
5
+ describe '#background' do
6
+ subject {
7
+ Vedeu.interface 'lines' do
8
+ lines do
9
+ background ''
10
+ end
11
+ end
12
+ }
13
+
14
+ #it { subject.must_be_instance_of(Vedeu::Line) }
15
+
16
+ # it 'allows the use of background within lines' do
17
+ # skip
18
+ # end
19
+
20
+ context 'when no value is provided' do
21
+
22
+ end
23
+ end
24
+
25
+ describe '#colour' do
26
+ subject {
27
+ Vedeu.interface 'lines' do
28
+ lines do
29
+ colour ''
30
+ end
31
+ end
32
+ }
33
+
34
+ #it { subject.must_be_instance_of(Vedeu::Line) }
35
+
36
+ # it 'allows the use of colour within lines' do
37
+ # skip
38
+ # end
39
+
40
+ context 'when no value is provided' do
41
+
42
+ end
43
+ end
44
+
45
+ describe '#foreground' do
46
+ subject {
47
+ Vedeu.interface 'lines' do
48
+ lines do
49
+ foreground ''
50
+ end
51
+ end
52
+ }
53
+
54
+ #it { subject.must_be_instance_of(Vedeu::Line) }
55
+
56
+ # it 'allows the use of foreground within lines' do
57
+ # skip
58
+ # end
59
+
60
+ context 'when no value is provided' do
61
+
62
+ end
63
+ end
64
+
65
+ describe '#line' do
66
+ subject {
67
+ Vedeu.interface 'lines' do
68
+ lines do
69
+ line ''
70
+ end
71
+ end
72
+ }
73
+
74
+ #it { subject.must_be_instance_of(Vedeu::Line) }
75
+
76
+ # it 'allows the use of line within lines' do
77
+ # skip
78
+ # end
79
+
80
+ context 'when no value is provided' do
81
+
82
+ end
83
+ end
84
+
85
+ describe '#stream' do
86
+ subject {
87
+ Vedeu.interface 'lines' do
88
+ lines do
89
+ stream ''
90
+ end
91
+ end
92
+ }
93
+
94
+ #it { subject.must_be_instance_of(Vedeu::Line) }
95
+
96
+ # it 'allows the use of stream within lines' do
97
+ # skip
98
+ # end
99
+
100
+ context 'when no value is provided' do
101
+
102
+ end
103
+ end
104
+
105
+ describe '#streams' do
106
+ subject {
107
+ Vedeu.interface 'lines' do
108
+ lines do
109
+ streams do
110
+ end
111
+ end
112
+ end
113
+ }
114
+
115
+ #it { subject.must_be_instance_of(Vedeu::Line) }
116
+
117
+ # it 'allows the use of streams within lines' do
118
+ # skip
119
+ # end
120
+
121
+ context 'when no value is provided' do
122
+
123
+ end
124
+ end
125
+
126
+ describe '#style' do
127
+ subject {
128
+ Vedeu.interface 'lines' do
129
+ lines do
130
+ style ''
131
+ end
132
+ end
133
+ }
134
+
135
+ #it { subject.must_be_instance_of(Vedeu::Line) }
136
+
137
+ # it 'allows the use of style within lines' do
138
+ # skip
139
+ # end
140
+
141
+ context 'when no value is provided' do
142
+
143
+ end
144
+ end
145
+
146
+ end
@@ -0,0 +1,59 @@
1
+ require 'test_helper'
2
+
3
+ describe 'Menus' do
4
+
5
+ describe '#item' do
6
+ subject {
7
+ Vedeu.menu 'menus' do
8
+ item 'hydrogen'
9
+ end
10
+ }
11
+
12
+ it { subject.must_be_instance_of(Vedeu::Menu) }
13
+
14
+ it 'allows the use of item within Vedeu.menu' do
15
+ subject.collection.must_equal(['hydrogen'])
16
+ end
17
+
18
+ context 'when no value is provided' do
19
+
20
+ end
21
+ end
22
+
23
+ describe '#items' do
24
+ subject {
25
+ Vedeu.menu 'menus' do
26
+ items ['lithium', 'beryllium']
27
+ end
28
+ }
29
+
30
+ it { subject.must_be_instance_of(Vedeu::Menu) }
31
+
32
+ it 'allows the use of item within Vedeu.menu' do
33
+ subject.collection.must_equal(['lithium', 'beryllium'])
34
+ end
35
+
36
+ context 'when no value is provided' do
37
+
38
+ end
39
+ end
40
+
41
+ describe '#name' do
42
+ subject {
43
+ Vedeu.menu 'menus' do
44
+ name 'elements'
45
+ end
46
+ }
47
+
48
+ it { subject.must_be_instance_of(Vedeu::Menu) }
49
+
50
+ it 'allows the use of name within Vedeu.menu' do
51
+ subject.name.must_equal('elements')
52
+ end
53
+
54
+ context 'when no value is provided' do
55
+
56
+ end
57
+ end
58
+
59
+ end
@@ -0,0 +1,129 @@
1
+ require 'test_helper'
2
+
3
+ describe 'Streams' do
4
+
5
+ describe '#align' do
6
+ subject {
7
+ Vedeu.interface 'streams' do
8
+ lines do
9
+ streams do
10
+ align 'Some text...'
11
+ end
12
+ end
13
+ end
14
+ }
15
+
16
+ # it 'allows the use of align within stream(s)' do
17
+ # skip
18
+ # subject.must_equal('Some text')
19
+ # end
20
+
21
+ context 'when no value is provided' do
22
+
23
+ end
24
+ end
25
+
26
+ describe '#background' do
27
+ subject {
28
+ Vedeu.interface 'streams' do
29
+ lines do
30
+ streams do
31
+ background ''
32
+ end
33
+ end
34
+ end
35
+ }
36
+
37
+ # it 'allows the use of background within stream(s)' do
38
+ # skip
39
+ # end
40
+
41
+ context 'when no value is provided' do
42
+
43
+ end
44
+ end
45
+
46
+ describe '#colour' do
47
+ subject {
48
+ Vedeu.interface 'streams' do
49
+ lines do
50
+ streams do
51
+ colour ''
52
+ end
53
+ end
54
+ end
55
+ }
56
+
57
+ # it 'allows the use of colour within stream(s)' do
58
+ # skip
59
+ # end
60
+
61
+ context 'when no value is provided' do
62
+
63
+ end
64
+ end
65
+
66
+ describe '#foreground' do
67
+ subject {
68
+ Vedeu.interface 'streams' do
69
+ lines do
70
+ streams do
71
+ foreground ''
72
+ end
73
+ end
74
+ end
75
+ }
76
+
77
+ # it 'allows the use of foreground within stream(s)' do
78
+ # skip
79
+ # end
80
+
81
+ context 'when no value is provided' do
82
+
83
+ end
84
+ end
85
+
86
+ describe '#style' do
87
+ let(:value) { '' }
88
+
89
+ subject {
90
+ Vedeu.interface 'lines' do
91
+ lines do
92
+ streams do
93
+ style value
94
+ end
95
+ end
96
+ end
97
+ }
98
+
99
+ # it 'allows the use of style within stream(s)' do
100
+ # skip
101
+ # end
102
+
103
+ context 'when no value is provided' do
104
+ let(:value) {}
105
+ end
106
+ end
107
+
108
+ describe '#text' do
109
+ subject {
110
+ Vedeu.interface 'streams' do
111
+ lines do
112
+ streams do
113
+ text 'Some text...'
114
+ end
115
+ end
116
+ end
117
+ }
118
+
119
+ # it 'allows the use of text within stream(s)' do
120
+ # skip
121
+ # subject.must_equal('Some text...')
122
+ # end
123
+
124
+ context 'when no value is provided' do
125
+
126
+ end
127
+ end
128
+
129
+ end
@@ -0,0 +1,63 @@
1
+ require 'test_helper'
2
+
3
+ describe 'Views' do
4
+
5
+ describe '.interface' do
6
+ subject {
7
+ Vedeu.interface 'keymaps' do
8
+ # ...
9
+ end
10
+ }
11
+
12
+ #it { subject.must_be_instance_of(Vedeu::Composition) }
13
+
14
+ # it 'allows the use of ... within Vedeu.interface' do
15
+ # skip
16
+ # end
17
+
18
+ context 'when no value is provided' do
19
+
20
+ end
21
+ end
22
+
23
+ describe '.renders' do
24
+ subject {
25
+ Vedeu.renders do
26
+ # ...
27
+ end
28
+ }
29
+
30
+ #it { subject.must_be_instance_of(Vedeu::Composition) }
31
+
32
+ # it 'allows the use of ... within Vedeu.renders' do
33
+ # skip
34
+ # end
35
+
36
+ context 'when no block is given' do
37
+ subject { Vedeu.renders }
38
+
39
+ it { proc { subject }.must_raise(Vedeu::InvalidSyntax) }
40
+ end
41
+ end
42
+
43
+ describe '.views' do
44
+ subject {
45
+ Vedeu.views do
46
+ # ...
47
+ end
48
+ }
49
+
50
+ #it { subject.must_be_instance_of(Vedeu::Composition) }
51
+
52
+ # it 'allows the use of ... within Vedeu.views' do
53
+ # skip
54
+ # end
55
+
56
+ context 'when no block is given' do
57
+ subject { Vedeu.views }
58
+
59
+ it { proc { subject }.must_raise(Vedeu::InvalidSyntax) }
60
+ end
61
+ end
62
+
63
+ end
@@ -0,0 +1,163 @@
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 '.focus' do
12
+ # it 'sets the named interface to be focussed' do
13
+ # Interface.build({ name: 'plutonium' }).store
14
+
15
+ # Vedeu.expects(:trigger).with(:_focus_by_name_, 'plutonium')
16
+
17
+ # Vedeu.focus('plutonium')
18
+ # end
19
+
20
+ # context 'when the interface is not registered' do
21
+ # it { proc { Vedeu.focus('plutonium') }.must_raise(ModelNotFound) }
22
+ # end
23
+ # end
24
+
25
+
26
+
27
+ # describe '.keypress' do
28
+ # before do
29
+ # Interfaces.reset
30
+
31
+ # Vedeu.interface('barium') {}
32
+ # end
33
+
34
+ # context 'when the key is registered' do
35
+ # before do
36
+ # Vedeu.keys do
37
+ # interface 'barium'
38
+ # key('j') { :j_pressed }
39
+ # end
40
+ # end
41
+
42
+ # it 'returns the result of proc stored for the keypress' do
43
+ # Vedeu.keypress('j').must_equal(:j_pressed)
44
+ # end
45
+ # end
46
+
47
+ # context 'when the key is not registered' do
48
+ # it 'returns false' do
49
+ # Vedeu.keypress('k').must_equal(false)
50
+ # end
51
+ # end
52
+ # end
53
+
54
+ # describe '.keys' do
55
+ # context 'when a block was not given' do
56
+ # subject { Vedeu.keys }
57
+
58
+ # it { proc { subject }.must_raise(InvalidSyntax) }
59
+ # end
60
+
61
+ # context 'when a block was given' do
62
+ # subject { Vedeu.keys { :some_dsl_methods } }
63
+
64
+ # it { subject.must_be_instance_of(Vedeu::Keymap) }
65
+ # end
66
+ # end
67
+
68
+ describe '.log' do
69
+ it 'writes the message to the log file when debugging is enabled' do
70
+ Configuration.stub(:debug?, true) do
71
+ Vedeu.log('Testing debugging to log').must_equal(true)
72
+ end
73
+ end
74
+
75
+ it 'returns nil when debugging is disabled' do
76
+ Configuration.stub(:debug?, false) do
77
+ Vedeu.log('some message not logged...').must_equal(nil)
78
+ end
79
+ end
80
+
81
+ it 'write the message to the log file when the `force` argument ' \
82
+ 'evaluates to true' do
83
+ Configuration.stub(:debug?, false) do
84
+ Vedeu.log('Testing forced debugging to log', true).must_equal(true)
85
+ end
86
+ end
87
+ end
88
+
89
+ describe '.menu' do
90
+ it 'creates and stores a new menu' do
91
+ Vedeu.menu('Vedeu.menu') do
92
+ # ...
93
+ end.must_be_instance_of(Vedeu::Menu)
94
+ end
95
+ end
96
+
97
+ describe '.menus' do
98
+ it 'accesses the menus repository' do
99
+ Vedeu.menus.must_be_instance_of(Vedeu::Menus)
100
+ end
101
+ end
102
+
103
+ describe '.resize' do
104
+ before do
105
+ Vedeu.interfaces.reset
106
+ Terminal.console.stubs(:print)
107
+ end
108
+
109
+ it 'returns a TrueClass' do
110
+ Vedeu.resize.must_be_instance_of(TrueClass)
111
+ end
112
+ end
113
+
114
+ describe '.trigger' do
115
+ it 'triggers the specifed event and returns the collection of events' \
116
+ ' which this trigger triggers' do
117
+ Vedeu.trigger(:vedeu_trigger_event, :event_arguments).must_equal([])
118
+ end
119
+ end
120
+
121
+ # describe '.unbind' do
122
+ # it 'unregister the event by name' do
123
+ # Vedeu.bind(:calcium) { proc { |x| x } }
124
+ # Vedeu.events.registered.must_include(:calcium)
125
+
126
+ # Vedeu.unbind(:calcium)
127
+ # Vedeu.events.registered.wont_include(:calcium)
128
+ # end
129
+ # end
130
+
131
+ # describe '.view' do
132
+ # subject { Vedeu.view('holmium') }
133
+
134
+ # it { subject.must_be_instance_of(Hash) }
135
+ # end
136
+
137
+ # describe '.views' do
138
+ # it 'allows multiple views to be defined at once' do
139
+ # attrs = Vedeu.views do
140
+ # view 'view_1' do
141
+ # lines do
142
+ # text '1. A line of text in view 1.'
143
+ # text '2. Another line of text in view 1.'
144
+ # end
145
+ # end
146
+ # view 'view_2' do
147
+ # lines do
148
+ # text '1. A line of text in view 2.'
149
+ # text '2. Another line of text in view 2.'
150
+ # end
151
+ # end
152
+ # end
153
+ # attrs[:interfaces].size.must_equal(2)
154
+ # end
155
+
156
+ # context 'when a block was not given' do
157
+ # it { proc { Vedeu.views }.must_raise(InvalidSyntax) }
158
+ # end
159
+ # end
160
+
161
+ end # API
162
+
163
+ end # Vedeu
@@ -4,30 +4,39 @@ module Vedeu
4
4
 
5
5
  describe Application do
6
6
 
7
- let(:described) { Application.new }
7
+ let(:described) { Vedeu::Application }
8
+ let(:instance) { described.new(configuration) }
9
+ let(:configuration) { }
8
10
 
9
11
  before { Terminal.stubs(:open).returns(['']) }
10
12
 
13
+ describe '#initialize' do
14
+ subject { instance }
15
+
16
+ it { subject.must_be_instance_of(described) }
17
+ it { subject.instance_variable_get('@configuration').must_equal(configuration) }
18
+ end
19
+
11
20
  describe '.start' do
12
- it { return_type_for(Application.start, Array) }
21
+ subject { described.start(configuration) }
22
+
23
+ it { subject.must_be_instance_of(Array) }
13
24
 
14
25
  context 'alias method: .restart' do
15
- it { return_type_for(Application.restart, Array) }
26
+ it { subject.must_be_instance_of(Array) }
16
27
  end
17
28
  end
18
29
 
19
30
  describe '.stop' do
20
- it 'raises an exception' do
21
- proc { Application.stop }.must_raise(StopIteration)
22
- end
23
- end
31
+ subject { described.stop }
24
32
 
25
- describe '#initialize' do
26
- it { return_type_for(described, Application) }
33
+ it { proc { subject }.must_raise(StopIteration) }
27
34
  end
28
35
 
29
36
  describe '#start' do
30
- it { return_type_for(described.start, Array) }
37
+ subject { instance.start }
38
+
39
+ it { subject.must_be_instance_of(Array) }
31
40
  end
32
41
 
33
42
  end # Application
@@ -0,0 +1,54 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ describe Bindings do
6
+
7
+ context 'the system events needed by Vedeu to run are defined' do
8
+ it { Vedeu.events.registered?(:_clear_).must_equal(true) }
9
+ it { Vedeu.events.registered?(:_exit_).must_equal(true) }
10
+ it { Vedeu.events.registered?(:_initialize_).must_equal(true) }
11
+ it { Vedeu.events.registered?(:_keypress_).must_equal(true) }
12
+ it { Vedeu.events.registered?(:_log_).must_equal(true) }
13
+ it { Vedeu.events.registered?(:_mode_switch_).must_equal(true) }
14
+ it { Vedeu.events.registered?(:_resize_).must_equal(true) }
15
+ end
16
+
17
+ context 'the cursor specific events are defined' do
18
+ it { Vedeu.events.registered?(:_cursor_hide_).must_equal(true) }
19
+ it { Vedeu.events.registered?(:_cursor_show_).must_equal(true) }
20
+ it { Vedeu.events.registered?(:_cursor_hide_by_name_).must_equal(true) }
21
+ it { Vedeu.events.registered?(:_cursor_show_by_name_).must_equal(true) }
22
+ it { Vedeu.events.registered?(:_cursor_down_).must_equal(true) }
23
+ it { Vedeu.events.registered?(:_cursor_left_).must_equal(true) }
24
+ it { Vedeu.events.registered?(:_cursor_right_).must_equal(true) }
25
+ it { Vedeu.events.registered?(:_cursor_up_).must_equal(true) }
26
+ it { Vedeu.events.registered?(:_cursor_origin_).must_equal(true) }
27
+ end
28
+
29
+ context 'the focus specific events are defined' do
30
+ it { Vedeu.events.registered?(:_focus_by_name_).must_equal(true) }
31
+ it { Vedeu.events.registered?(:_focus_next_).must_equal(true) }
32
+ it { Vedeu.events.registered?(:_focus_prev_).must_equal(true) }
33
+ end
34
+
35
+ context 'the menu specific events are defined' do
36
+ it { Vedeu.events.registered?(:_menu_bottom_).must_equal(true) }
37
+ it { Vedeu.events.registered?(:_menu_current_).must_equal(true) }
38
+ it { Vedeu.events.registered?(:_menu_deselect_).must_equal(true) }
39
+ it { Vedeu.events.registered?(:_menu_items_).must_equal(true) }
40
+ it { Vedeu.events.registered?(:_menu_next_).must_equal(true) }
41
+ it { Vedeu.events.registered?(:_menu_prev_).must_equal(true) }
42
+ it { Vedeu.events.registered?(:_menu_selected_).must_equal(true) }
43
+ it { Vedeu.events.registered?(:_menu_select_).must_equal(true) }
44
+ it { Vedeu.events.registered?(:_menu_top_).must_equal(true) }
45
+ it { Vedeu.events.registered?(:_menu_view_).must_equal(true) }
46
+ end
47
+
48
+ context 'the refresh event for all registered interfaces is defined' do
49
+ it { Vedeu.events.registered?(:_refresh_).must_equal(true) }
50
+ end
51
+
52
+ end # Bindings
53
+
54
+ end # Vedeu
@@ -0,0 +1,11 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ describe '.buffers' do
6
+ subject { Vedeu.buffers }
7
+
8
+ it { subject.must_be_instance_of(Vedeu::Repository) }
9
+ end
10
+
11
+ end # Vedeu