vedeu 0.6.20 → 0.6.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -1
  3. data/README.md +4 -0
  4. data/Rakefile +13 -0
  5. data/bin/vedeu_drb_server +6 -6
  6. data/docs/api.md +14 -0
  7. data/docs/dsl.md +12 -12
  8. data/docs/events/document.md +4 -2
  9. data/docs/events/drb.md +4 -0
  10. data/docs/events/focus.md +2 -0
  11. data/docs/events/menu.md +2 -0
  12. data/docs/events/movement.md +7 -5
  13. data/docs/events/refresh.md +2 -0
  14. data/docs/events/system.md +5 -0
  15. data/docs/events/view.md +2 -0
  16. data/docs/events/visibility.md +2 -0
  17. data/lib/vedeu.rb +0 -23
  18. data/lib/vedeu/all.rb +2 -4
  19. data/lib/vedeu/application/application_view.rb +1 -1
  20. data/lib/vedeu/borders/all.rb +3 -3
  21. data/lib/vedeu/borders/border.rb +2 -2
  22. data/lib/vedeu/borders/dsl.rb +21 -27
  23. data/lib/vedeu/borders/null.rb +2 -15
  24. data/lib/vedeu/borders/render.rb +1 -1
  25. data/lib/vedeu/borders/repository.rb +9 -0
  26. data/lib/vedeu/buffers/buffer.rb +2 -2
  27. data/lib/vedeu/buffers/null.rb +1 -31
  28. data/lib/vedeu/buffers/refresh.rb +8 -8
  29. data/lib/vedeu/buffers/repository.rb +9 -0
  30. data/lib/vedeu/colours/backgrounds.rb +9 -0
  31. data/lib/vedeu/colours/colour.rb +1 -1
  32. data/lib/vedeu/colours/foregrounds.rb +9 -0
  33. data/lib/vedeu/common.rb +22 -13
  34. data/lib/vedeu/configuration/configuration.rb +6 -0
  35. data/lib/vedeu/cursors/cursor.rb +13 -8
  36. data/lib/vedeu/cursors/refresh.rb +2 -2
  37. data/lib/vedeu/cursors/repository.rb +18 -1
  38. data/lib/vedeu/distributed/server.rb +23 -0
  39. data/lib/vedeu/distributed/templates/default_borders.vedeu +1 -1
  40. data/lib/vedeu/distributed/templates/default_geometries.vedeu +1 -1
  41. data/lib/vedeu/distributed/templates/default_interfaces.vedeu +1 -1
  42. data/lib/vedeu/distributed/templates/default_keymaps.vedeu +1 -1
  43. data/lib/vedeu/distributed/templates/default_menus.vedeu +1 -1
  44. data/lib/vedeu/distributed/templates/default_views.vedeu +1 -1
  45. data/lib/vedeu/dsl/composition.rb +7 -17
  46. data/lib/vedeu/dsl/dsl.rb +12 -0
  47. data/lib/vedeu/dsl/interface.rb +32 -33
  48. data/lib/vedeu/dsl/keymap.rb +13 -19
  49. data/lib/vedeu/dsl/line.rb +3 -13
  50. data/lib/vedeu/dsl/shared.rb +5 -5
  51. data/lib/vedeu/dsl/stream.rb +0 -10
  52. data/lib/vedeu/dsl/use.rb +6 -6
  53. data/lib/vedeu/dsl/view.rb +17 -19
  54. data/lib/vedeu/editor/cursor.rb +32 -10
  55. data/lib/vedeu/editor/document.rb +33 -35
  56. data/lib/vedeu/editor/editor.rb +3 -4
  57. data/lib/vedeu/editor/insert.rb +1 -1
  58. data/lib/vedeu/editor/line.rb +1 -8
  59. data/lib/vedeu/editor/lines.rb +1 -1
  60. data/lib/vedeu/editor/repository.rb +9 -0
  61. data/lib/vedeu/esc/esc.rb +2 -1
  62. data/lib/vedeu/events/aliases.rb +8 -1
  63. data/lib/vedeu/events/event.rb +8 -0
  64. data/lib/vedeu/events/repository.rb +9 -0
  65. data/lib/vedeu/events/trigger.rb +9 -5
  66. data/lib/vedeu/geometry/coordinate.rb +2 -2
  67. data/lib/vedeu/geometry/dsl.rb +32 -38
  68. data/lib/vedeu/geometry/generic_coordinate.rb +1 -1
  69. data/lib/vedeu/geometry/geometry.rb +3 -3
  70. data/lib/vedeu/geometry/null.rb +2 -24
  71. data/lib/vedeu/geometry/repository.rb +9 -0
  72. data/lib/vedeu/groups/clear.rb +7 -3
  73. data/lib/vedeu/groups/dsl.rb +29 -35
  74. data/lib/vedeu/groups/group.rb +28 -4
  75. data/lib/vedeu/groups/refresh.rb +3 -2
  76. data/lib/vedeu/groups/repository.rb +9 -0
  77. data/lib/vedeu/input/capture.rb +1 -1
  78. data/lib/vedeu/input/keymap.rb +2 -1
  79. data/lib/vedeu/input/keymaps.rb +9 -0
  80. data/lib/vedeu/input/mapper.rb +4 -0
  81. data/lib/vedeu/input/translator.rb +1 -1
  82. data/lib/vedeu/logging/debug.rb +13 -0
  83. data/lib/vedeu/logging/log.rb +8 -0
  84. data/lib/vedeu/logging/timer.rb +13 -0
  85. data/lib/vedeu/menus/dsl.rb +8 -18
  86. data/lib/vedeu/menus/menu.rb +8 -4
  87. data/lib/vedeu/menus/null.rb +1 -1
  88. data/lib/vedeu/menus/repository.rb +9 -0
  89. data/lib/vedeu/models/cell.rb +5 -0
  90. data/lib/vedeu/models/escape.rb +5 -0
  91. data/lib/vedeu/models/focus.rb +20 -5
  92. data/lib/vedeu/models/interface.rb +10 -1
  93. data/lib/vedeu/models/interfaces.rb +9 -0
  94. data/lib/vedeu/models/toggleable.rb +19 -4
  95. data/lib/vedeu/models/views/char.rb +6 -1
  96. data/lib/vedeu/models/views/html_char.rb +1 -4
  97. data/lib/vedeu/models/views/line.rb +1 -1
  98. data/lib/vedeu/models/views/view.rb +1 -1
  99. data/lib/vedeu/null/generic.rb +14 -2
  100. data/lib/vedeu/null/interface.rb +1 -1
  101. data/lib/vedeu/null/view.rb +1 -1
  102. data/lib/vedeu/output/clear/interface.rb +5 -1
  103. data/lib/vedeu/output/compressor.rb +8 -4
  104. data/lib/vedeu/output/direct.rb +4 -4
  105. data/lib/vedeu/output/presentation/all.rb +15 -0
  106. data/lib/vedeu/output/presentation/presentation.rb +0 -7
  107. data/lib/vedeu/output/refresh/refresh.rb +1 -3
  108. data/lib/vedeu/output/renderers/all.rb +10 -0
  109. data/lib/vedeu/output/renderers/terminal.rb +1 -3
  110. data/lib/vedeu/repositories/collection.rb +3 -3
  111. data/lib/vedeu/repositories/model.rb +1 -1
  112. data/lib/vedeu/repositories/repository.rb +8 -8
  113. data/lib/vedeu/repositories/store.rb +3 -2
  114. data/lib/vedeu/runtime/application.rb +4 -0
  115. data/lib/vedeu/runtime/bootstrap.rb +1 -1
  116. data/lib/vedeu/runtime/flags.rb +7 -0
  117. data/lib/vedeu/runtime/main_loop.rb +2 -0
  118. data/lib/vedeu/runtime/router.rb +4 -0
  119. data/lib/vedeu/templating/decoder.rb +1 -1
  120. data/lib/vedeu/templating/encoder.rb +1 -1
  121. data/lib/vedeu/templating/helpers.rb +2 -0
  122. data/lib/vedeu/templating/template.rb +1 -1
  123. data/lib/vedeu/terminal/buffer.rb +7 -0
  124. data/lib/vedeu/terminal/terminal.rb +8 -0
  125. data/lib/vedeu/version.rb +1 -1
  126. data/test/lib/vedeu/borders/dsl_test.rb +0 -6
  127. data/test/lib/vedeu/borders/null_test.rb +0 -12
  128. data/test/lib/vedeu/buffers/null_test.rb +0 -37
  129. data/test/lib/vedeu/common_test.rb +33 -0
  130. data/test/lib/vedeu/cursors/cursor_test.rb +1 -1
  131. data/test/lib/vedeu/dsl/composition_test.rb +0 -6
  132. data/test/lib/vedeu/dsl/dsl_test.rb +1 -0
  133. data/test/lib/vedeu/dsl/interface_test.rb +0 -6
  134. data/test/lib/vedeu/dsl/keymap_test.rb +0 -5
  135. data/test/lib/vedeu/dsl/line_test.rb +0 -7
  136. data/test/lib/vedeu/dsl/stream_test.rb +0 -7
  137. data/test/lib/vedeu/editor/cursor_test.rb +23 -8
  138. data/test/lib/vedeu/editor/document_test.rb +27 -23
  139. data/test/lib/vedeu/editor/line_test.rb +0 -30
  140. data/test/lib/vedeu/geometry/dsl_test.rb +0 -5
  141. data/test/lib/vedeu/geometry/null_test.rb +0 -30
  142. data/test/lib/vedeu/groups/dsl_test.rb +0 -6
  143. data/test/lib/vedeu/groups/group_test.rb +15 -7
  144. data/test/lib/vedeu/menus/dsl_test.rb +0 -5
  145. data/test/lib/vedeu/models/cell_test.rb +4 -0
  146. data/test/lib/vedeu/models/escape_test.rb +4 -0
  147. data/test/lib/vedeu/models/views/char_test.rb +4 -0
  148. data/test/lib/vedeu/null/generic_test.rb +13 -0
  149. data/test/lib/vedeu/terminal/buffer_test.rb +3 -2
  150. data/test/lib/vedeu_test.rb +81 -3
  151. data/test/support/examples/borders_app.rb +1 -3
  152. data/test/support/examples/drb_app.rb +1 -3
  153. data/test/support/examples/editor_app.rb +2 -4
  154. data/test/support/examples/focus_app.rb +1 -3
  155. data/test/support/examples/hello_world.rb +1 -6
  156. data/test/support/examples/material_colours_app.rb +1 -3
  157. data/test/support/examples/view_templates_app/view_templates_app.rb +1 -3
  158. data/test/support/helpers/model_test_class.rb +1 -5
  159. data/test/support/who.rb +29 -0
  160. data/test/test_helper.rb +0 -1
  161. metadata +5 -17
  162. data/lib/vedeu/api/all.rb +0 -15
  163. data/lib/vedeu/api/external.rb +0 -194
  164. data/lib/vedeu/api/internal.rb +0 -177
  165. data/test/lib/vedeu/api/external_test.rb +0 -74
  166. data/test/lib/vedeu/api/internal_test.rb +0 -33
  167. data/test/support/examples/typed_commands/command.erb +0 -1
  168. data/test/support/examples/typed_commands/output.erb +0 -1
  169. data/test/support/examples/typed_commands/status.erb +0 -1
  170. data/test/support/examples/typed_commands/typed_commands_app.rb +0 -94
