vedeu 0.1.19 → 0.2.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.
@@ -2,11 +2,22 @@ require 'test_helper'
2
2
 
3
3
  module Vedeu
4
4
  describe Groups do
5
- before { Groups.reset }
6
- before { Groups.reset }
5
+ describe '#add' do
6
+ before { Groups.reset }
7
+
8
+ it 'returns false if the group name is empty' do
9
+ Groups.add({ group: '', name: 'gallium', delay: 0.0 }).must_equal(false)
10
+ end
11
+
12
+ it 'adds the interface name to the group in storage' do
13
+ Groups.add({ group: 'elements', name: 'germanium', delay: 0.0 })
14
+ Groups.all.must_equal({ 'elements' => Set['germanium'] })
15
+ end
16
+ end
7
17
 
8
18
  describe '#all' do
9
19
  before do
20
+ Groups.reset
10
21
  Groups.add({ group: 'elements', name: 'cobalt', delay: 0.0 })
11
22
  Groups.add({ group: 'elements', name: 'nickel', delay: 0.0 })
12
23
  Groups.add({ group: 'elements', name: 'copper', delay: 0.0 })
@@ -19,8 +30,24 @@ module Vedeu
19
30
  end
20
31
  end
21
32
 
33
+ describe '#find' do
34
+ before do
35
+ Groups.reset
36
+ Groups.add({ group: 'elements', name: 'zinc', delay: 0.0 })
37
+ end
38
+
39
+ it 'raises an exception if the group cannot be found' do
40
+ proc { Groups.find('not_found') }.must_raise(GroupNotFound)
41
+ end
42
+
43
+ it 'returns a collection of interface names belonging to the group' do
44
+ Groups.find('elements').must_equal(Set['zinc'])
45
+ end
46
+ end
47
+
22
48
  describe '#registered' do
23
49
  before do
50
+ Groups.reset
24
51
  Groups.add({ group: 'elements', name: 'cobalt', delay: 0.0 })
25
52
  Groups.add({ group: 'minerals', name: 'ruby', delay: 0.0 })
26
53
  Groups.add({ group: 'elements', name: 'copper', delay: 0.0 })
@@ -32,30 +59,21 @@ module Vedeu
32
59
  end
33
60
  end
34
61
 
35
- describe '#find' do
36
- before { Groups.add({ group: 'elements', name: 'zinc', delay: 0.0 }) }
37
-
38
- it 'raises an exception if the group cannot be found' do
39
- proc { Groups.find('not_found') }.must_raise(GroupNotFound)
40
- end
41
-
42
- it 'returns a collection of interface names belonging to the group' do
43
- Groups.find('elements').must_equal(Set['zinc'])
44
- end
45
- end
62
+ describe '#registered?' do
63
+ it 'returns true when the group is registered' do
64
+ Groups.add({ group: 'registered' })
46
65
 
47
- describe '#add' do
48
- it 'returns false if the group name is empty' do
49
- Groups.add({ group: '', name: 'gallium', delay: 0.0 }).must_equal(false)
66
+ Groups.registered?('registered').must_equal(true)
50
67
  end
51
68
 
52
- it 'adds the interface name to the group in storage' do
53
- Groups.add({ group: 'elements', name: 'germanium', delay: 0.0 })
54
- Groups.all.must_equal({ 'elements' => Set['germanium'] })
69
+ it 'returns false when the group is not registered' do
70
+ Groups.registered?('not_registered').must_equal(false)
55
71
  end
56
72
  end
57
73
 
58
74
  describe '#reset' do
75
+ before { Groups.reset }
76
+
59
77
  it 'removes all known groups from the storage' do
60
78
  Groups.add({ group: 'elements', name: 'bromine', delay: 0.0 })
61
79
  Groups.all.must_equal({ 'elements' => Set['bromine'] })
@@ -2,5 +2,84 @@ require 'test_helper'
2
2
 
3
3
  module Vedeu
4
4
  describe Interfaces do
