vedeu 0.1.19 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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!(