@@ -11,12 +11,6 @@ module Vedeu
11
11
  let(:model) { Vedeu::Views::Composition.new }
12
12
  let(:client) {}
13
13
 
14
- describe '#initialize' do
15
- it { instance.must_be_instance_of(described) }
16
- it { instance.instance_variable_get('@model').must_equal(model) }
17
- it { instance.instance_variable_get('@client').must_equal(client) }
18
- end
19
-
20
14
  describe '#view' do
21
15
  subject {
22
16
  instance.view('dysprosium') do
@@ -3,6 +3,7 @@ require 'test_helper'
3
3
  module Vedeu
4
4
 
5
5
  describe DSL do
6
+
6
7
  end # DSL
7
8
 
8
9
  end # Vedeu
@@ -14,12 +14,6 @@ module Vedeu
14
14
  let(:_name) { 'actinium' }
15
15
  let(:client) {}
16
16
 
17
- describe '#initialize' do
18
- it { instance.must_be_instance_of(described) }
19
- it { instance.instance_variable_get('@model').must_equal(model) }
20
- it { instance.instance_variable_get('@client').must_equal(client) }
21
- end
22
-
23
17
  describe '.interface' do
24
18
  after { Vedeu.interfaces.reset }
25
19
 
@@ -10,11 +10,6 @@ module Vedeu
10
10
  let(:instance) { described.new(model) }
11
11
  let(:model) { Vedeu::Input::Keymap.new(name: '_test_') }
12
12
 
13
- describe '#initialize' do
14
- it { instance.must_be_instance_of(described) }
15
- it { instance.instance_variable_get('@model').must_equal(model) }
16
- end
17
-
18
13
  describe '#key' do
19
14
  let(:value_or_values) { ['j', :down] }
20
15
 
@@ -24,13 +24,6 @@ module Vedeu
24
24
  }