5
+
6
+ describe '#add' do
7
+ before { Interfaces.reset }
8
+
9
+ it 'returns false if the interface name is empty' do
10
+ Interfaces.add({ name: '' }).must_equal(false)
11
+ end
12
+
13
+ it 'adds the interface to the storage' do
14
+ Interfaces.add({ name: 'germanium' })
15
+ Interfaces.all.must_equal({ 'germanium' => { name: 'germanium' } })
16
+ end
17
+ end
18
+
19
+ describe '#all' do
20
+ before do
21
+ Interfaces.reset
22
+ Interfaces.add({ name: 'cobalt' })
23
+ Interfaces.add({ name: 'nickel' })
24
+ Interfaces.add({ name: 'copper' })
25
+ end
26
+
27
+ it 'returns the storage' do
28
+ Interfaces.all.must_equal(
29
+ {
30
+ 'cobalt' => { name: 'cobalt' },
31
+ 'nickel' => { name: 'nickel' },
32
+ 'copper' => { name: 'copper' }
33
+ }
34
+ )
35
+ end
36
+ end
37
+
38
+ describe '#find' do
39
+ before { Interfaces.add({ name: 'zinc' }) }
40
+
41
+ it 'raises an exception if the interface cannot be found' do
42
+ proc { Interfaces.find('not_found') }.must_raise(InterfaceNotFound)
43
+ end
44
+
45
+ it 'returns the attributes of the named interface' do
46
+ Interfaces.find('zinc').must_equal({ name: 'zinc' })
47
+ end
48
+ end
49
+
50
+ describe '#registered' do
51
+ before do
52
+ Interfaces.reset
53
+ Interfaces.add({ name: 'cobalt' })
54
+ Interfaces.add({ name: 'ruby' })
55
+ end
56
+
57
+ it 'returns all the registered interfaces from storage' do
58
+ Interfaces.registered.must_equal(['cobalt', 'ruby'])
59
+ end
60
+ end
61
+
62
+ describe '#registered?' do
63
+ it 'returns true when the interface is registered' do
64
+ Interfaces.add({ name: 'registered' })
65
+
66
+ Interfaces.registered?('registered').must_equal(true)
67
+ end
68
+
69
+ it 'returns false when the interface is not registered' do
70
+ Interfaces.registered?('not_registered').must_equal(false)
71
+ end
72
+ end
73
+
74
+ describe '#reset' do
75
+ before { Interfaces.reset }
76
+
77
+ it 'removes all known interfaces from the storage' do
78
+ Interfaces.add({ name: 'bromine' })
79
+ Interfaces.all.must_equal({ 'bromine' => { name: 'bromine' } })
80
+ Interfaces.reset.must_be_empty
81
+ end
82
+ end
83
+
5
84
  end
6
85
  end
