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,410 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- module API
6
-
7
- describe Interface do
8
-
9
- before { Interfaces.reset }
10
-
11
- describe '#define' do
12
- interface = Interface.new({ name: 'widget' })
13
-
14
- it 'creates and stores a new interface' do
15
- interface.define.must_be_instance_of(API::Interface)
16
- end
17
-
18
- it 'allows the setting of colours' do
19
- Interface.build do
20
- colour foreground: '#aadd00', background: '#222222'
21
- end.must_equal(
22
- {
23
- border: {},
24
- colour: {
25
- foreground: '#aadd00',
26
- background: '#222222'
27
- },
28
- cursor: :hide,
29
- delay: 0.0,
30
- geometry: {},
31
- group: '',
32
- lines: [],
33
- name: '',
34
- parent: nil,
35
- style: '',
36
- }
37
- )
38
- end
39
-
40
- it 'allows the setting of styles' do
41
- Interface.build do
42
- style 'underline'
43
- end.must_equal(
44
- {
45
- border: {},
46
- colour: {},
47
- cursor: :hide,
48
- delay: 0.0,
49
- geometry: {},
50
- group: '',
51
- lines: [],
52
- name: '',
53
- parent: nil,
54
- style: "underline",
55
- }
56
- )
57
- end
58
-
59
- it 'allows the use of other interfaces for attributes like geometry' do
60
- IO.console.stub(:winsize, [25, 40]) do
61
- interface = Vedeu.interface 'my_interface' do
62
- x 5
63
- y 5
64
- width 5
65
- height 5
66
- end
67
- Interface.build do
68
- name 'my_other_interface'
69
- y use('my_interface').south
70
- end.must_equal({
71
- border: {},
72
- colour: {},
73
- cursor: :hide,
74
- delay: 0.0,
75
- geometry: {
76
- y: 11
77
- },
78
- group: '',
79
- lines: [],
80
- name: "my_other_interface",
81
- parent: nil,
82
- style: '',
83
- })
84
- end
85
- end
86
-
87
- it 'allows the setting of a delay for events triggered for this ' \
88
- 'interface' do
89
- Interface.build do
90
- delay 1.0
91
- end.must_equal(
92
- {
93
- border: {},
94
- colour: {},
95
- cursor: :hide,
96
- delay: 1.0,
97
- geometry: {},
98
- group: '',
99
- lines: [],
100
- name: '',
101
- parent: nil,
102
- style: '',
103
- })
104
- end
105
-
106
- it 'allows the interface to be part of a group- useful for creating ' \
107
- 'separate views' do
108
- Interface.build do
109
- group 'my_group'
110
- end.must_equal(
111
- {
112
- border: {},
113
- colour: {},
114
- cursor: :hide,
115
- delay: 0.0,
116
- geometry: {},
117
- group: "my_group",
118
- lines: [],
119
- name: '',
120
- parent: nil,
121
- style: '',
122
- }
123
- )
124
- end
125
- end
126
-
127
- describe '#centred' do
128
- it 'returns false if the value is false or nil' do
129
- API::Interface.new.centred(false).must_equal(false)
130
- end
131
-
132
- it 'returns true' do
133
- API::Interface.new.centred.must_equal(true)
134
- end
135
- end
136
-
137
- describe '#cursor' do
138
- it 'returns :hide if the value is false or nil' do
139
- API::Interface.new.cursor(false).must_equal(:hide)
140
- end
141
-
142
- it 'returns :hide if the value is false or nil' do
143
- Vedeu.interface 'cobalt' do
144
- cursor false
145
- end
146
-
147
- Vedeu.use('cobalt').attributes[:cursor].must_equal(:hide)
148
- end
149
-
150
- it 'returns :show if any other value' do
151
- API::Interface.new.cursor.must_equal(:show)
152
- end
153
-
154
- it 'returns :show if any other value' do
155
- Vedeu.interface 'cobalt' do
156
- cursor true
157
- end
158
-
159
- Vedeu.use('cobalt').attributes[:cursor].must_equal(:show)
160
- end
161
- end
162
-
163
- describe '#delay' do
164
- it 'sets the delay attribute' do
165
- Vedeu.interface 'cobalt' do
166
- delay 0.25
167
- end
168
-
169
- Vedeu.use('cobalt').attributes[:delay].must_equal(0.25)
170
- end
171
- end
172
-
173
- describe '#focus!' do
174
- it 'returns true' do
175
- API::Interface.new({ name: 'curium' }).focus!.must_equal(true)
176
- end
177
-
178
- it 'sets the interface as current' do
179
- Vedeu.interface('curium') { focus! }
180
-
181
- Focus.current.must_equal('curium')
182
- end
183
-
184
- it 'multiple calls will set the last to being current' do
185
- Vedeu.interface('curium') { focus! }
186
- Vedeu.interface('iodine') {}
187
- Vedeu.interface('dysprosium') { focus! }
188
-
189
- Focus.current.must_equal('dysprosium')
190
- end
191
-
192
- it 'no calls will leave the first interface defined as being current' do
193
- Vedeu.interface('curium') {}
194
- Vedeu.interface('dysprosium') {}
195
-
196
- Focus.current.must_equal('curium')
197
- end
198
- end
199
-
200
- describe '#group' do
201
- it 'sets the group attribute' do
202
- Vedeu.interface 'iron' do
203
- group 'elements'
204
- end
205
-
206
- Vedeu.use('iron').attributes[:group].must_equal('elements')
207
- end
208
- end
209
-
210
- describe '#height' do
211
- it 'sets the attribute to the value' do
212
- Vedeu.interface 'iron' do
213
- height 6
214
- end
215
-
216
- Vedeu.use('iron').attributes[:geometry][:height].must_equal(6)
217
- end
218
- end
219
-
220
- describe '#keys' do
221
- before do
222
- Keymaps.reset
223
-
224
- Vedeu.interface 'iron' do
225
- keys do
226
- key('k') { :k_pressed }
227
- end
228
- end
229
- end
230
-
231
- it 'defines a keymap for the interface' do
232
- Keymaps.interface_key?('k').must_equal(true)
233
- end
234
-
235
- it 'defines a keymap for the interface' do
236
- Keymaps.interface_keys('iron').must_equal(['k'])
237
- end
238
-
239
- context 'when the block is not given' do
240
- it 'raises an exception' do
241
- proc { Vedeu.interface('iron') { keys } }.must_raise(InvalidSyntax)
242
- end
243
- end
244
- end
245
-
246
- describe '#line' do
247
- it 'adds a blank line with no arguments' do
248
- interface = Vedeu.interface 'carbon' do
249
- line
250
- end
251
- interface.must_be_instance_of(API::Interface)
252
- interface.attributes.must_equal(
253
- {
254
- border: {},
255
- colour: {},
256
- cursor: :hide,
257
- delay: 0.0,
258
- geometry: {},
259
- group: '',
260
- lines: [
261
- {
262
- colour: {},
263
- parent: interface.view_attributes,
264
- streams: {
265
- text: ''
266
- },
267
- style: [],
268
- }
269
- ],
270
- name: 'carbon',
271
- parent: nil,
272
- style: '',
273
- }
274
- )
275
- end
276
-
277
- it 'adds a line directly with a value and no block' do
278
- interface = Vedeu.interface 'carbon' do
279
- line 'This is some text...'
280
- end
281
- interface.must_be_instance_of(API::Interface)
282
- interface.attributes.must_equal(
283
- {
284
- border: {},
285
- colour: {},
286
- cursor: :hide,
287
- delay: 0.0,
288
- geometry: {},
289
- group: '',
290
- lines: [
291
- {
292
- colour: {},
293
- parent: interface.view_attributes,
294
- streams: {
295
- text: "This is some text..."
296
- },
297
- style: [],
298
- }
299
- ],
300
- name: 'carbon',
301
- parent: nil,
302
- style: '',
303
- }
304
- )
305
- end
306
-
307
- it 'allows the addition of more attributes with a block' do
308
- interface = Vedeu.interface 'silicon' do
309
- line do
310
- text 'This is different text...'
311
- end
312
- end
313
- interface.must_be_instance_of(API::Interface)
314
- interface.attributes.must_equal(
315
- {
316
- border: {},
317
- colour: {},
318
- cursor: :hide,
319
- delay: 0.0,
320
- geometry: {},
321
- group: '',
322
- lines: [
323
- {
324
- colour: {},
325
- parent: interface.view_attributes,
326
- streams: [
327
- {
328
- text: "This is different text..."
329
- }
330
- ],
331
- style: [],
332
- }
333
- ],
334
- name: "silicon",
335
- parent: nil,
336
- style: '',
337
- }
338
- )
339
- end
340
- end
341
-
342
- describe '#name' do
343
- it 'sets the name attribute' do
344
- Vedeu.interface do
345
- name 'nickel'
346
- end
347
-
348
- Vedeu.use('nickel').attributes[:name].must_equal('nickel')
349
- end
350
- end
351
-
352
- describe '#use' do
353
- it 'returns the interface by name' do
354
- interface = Vedeu.interface('tungsten') {}
355
-
356
- Interface.new.use('tungsten').must_be_instance_of(Vedeu::Interface)
357
- end
358
- end
359
-
360
- describe '#width' do
361
- it 'sets the attribute to the value' do
362
- Vedeu.interface 'iron' do
363
- width 25
364
- end
365
-
366
- Vedeu.use('iron').attributes[:geometry][:width].must_equal(25)
367
- end
368
- end
369
-
370
- describe '#x' do
371
- it 'sets the attribute to the block if a block is given' do
372
- Vedeu.interface 'iron' do
373
- x { 9 }
374
- end
375
-
376
- Vedeu.use('iron').geometry.x.must_equal(9)
377
- end
378
-
379
- it 'sets the attribute to the value if a block is not given' do
380
- Vedeu.interface 'iron' do
381
- x 7
382
- end
383
-
384
- Vedeu.use('iron').attributes[:geometry][:x].must_equal(7)
385
- end
386
- end
387
-
388
- describe '#y' do
389
- it 'sets the attribute to the block if a block is given' do
390
- Vedeu.interface 'iron' do
391
- y { 6 }
392
- end
393
-
394
- Vedeu.use('iron').geometry.y.must_equal(6)
395
- end
396
-
397
- it 'sets the attribute to the value if a block is not given' do
398
- Vedeu.interface 'iron' do
399
- y 4
400
- end
401
-
402
- Vedeu.use('iron').attributes[:geometry][:y].must_equal(4)
403
- end
404
- end
405
-
406
- end # Interface
407
-
408
- end # API
409
-
410
- end # Vedeu
@@ -1,65 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- module API
6
-
7
- describe Keymap do
8
-
9
- describe '#key' do
10
- before { Vedeu::Keymaps.reset }
11
-
12
- it 'raises an exception when a block is not given' do
13
- proc {
14
- Vedeu.keys do
15
- key 'q'
16
- end
17
- }.must_raise(InvalidSyntax)
18
- end
19
-
20
- it 'raises an exception when a key is not given' do
21
- proc {
22
- Vedeu.keys do
23
- key('') { :some_action }
24
- end
25
- }.must_raise(InvalidSyntax)
26
- end
27
-
28
- it 'returns the instance of API::Keymap' do
29
- Vedeu.keys do
30
- key('f') { :some_action }
31
- end.must_be_instance_of(API::Keymap)
32
- end
33
-
34
- it 'returns a collection of the keypresses' do
35
- Keymap.new.key('v', 'd', 'u') do
36
- :some_action
37
- end.must_equal(['v', 'd', 'u'])
38
- end
39
- end
40
-
41
- describe '#interface' do
42
- it 'returns the instance of API::Keymap' do
43
- Vedeu.keys do
44
- key('d') { :some_action }
45
- interface 'neodymium'
46
- end.must_be_instance_of(API::Keymap)
47
- end
48
-
49
- it 'returns the instance of API::Keymap' do
50
- Vedeu.keys do
51
- key('e') { :some_action }
52
- interface ['neodymium', 'californium']
53
- end.must_be_instance_of(API::Keymap)
54
- end
55
-
56
- it 'returns a collection of the interfaces' do
57
- Keymap.new.interface('americium').must_equal(['americium'])
58
- end
59
- end
60
-
61
- end # Keymap
62
-
63
- end # API
64
-
65
- end # Vedeu
@@ -1,83 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- module API
6
-
7
- describe Line do
8
-
9
- describe '#stream' do
10
- it 'returns the value assigned' do
11
- line = Line.new
12
- attrs = line.stream do
13
- text 'Some text...'
14
- end
15
-
16
- attrs.must_equal(
17
- [
18
- {
19
- colour: {},
20
- style: [],
21
- text: "Some text...",
22
- width: nil,
23
- align: :left,
24
- parent: line.view_attributes,
25
- }
26
- ]
27
- )
28
- end
29
-
30
- it 'raises an exception if a block was not given' do
31
- proc {
32
- Vedeu.view 'carbon' do
33
- line do
34
- stream
35
- end
36
- end
37
- }.must_raise(InvalidSyntax)
38
- end
39
- end
40
-
41
- describe '#text' do
42
- it 'returns the value assigned' do
43
- Line.new.text('Some text...').must_equal(
44
- [
45
- { text: 'Some text...' }
46
- ]
47
- )
48
- end
49
- end
50
-
51
- describe '#foreground' do
52
- it 'returns the value assigned' do
53
- attrs = Line.new.foreground('#ff0000')
54
- attrs.first[:colour].must_equal({ foreground: '#ff0000' })
55
- end
56
-
57
- it 'returns the value assigned with a block' do
58
- attrs = Line.new.foreground('#00ff00') do
59
- # ...
60
- end
61
- attrs.first[:colour].must_equal({ foreground: '#00ff00' })
62
- end
63
- end
64
-
65
- describe '#background' do
66
- it 'returns the value assigned' do
67
- attrs = Line.new.background('#00ff00')
68
- attrs.first[:colour].must_equal({ background: '#00ff00' })
69
- end
70
-
71
- it 'returns the value assigned with a block' do
72
- attrs = Line.new.background('#0000ff') do
73
- # ...
74
- end
75
- attrs.first[:colour].must_equal({ background: '#0000ff' })
76
- end
77
- end
78
-
79
- end # Line
80
-
81
- end # API
82
-
83
- end # Vedeu
@@ -1,85 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- module API
6
-
7
- describe Menu do
8
-
9
- describe '.define' do
10
- before { Menus.reset }
11
-
12
- it 'raises an exception if no block was given' do
13
- proc { Menu.define }.must_raise(InvalidSyntax)
14
- end
15
-
16
- it 'raises an exception if no name was specified for the menu' do
17
- proc { Menu.define { } }.must_raise(MissingRequired)
18
- end
19
-
20
- it 'adds the menu to the menus repository' do
21
- Menu.define do
22
- name 'elements'
23
- items [:sodium, :magnesium, :aluminium, :silicon]
24
- end
25
-
26
- Vedeu::Menus.registered.must_equal(['elements'])
27
- end
28
-
29
- it 'returns the API::Menu instance' do
30
- Menu.define do
31
- name 'elements'
32
- end.must_be_instance_of(API::Menu)
33
- end
34
- end
35
-
36
- describe '#initialize' do
37
- it 'returns an instance of itself' do
38
- Menu.new.must_be_instance_of(Menu)
39
- end
40
-
41
- it 'assigns the attributes' do
42
- attributes = { name: '', items: [] }
43
- subject = Menu.new(attributes)
44
- assigns(subject, '@attributes', attributes)
45
- end
46
- end
47
-
48
- describe '#items' do
49
- it 'returns an empty collection when no items are provided' do
50
- Menu.new.items.must_equal([])
51
- end
52
-
53
- it 'assigns the instance of Vedeu::Menu to the attributes' do
54
- items = [:sodium, :magnesium, :aluminium, :silicon]
55
-
56
- menu = Menu.new
57
- menu.items(items)
58
- menu.attributes[:items].must_equal(items)
59
- end
60
- end
61
-
62
- describe '#name' do
63
- it 'returns the name of the menu' do
64
- menu = Menu.new
65
- menu.name('elements').must_equal('elements')
66
- end
67
-
68
- it 'assigns the name to the attributes' do
69
- menu = Menu.new
70
- menu.name('elements')
71
- menu.attributes[:name].must_equal('elements')
72
- end
73
- end
74
-
75
- describe '#method_missing' do
76
- it 'returns nil' do
77
- Menu.new.some_missing_method(:test).must_equal(nil)
78
- end
79
- end
80
-
81
- end # Menu
82
-
83
- end # API
84
-
85
- end # Vedeu
@@ -1,59 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- module API
6
-
7
- describe Stream do
8
-
9
- describe '#align' do
10
- it { return_type_for(Stream.new.align(:left), Symbol) }
11
-
12
- it 'returns the value assigned' do
13
- Stream.new.align(:left).must_equal(:left)
14
- end
15
-
16
- it 'returns the value assigned' do
17
- Stream.new.align('left').must_equal(:left)
18
- end
19
-
20
- it 'raises an exception if the value is invalid' do
21
- proc { Stream.new.align(:unknown) }.must_raise(InvalidSyntax)
22
- end
23
- end
24
-
25
- describe '#left' do
26
- it 'returns a Symbol' do
27
- Stream.new.left.must_equal(:left)
28
- end
29
- end
30
-
31
- describe '#right' do
32
- it 'returns a Symbol' do
33
- Stream.new.right.must_equal(:right)
34
- end
35
- end
36
-
37
- describe '#centre' do
38
- it 'returns a Symbol' do
39
- Stream.new.centre.must_equal(:centre)
40
- end
41
- end
42
-
43
- describe '#text' do
44
- it 'returns the value assigned' do
45
- Stream.new.text('Some text...').must_equal('Some text...')
46
- end
47
- end
48
-
49
- describe '#width' do
50
- it 'returns the value assigned' do
51
- Stream.new.text(30).must_equal(30)
52
- end
53
- end
54
-
55
- end # Stream
56
-
57
- end # API
58
-
59
- end # Vedeu