25
25
  }
26
26
 
27
-
28
- describe '#initialize' do
29
- it { instance.must_be_instance_of(described) }
30
- it { instance.instance_variable_get('@model').must_equal(model) }
31
- it { instance.instance_variable_get('@client').must_equal(client) }
32
- end
33
-
34
27
  describe '#line' do
35
28
  let(:_value) { '' }
36
29
 
@@ -9,15 +9,8 @@ module Vedeu
9
9
  let(:described) { Vedeu::DSL::Stream }
10
10
  let(:instance) { described.new(model) }
11
11
  let(:model) { Vedeu::Views::Stream.new(parent: parent) }
12
- let(:client) {}
13
12
  let(:parent) { Vedeu::Views::Line.new }
14
13
 
15
- describe '#initialize' do
16
- it { instance.must_be_instance_of(described) }
17
- it { instance.instance_variable_get('@model').must_equal(model) }
18
- it { instance.instance_variable_get('@client').must_equal(client) }
19
- end
20
-
21
14
  describe '#stream' do
22
15
  subject { instance.stream { } }
23
16
 
@@ -10,14 +10,15 @@ module Vedeu
10
10
  let(:instance) { described.new(attributes) }
11
11
  let(:attributes) {
12
12
  {
13
- y: y,
14
- x: x,
15
- bx: bx,
16
- by: by,
17
- byn: byn,
18
- bxn: bxn,
19
- oy: oy,
20
- ox: ox
13
+ y: y,
14
+ x: x,
15
+ bx: bx,
16
+ by: by,
17
+ byn: byn,
18
+ bxn: bxn,
19
+ name: _name,
20
+ oy: oy,
21
+ ox: ox
21
22
  }
22
23
  }