@@ -0,0 +1,244 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ describe Menus do
6
+
7
+ describe 'System events defined by Menus' do
8
+ before do
9
+ Menus.reset
10
+ Menus.add({ name: 'elements',
11
+ items: Vedeu::Menu.new([:sulphur, :gold, :tin, :helium]) })
12
+ end
13
+
14
+ it 'raises an exception when triggered with an unregistered name' do
15
+ proc {
16
+ Vedeu.trigger(:_menu_current_, 'unknown')
17
+ }.must_raise(MenuNotFound)
18
+ end
19
+
20
+ it '_menu_current_' do
21
+ Vedeu.trigger(:_menu_current_, 'elements').must_equal(:sulphur)
22
+ end
23
+
24
+ it '_menu_selected_ when no item is selected' do
25
+ Vedeu.trigger(:_menu_selected_, 'elements').must_equal([nil])
26
+ end
27
+
28
+ it '_menu_selected_ when an item is selected' do
29
+ Vedeu.trigger(:_menu_next_, 'elements')
30
+ Vedeu.trigger(:_menu_select_, 'elements')
31
+ Vedeu.trigger(:_menu_selected_, 'elements').must_equal(:gold)
32
+ end
33
+
34
+ it '_menu_next_' do
35
+ Vedeu.trigger(:_menu_next_, 'elements').must_equal(
36
+ [
37
+ [false, false, :sulphur],
38
+ [false, true, :gold],
39
+ [false, false, :tin],
40
+ [false, false, :helium]
41
+ ]
42
+ )
43
+ end
44
+
45
+ it '_menu_prev_' do
46
+ Vedeu.trigger(:_menu_prev_, 'elements').must_equal(
47
+ [
48
+ [false, true, :sulphur],
49
+ [false, false, :gold],
50
+ [false, false, :tin],
51
+ [false, false, :helium]
52
+ ]
53
+ )
54
+ end
55
+
56
+ it '_menu_top_' do
57
+ Vedeu.trigger(:_menu_top_, 'elements').must_equal(
58
+ [
59
+ [false, true, :sulphur],
60
+ [false, false, :gold],
61
+ [false, false, :tin],
62
+ [false, false, :helium]
63
+ ]
64
+ )
65
+ end
66
+
67
+ it '_menu_bottom_' do
68
+ Vedeu.trigger(:_menu_bottom_, 'elements').must_equal(
69
+ [
70
+ [false, false, :sulphur],
71
+ [false, false, :gold],
72
+ [false, false, :tin],
73
+ [false, true, :helium]
74
+ ]
75
+ )
76
+ end
77
+
78
+ it '_menu_select_' do
79
+ Vedeu.trigger(:_menu_select_, 'elements').must_equal(
80
+ [
81
+ [true, true, :sulphur],
82
+ [false, false, :gold],
83
+ [false, false, :tin],
84
+ [false, false, :helium]
85
+ ]
86
+ )
87
+ end
88
+
89
+ it '_menu_deselect_' do
90
+ Vedeu.trigger(:_menu_deselect_, 'elements').must_equal(
91
+ [
92
+ [false, true, :sulphur],
93
+ [false, false, :gold],
94
+ [false, false, :tin],
95
+ [false, false, :helium]
96
+ ]
97
+ )
98
+ end
99
+
100
+ it '_menu_items_' do
101
+ Vedeu.trigger(:_menu_items_, 'elements').must_equal(
102
+ [
103
+ [false, true, :sulphur],
104
+ [false, false, :gold],
105
+ [false, false, :tin],
106
+ [false, false, :helium]
107
+ ]
108
+ )
109
+ end
110
+
111
+ it '_menu_view_' do
112
+ Vedeu.trigger(:_menu_view_, 'elements').must_equal(
113
+ [
114
+ [false, true, :sulphur],
115
+ [false, false, :gold],
116
+ [false, false, :tin],
117
+ [false, false, :helium]
118
+ ]
119
+ )
120
+ end
121
+ end
122
+
123
+ describe '#add' do
124
+ before { Menus.reset }
125
+
126
+ it 'returns false if the menu name is empty' do
127
+ Menus.add({ name: '' }).must_equal(false)
128
+ end
129
+
130
+ it 'adds the menu to the storage' do
131
+ collection = [:hydrogen, :helium, :beryllium, :lithium]
132
+ items = Vedeu::Menu.new(collection)
133
+
134
+ Menus.add({ name: 'elements', items: items })
135
+ Menus.all.must_equal(
136
+ {
137
+ 'elements' => { name: 'elements', items: items }
138
+ }
139
+ )
140
+ end
141
+ end
142
+
143
+ describe '#all' do
144
+ before do
145
+ Menus.reset
146
+ Menus.add({ name: 'barium' })
147
+ Menus.add({ name: 'lanthanum' })
148
+ Menus.add({ name: 'cerium' })
149
+ end
150
+
151
+ it 'returns the storage' do
152
+ Menus.all.must_equal(
153
+ {
154
+ 'barium' => { name: 'barium' },
155
+ 'lanthanum' => { name: 'lanthanum' },
156
+ 'cerium' => { name: 'cerium' }
157
+ }
158
+ )
159
+ end
160
+ end
161
+
162
+ describe '#find' do
163
+ before { Menus.add({ name: 'erbium' }) }
164
+
165
+ it 'raises an exception if the menu cannot be found' do
166
+ proc { Menus.find('not_found') }.must_raise(MenuNotFound)
167
+ end
168
+
169
+ it 'returns the attributes of the named menu' do
170
+ Menus.find('erbium').must_equal({ name: 'erbium' })
171
+ end
172
+ end
173
+
174
+ describe '#registered' do
175
+ before do
176
+ Menus.reset
177
+ Menus.add({ name: 'barium' })
178
+ Menus.add({ name: 'caesium' })
179
+ end
180
+
181
+ it 'returns all the registered menus from storage' do
182
+ Menus.registered.must_equal(['barium', 'caesium'])
183
+ end
184
+ end
185
+
186
+ describe '#registered?' do
187
+ it 'returns true when the menu is registered' do
188
+ Menus.add({ name: 'registered' })
189
+
190
+ Menus.registered?('registered').must_equal(true)
191
+ end
192
+
193
+ it 'returns false when the menu is not registered' do
194
+ Menus.registered?('not_registered').must_equal(false)
195
+ end
196
+ end
197
+
198
+ describe '#remove' do
199
+ it 'returns false when the menu is not registered' do
200
+ Menus.remove('not_registered').must_equal(false)
201
+ end
202
+
203
+ it 'removes the menu from the repository' do
204
+ Menus.add({ name: 'antimony' })
205
+ Menus.registered?('antimony').must_equal(true)
206
+ Menus.remove('antimony')
207
+ Menus.registered?('antimony').must_equal(false)
208
+ end
209
+
210
+ it 'returns true when the menu was registered and is now removed' do
211
+ Menus.add({ name: 'tellurium' })
212
+ Menus.remove('tellurium').must_equal(true)
213
+ Menus.registered?('tellurium').must_equal(false)
214
+ end
215
+ end
216
+
217
+ describe '#reset' do
218
+ before { Menus.reset }
219
+
220
+ it 'removes all known menus from the storage' do
221
+ Menus.add({ name: 'uranium' })
222
+ Menus.all.must_equal({ 'uranium' => { name: 'uranium' } })
223
+ Menus.reset.must_be_empty
224
+ end
225
+ end
226
+
227
+ describe '#use' do
228
+ it 'returns the Vedeu::Menu instance stored when the named menu exists' do
229
+ collection = [:calcium, :fermium, :nitrogen, :palladium]
230
+ items = Vedeu::Menu.new(collection)
231
+ Menus.add({ name: 'elements', items: items })
232
+
233
+ Menus.use('elements').must_equal(items)
234
+ end
235
+
236
+ it 'raises an exception if there are no items' do
237
+ Menus.add({ name: 'elements' })
238
+
239
+ proc { Menus.use('elements') }.must_raise(MenuNotFound)
240
+ end
241
+ end
242
+
243
+ end
244
+ end
@@ -5,12 +5,6 @@ module Vedeu
5
5
  let(:collection) { ['hydrogen', 'carbon', 'nitrogen', 'oxygen'] }