23
24
  let(:y) { 0 }
@@ -26,6 +27,7 @@ module Vedeu
26
27
  let(:bx) { 1 }
27
28
  let(:byn) { 6 }
28
29
  let(:bxn) { 6 }
30
+ let(:_name) { 'editor_cursor' }
29
31
  let(:oy) { 0 }
30
32
  let(:ox) { 0 }
31
33
 
@@ -37,6 +39,7 @@ module Vedeu
37
39
  it { instance.instance_variable_get('@bx').must_equal(bx) }
38
40
  it { instance.instance_variable_get('@byn').must_equal(byn) }
39
41
  it { instance.instance_variable_get('@bxn').must_equal(bxn) }
42
+ it { instance.instance_variable_get('@name').must_equal(_name) }
40
43
  it { instance.instance_variable_get('@oy').must_equal(0) }
41
44
  it { instance.instance_variable_get('@ox').must_equal(0) }
42
45
 
@@ -71,6 +74,7 @@ module Vedeu
71
74
  instance.must_respond_to(:bxn=)
72
75
  instance.must_respond_to(:byn)
73
76
  instance.must_respond_to(:byn=)
77
+ instance.must_respond_to(:name)
74
78
  instance.must_respond_to(:ox)
75
79
  instance.must_respond_to(:ox=)
76
80
  instance.must_respond_to(:oy)
@@ -116,6 +120,17 @@ module Vedeu
116
120
  it { subject.ox.must_equal(3) }
117
121
  end
118
122
 
123
+ describe '#store' do
124
+ before { Vedeu::Cursors::Cursor.stubs(:store) }
125
+
126
+ subject { instance.store }
127
+
128
+ it 'stores the virtual cursor in place of the real cursor' do
129
+ Vedeu::Cursors::Cursor.expects(:store)
130
+ subject.must_be_instance_of(described)
131
+ end
132
+ end
133
+
119
134
  describe '#reset!' do
120
135
  let(:x) { 11 }
121
136
  let(:y) { 5 }
@@ -19,9 +19,24 @@ module Vedeu
19
19
  "Helium\n" \
20
20
  "Lithium\n"
21
21
  }
22
- let(:_name) { 'Vedeu::Editor::Document' }
22
+ let(:_name) { 'Vedeu::Editor::Document' }
23
+ let(:border) {
24
+ Vedeu::Borders::Border.new({ name: _name, enabled: false })
25
+ }
26
+ let(:geometry) {
27
+ Vedeu::Geometry::Geometry.new({ name: _name, x: 1, xn: 5, y: 1, yn: 5 })
28
+ }
29
+ let(:interface) {
30
+ Vedeu::Models::Interface.new({ name: _name })
31
+ }
23
32
 
24
- before { Vedeu::Output::Direct.stubs(:write) }
33
+ before {
34
+ Vedeu.borders.stubs(:by_name).with(_name).returns(border)
35
+ Vedeu.geometries.stubs(:by_name).with(_name).returns(geometry)
36
+ Vedeu.interfaces.stubs(:by_name).with(_name).returns(interface)
37
+
38
+ Vedeu::Output::Output.stubs(:render)
39
+ }
25
40
 
26
41
  describe '#initialize' do
27
42
  it { instance.must_be_instance_of(described) }
@@ -44,28 +59,14 @@ module Vedeu
44
59
  end
45
60
 
46
61
  describe '#clear' do
47
- let(:expected) {
48
- "\e[1;1H\e[1;1H " \
49
- "\e[2;1H " \
50
- "\e[3;1H " \
51
- "\e[4;1H " \
52
- "\e[5;1H " \
53
- "\e[1;1H"
54
- }
55
-
56
- before do
57
- Vedeu::Geometry::Geometry.new(name: _name,
58
- x: 1,
59
- y: 1,
60
- xn: 5,
61
- yn: 5).store
62
- Vedeu::Terminal.stubs(:output)
63
- Vedeu::Output::Direct.stubs(:write).returns(expected)
64
- end
62
+ before { Vedeu.stubs(:trigger).with(:_clear_view_, _name) }
65
63
 
66
64
  subject { instance.clear }
67
65
 
68
- it { subject.must_equal(expected) }
66
+ it {
67
+ Vedeu.expects(:trigger).with(:_clear_view_, _name)
68
+ subject
69
+ }
69
70
  end
70
71
 
71
72
  describe '#delete_character' do
@@ -181,12 +182,15 @@ module Vedeu
181
182
  }
182
183
  let(:output) { "\e[1;1HA\e[2;1HB\e[3;1HC\e[1;1H\e[?25h" }
183
184
 
184
- before { Vedeu::Output::Direct.stubs(:write) }
185
+ before {
186
+ Vedeu.stubs(:trigger).with(:_clear_view_, _name)
187
+ Vedeu::Output::Output.stubs(:render)
188
+ }
185
189
 
186
190
  subject { instance.render }
187
191
 
188
192
  it {
189
- Vedeu::Output::Direct.expects(:write).with(value: output, x: 1, y: 1)
193
+ Vedeu::Output::Output.expects(:render)
190
194
  subject
191
195
  }
192
196
  end
@@ -282,36 +282,6 @@ module Vedeu
282
282
  end
283
283
  end
284
284
 