6
6
  let(:menu) { Menu.new(collection) }
7
7
 
8
- describe '#events' do
9
- it 'returns the events defined for menus' do
10
- menu.events.must_be_instance_of(Hash)
11
- end
12
- end
13
-
14
8
  describe '#current' do
15
9
  it 'returns the current index' do
16
10
  menu.current.must_equal(0)
data/test/test_helper.rb CHANGED
@@ -25,35 +25,6 @@ ENV['VEDEU_TERM'] = 'xterm-truecolor'
25
25
 
26
26
  require 'vedeu'
27
27
 
28
- module Vedeu
29
- def self.reset_all!
30
- Vedeu::Buffers.reset
31
- Vedeu::Configuration.reset
32
- Vedeu.events.reset
33
- Vedeu::Focus.reset
34
- Vedeu::Groups.reset
35
- Vedeu::Interfaces.reset
36
- end
37
- end
38
-
39
- module MyMiniTestPlugin
40
- # Code to run before every test case
41
- def before_setup
42
- super
43
- Vedeu.reset_all!
44
- end
45
-
46
- # Code to run after every test case
47
- def after_teardown
48
- Vedeu.reset_all!
49
- super
50
- end
51
- end
52
-
53
- class MiniTest::Spec
54
- include MyMiniTestPlugin
55
- end
56
-
57
28
  # commented out by default (makes tests slower)
58
29
  # require 'minitest/reporters'
59
30
  # Minitest::Reporters.use!(