285
- describe '#to_chars' do
286
- subject { instance.to_chars }
287
-
288
- context 'when the line is empty' do
289
- let(:line) {}
290
-
291
- it { subject.must_equal([]) }
292
- end
293
-
294
- context 'when the line is not empty' do
295
- let(:expected) {
296
- [
297
- Vedeu::Views::Char.new(value: 'S'),
298
- Vedeu::Views::Char.new(value: 'o'),
299
- Vedeu::Views::Char.new(value: 'm'),
300
- Vedeu::Views::Char.new(value: 'e'),
301
- Vedeu::Views::Char.new(value: ' '),
302
- Vedeu::Views::Char.new(value: 't'),
303
- Vedeu::Views::Char.new(value: 'e'),
304
- Vedeu::Views::Char.new(value: 'x'),
305
- Vedeu::Views::Char.new(value: 't'),
306
- Vedeu::Views::Char.new(value: '.'),
307
- Vedeu::Views::Char.new(value: '.'),
308
- Vedeu::Views::Char.new(value: '.'),
309
- ]
310
- }
311
- it { subject.must_equal(expected) }
312
- end
313
- end
314
-
315
285
  describe '#to_s' do
316
286
  subject { instance.to_s }
317
287
 
@@ -10,11 +10,6 @@ module Vedeu
10
10
  let(:instance) { described.new(model) }
11
11
  let(:model) { Vedeu::Geometry::Geometry.new }
12
12
 
13
- describe '#initialize' do
14
- it { instance.must_be_instance_of(described) }
15
- it { instance.instance_variable_get('@model').must_equal(model) }
16
- end
17
-
18
13
  describe '.geometry' do
19
14
  it { described.must_respond_to(:geometry) }
20
15
  end
@@ -29,36 +29,6 @@ module Vedeu
29
29
  it { instance.must_respond_to(:name) }
30
30
  end
31
31
 
32
- describe '#null?' do
33
- subject { instance.null? }
34
-
35
- it { subject.must_be_instance_of(TrueClass) }
36
- end
37
-
38
- describe '#centred' do
39
- subject { instance.centred }
40
-
41
- it { subject.must_equal(false) }
42
- end
43
-
44
- describe '#maximise' do
45
- subject { instance.maximise }
46
-
47
- it { subject.must_equal(false) }
48
- end
49
-
50
- describe '#store' do
51
- subject { instance.store }
52
-
53
- it { subject.must_be_instance_of(described) }
54
- end
55
-
56
- describe '#unmaximise' do
57
- subject { instance.unmaximise }
58
-
59
- it { subject.must_equal(false) }
60
- end
61
-
62
32
  describe '#height' do
63
33
  before { Vedeu::Terminal.stubs(:size).returns([25, 40]) }
64
34
 
@@ -12,12 +12,6 @@ module Vedeu
12
12
  let(:client) {}
13
13
  let(:group_name) { 'main_screen' }
14
14
 
15
- describe '#initialize' do
16
- it { instance.must_be_instance_of(described) }
17
- it { instance.instance_variable_get('@model').must_equal(model) }
18
- it { instance.instance_variable_get('@client').must_equal(client) }
19
- end
20
-
21
15
  describe '.group' do
22
16
  context 'when the block is given' do
23
17
  subject {
@@ -41,20 +41,30 @@ module Vedeu
41
41
  }
42
42
  end
43
43
 
44
+ describe '.store' do
45
+ subject { described.store(attributes) }
46
+
47
+ it { subject.must_equal(instance) }
48
+ end
49
+
44
50
  describe '#add' do
45
51
  subject { instance.add('hydrogen') }
46
52
 
47
- it { subject.must_be_instance_of(Vedeu::Groups::Group) }
53
+ it { subject.must_be_instance_of(described) }
48
54
 
49
55
  context 'when the member already exists' do
56
+ let(:members) { ['hydrogen', 'carbon', 'nitrogen', 'oxygen'] }
57
+
50
58
  it 'does not add the member again but returns a new Group' do
51
- subject.wont_equal(instance)
59
+ subject.members.must_equal(Set.new(members))
52
60
  end
53
61
  end
54
62
 
55
63
  context 'when the member does not exist' do
64
+ let(:members) { ['carbon', 'nitrogen', 'oxygen'] }
65
+
56
66
  it 'adds the member and returns a new Group' do
57
- subject.wont_equal(instance)
67
+ subject.members.must_include('hydrogen')
58
68
  end
59
69
  end
60
70
  end
@@ -104,18 +114,16 @@ module Vedeu
104
114
  context 'when the group is already empty' do
105
115
  let(:members) { [] }
106
116
 
107
- it { subject.wont_equal(instance) }
117
+ it { subject.members.must_equal(Set.new) }
108
118
  end
109
119
 
110
120
  context 'when the member exists' do
111
121
  let(:member) { 'oxygen' }
112
122
 
113
- it { subject.wont_equal(instance) }
114
123
  it { subject.members.wont_include(member) }
115
124
  end
116
125
 
117
126
  context 'when the member does not exist' do
118
- it { subject.wont_equal(instance) }
119
127
  it { subject.members.wont_include(member) }
120
128
  end
121
129
  end
@@ -123,7 +131,7 @@ module Vedeu
123
131
  describe '#reset' do
124
132
  subject { instance.reset }
125
133
 
126
- it { subject.must_be_instance_of(Vedeu::Groups::Group) }
134
+ it { subject.must_be_instance_of(described) }
127
135
  it { subject.members.must_be_empty }
128
136
  end
129
137
 
@@ -18,11 +18,6 @@ module Vedeu
18
18
  let(:collection) { [:sodium, :magnesium, :aluminium, :silicon] }
19
19
  let(:menu_name) { 'elements' }
20
20
 
21
- describe '#initialize' do
22
- it { instance.must_be_instance_of(described) }
23
- it { instance.instance_variable_get('@model').must_equal(model) }
24
- end
25
-
26
21
  describe '#item' do
27
22
  let(:_value) { :platinum }
28
23
 
@@ -37,6 +37,10 @@ module Vedeu
37
37
  }
38
38
  end
39
39
 
40
+ describe '#cell?' do
41
+ it { instance.cell?.must_equal(true) }
42
+ end
43
+
40
44
  describe '#eql?' do
41
45
  let(:other) { described.new(value: nil, position: nil) }
42
46
 
@@ -23,6 +23,10 @@ module Vedeu
23
23
  it { instance.instance_variable_get('@value').must_equal(_value) }
24
24
  end
25
25
 
26
+ describe '#cell?' do
27
+ it { instance.cell?.must_equal(false) }
28
+ end
29
+
26
30
  describe '#null' do
27
31
  it { instance.null.must_equal(nil) }
28
32
  it { instance.background.must_equal(nil) }
@@ -68,6 +68,10 @@ module Vedeu
68
68
  }
69
69
  end
70
70
 
71
+ describe '#cell?' do
72
+ it { instance.cell?.must_equal(false) }
73
+ end
74
+
71
75
  describe '#chars' do
72
76
  subject { instance.chars }
73
77
 
@@ -28,12 +28,24 @@ module Vedeu
28
28
  }
29
29
  end
30
30
 
31
+ describe '#falsy' do
32
+ subject { instance.falsy }
33
+
34
+ it { subject.must_be_instance_of(FalseClass) }
35
+
36
+ it { instance.must_respond_to(:centred) }
37
+ it { instance.must_respond_to(:maximise) }
38
+ it { instance.must_respond_to(:maximised?) }
39
+ it { instance.must_respond_to(:unmaximise) }
40
+ end
41
+
31
42
  describe '#null' do
32
43
  subject { instance.null }
33
44
 
34
45
  it { subject.must_be_instance_of(NilClass) }
35
46
  it { instance.must_respond_to(:add) }
36
47
  it { instance.must_respond_to(:bottom_item) }
48
+ it { instance.must_respond_to(:clear) }
37
49
  it { instance.must_respond_to(:colour) }
38
50
  it { instance.must_respond_to(:current_item) }
39
51
  it { instance.must_respond_to(:deselect_item) }
@@ -43,6 +55,7 @@ module Vedeu
43
55
  it { instance.must_respond_to(:next_item) }
44
56
  it { instance.must_respond_to(:parent) }
45
57
  it { instance.must_respond_to(:prev_item) }
58
+ it { instance.must_respond_to(:render) }
46
59
  it { instance.must_respond_to(:select_item) }
47
60
  it { instance.must_respond_to(:selected_item) }
48
61
  it { instance.must_respond_to(:show) }