vedeu 0.6.7 → 0.6.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/docs/dsl.md +4 -4
  4. data/lib/vedeu/all.rb +6 -18
  5. data/lib/vedeu/api.rb +14 -13
  6. data/lib/vedeu/bindings/system.rb +5 -4
  7. data/lib/vedeu/buffers/virtual_buffer.rb +13 -11
  8. data/lib/vedeu/configuration/api.rb +4 -3
  9. data/lib/vedeu/cursors/cursor.rb +23 -18
  10. data/lib/vedeu/distributed/client.rb +11 -6
  11. data/lib/vedeu/distributed/server.rb +4 -3
  12. data/lib/vedeu/dsl/keymap.rb +6 -6
  13. data/lib/vedeu/editor/all.rb +19 -0
  14. data/lib/vedeu/{input/editor → editor}/capture.rb +1 -1
  15. data/lib/vedeu/{input/editor → editor}/cropper.rb +0 -0
  16. data/lib/vedeu/{input/editor → editor}/cursor.rb +0 -0
  17. data/lib/vedeu/{input/editor → editor}/document.rb +0 -0
  18. data/lib/vedeu/{input/editor → editor}/documents.rb +0 -0
  19. data/lib/vedeu/{input/editor → editor}/editor.rb +0 -0
  20. data/lib/vedeu/{input/editor → editor}/insert.rb +0 -0
  21. data/lib/vedeu/{input/editor → editor}/line.rb +0 -0
  22. data/lib/vedeu/{input/editor → editor}/lines.rb +0 -0
  23. data/lib/vedeu/error.rb +21 -18
  24. data/lib/vedeu/esc/borders.rb +6 -4
  25. data/lib/vedeu/esc/colours.rb +13 -12
  26. data/lib/vedeu/esc/esc.rb +11 -10
  27. data/lib/vedeu/input/all.rb +15 -0
  28. data/lib/vedeu/input/input.rb +55 -52
  29. data/lib/vedeu/input/key.rb +36 -30
  30. data/lib/vedeu/input/keymap.rb +101 -92
  31. data/lib/vedeu/input/keymaps.rb +10 -6
  32. data/lib/vedeu/input/keys.rb +8 -4
  33. data/lib/vedeu/input/mapper.rb +125 -121
  34. data/lib/vedeu/input/translator.rb +159 -0
  35. data/lib/vedeu/internal_api.rb +16 -15
  36. data/lib/vedeu/logging/all.rb +13 -0
  37. data/lib/vedeu/logging/debug.rb +84 -0
  38. data/lib/vedeu/logging/lockless_log_device.rb +65 -0
  39. data/lib/vedeu/logging/log.rb +179 -0
  40. data/lib/vedeu/logging/mono_logger.rb +26 -0
  41. data/lib/vedeu/logging/timer.rb +68 -0
  42. data/lib/vedeu/menus/all.rb +12 -0
  43. data/lib/vedeu/{dsl/menu.rb → menus/dsl.rb} +19 -18
  44. data/lib/vedeu/menus/menu.rb +234 -0
  45. data/lib/vedeu/{null/menu.rb → menus/null.rb} +6 -6
  46. data/lib/vedeu/menus/repository.rb +18 -0
  47. data/lib/vedeu/models/cell.rb +62 -55
  48. data/lib/vedeu/models/escape.rb +55 -50
  49. data/lib/vedeu/models/page.rb +74 -69
  50. data/lib/vedeu/models/row.rb +55 -51
  51. data/lib/vedeu/models/views/all.rb +1 -0
  52. data/lib/vedeu/models/views/char.rb +1 -1
  53. data/lib/vedeu/models/views/html_char.rb +165 -0
  54. data/lib/vedeu/output/renderers/html.rb +5 -4
  55. data/lib/vedeu/repositories/model.rb +2 -0
  56. data/lib/vedeu/runtime/application.rb +110 -103
  57. data/lib/vedeu/runtime/bootstrap.rb +109 -103
  58. data/lib/vedeu/runtime/flags.rb +45 -41
  59. data/lib/vedeu/runtime/launcher.rb +1 -1
  60. data/lib/vedeu/runtime/main_loop.rb +51 -46
  61. data/lib/vedeu/runtime/traps.rb +20 -16
  62. data/lib/vedeu/version.rb +1 -1
  63. data/lib/vedeu.rb +2 -2
  64. data/test/lib/vedeu/buffers/virtual_buffer_test.rb +1 -1
  65. data/test/lib/vedeu/cursors/cursor_test.rb +11 -5
  66. data/test/lib/vedeu/dsl/interface_test.rb +1 -1
  67. data/test/lib/vedeu/dsl/keymap_test.rb +2 -2
  68. data/test/lib/vedeu/{input/editor → editor}/capture_test.rb +0 -0
  69. data/test/lib/vedeu/{input/editor → editor}/cropper_test.rb +0 -0
  70. data/test/lib/vedeu/{input/editor → editor}/cursor_test.rb +0 -0
  71. data/test/lib/vedeu/{input/editor → editor}/document_test.rb +0 -0
  72. data/test/lib/vedeu/{input/editor → editor}/documents_test.rb +0 -0
  73. data/test/lib/vedeu/{input/editor → editor}/editor_test.rb +0 -0
  74. data/test/lib/vedeu/{input/editor → editor}/insert_test.rb +0 -0
  75. data/test/lib/vedeu/{input/editor → editor}/line_test.rb +0 -0
  76. data/test/lib/vedeu/{input/editor → editor}/lines_test.rb +0 -0
  77. data/test/lib/vedeu/input/input_test.rb +58 -54
  78. data/test/lib/vedeu/input/key_test.rb +29 -25
  79. data/test/lib/vedeu/input/keymap_test.rb +74 -70
  80. data/test/lib/vedeu/input/keymaps_test.rb +8 -4
  81. data/test/lib/vedeu/input/keys_test.rb +12 -8
  82. data/test/lib/vedeu/input/mapper_test.rb +64 -56
  83. data/test/lib/vedeu/input/translator_test.rb +36 -0
  84. data/test/lib/vedeu/logging/debug_test.rb +39 -0
  85. data/test/lib/vedeu/logging/lockless_log_device_test.rb +42 -0
  86. data/test/lib/vedeu/logging/log_test.rb +52 -0
  87. data/test/lib/vedeu/logging/mono_logger_test.rb +43 -0
  88. data/test/lib/vedeu/logging/timer_test.rb +44 -0
  89. data/test/lib/vedeu/{dsl/menu_test.rb → menus/dsl_test.rb} +6 -6
  90. data/test/lib/vedeu/menus/menu_test.rb +305 -0
  91. data/test/lib/vedeu/{null/menu_test.rb → menus/null_test.rb} +5 -5
  92. data/test/lib/vedeu/menus/repository_test.rb +17 -0
  93. data/test/lib/vedeu/models/cell_test.rb +54 -50
  94. data/test/lib/vedeu/models/escape_test.rb +49 -45
  95. data/test/lib/vedeu/models/page_test.rb +167 -160
  96. data/test/lib/vedeu/models/row_test.rb +71 -67
  97. data/test/lib/vedeu/models/views/html_char_test.rb +110 -0
  98. data/test/lib/vedeu/output/compressor_test.rb +44 -22
  99. data/test/lib/vedeu/output/renderers_test.rb +4 -2
  100. data/test/lib/vedeu/runtime/application_test.rb +36 -32
  101. data/test/lib/vedeu/runtime/bootstrap_test.rb +31 -26
  102. data/test/lib/vedeu/runtime/flags_test.rb +33 -29
  103. data/test/lib/vedeu/runtime/launcher_test.rb +4 -2
  104. data/test/lib/vedeu/runtime/main_loop_test.rb +28 -24
  105. data/test/lib/vedeu/runtime/traps_test.rb +8 -4
  106. data/test/test_helper.rb +4 -2
  107. metadata +66 -63
  108. data/lib/vedeu/input/editor/all.rb +0 -19
  109. data/lib/vedeu/input/input_translator.rb +0 -155
  110. data/lib/vedeu/log/debug.rb +0 -79
  111. data/lib/vedeu/log/lockless_log_device.rb +0 -61
  112. data/lib/vedeu/log/log.rb +0 -172
  113. data/lib/vedeu/log/mono_logger.rb +0 -21
  114. data/lib/vedeu/log/timer.rb +0 -63
  115. data/lib/vedeu/models/menu.rb +0 -217
  116. data/lib/vedeu/models/menus.rb +0 -14
  117. data/lib/vedeu/output/html_char.rb +0 -161
  118. data/test/lib/vedeu/input/input_translator_test.rb +0 -32
  119. data/test/lib/vedeu/log/debug_test.rb +0 -35
  120. data/test/lib/vedeu/log/lockless_log_device_test.rb +0 -29
  121. data/test/lib/vedeu/log/log_test.rb +0 -48
  122. data/test/lib/vedeu/log/mono_logger_test.rb +0 -31
  123. data/test/lib/vedeu/log/timer_test.rb +0 -40
  124. data/test/lib/vedeu/models/menu_test.rb +0 -301
  125. data/test/lib/vedeu/models/menus_test.rb +0 -13
  126. data/test/lib/vedeu/output/html_char_test.rb +0 -106
@@ -0,0 +1,305 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ module Menus
6
+
7
+ describe Menu do
8
+
9
+ let(:described) { Vedeu::Menus::Menu }
10
+ let(:instance) { described.new(attributes) }
11
+ let(:attributes) {
12
+ {
13
+ collection: collection,
14
+ name: menu_name,
15
+ current: current,
16
+ selected: selected,
17
+ }
18
+ }
19
+ let(:collection) { ['hydrogen', 'carbon', 'nitrogen', 'oxygen'] }
20
+ let(:menu_name) { 'elements' }
21
+ let(:current) { 0 }
22
+ let(:selected) {}
23
+
24
+ describe '.menu' do
25
+ subject {
26
+ described.menu('elements') do
27
+ # ...
28
+ end
29
+ }
30
+
31
+ it { subject.must_be_instance_of(described) }
32
+
33
+ context 'when the block is not given' do
34
+ subject { described.menu }
35
+
36
+ it { proc { subject }.must_raise(Vedeu::Error::InvalidSyntax) }
37
+ end
38
+ end
39
+
40
+ describe '#initialize' do
41
+ it { instance.must_be_instance_of(described) }
42
+ it {
43
+ instance.instance_variable_get('@collection').must_equal(collection)
44
+ }
45
+ it { instance.instance_variable_get('@name').must_equal('elements') }
46
+ it { instance.instance_variable_get('@current').must_equal(0) }
47
+ it { instance.instance_variable_get('@selected').must_equal(nil) }
48
+ it do
49
+ instance.instance_variable_get('@repository').must_equal(Vedeu.menus)
50
+ end
51
+ end
52
+
53
+ describe 'accessors' do
54
+ it { instance.must_respond_to(:collection) }
55
+ it { instance.must_respond_to(:collection=) }
56
+ it { instance.must_respond_to(:current=) }
57
+ it { instance.must_respond_to(:name) }
58
+ it { instance.must_respond_to(:name=) }
59
+ end
60
+
61
+ describe '#current' do
62
+ subject { instance.current }
63
+
64
+ it 'returns the current index' do
65
+ subject.must_equal(0)
66
+ end
67
+ end
68
+
69
+ describe '#selected' do
70
+ subject { instance.selected }
71
+
72
+ it 'returns nil when no item is selected' do
73
+ subject.must_equal(nil)
74
+ end
75
+
76
+ it 'returns the selected index when an item is selected' do
77
+ instance.next_item
78
+ instance.select_item
79
+
80
+ subject.must_equal(1)
81
+ end
82
+ end
83
+
84
+ describe '#selected=' do
85
+ it { instance.must_respond_to(:selected=) }
86
+ end
87
+
88
+ describe '#current_item' do
89
+ subject { instance.current_item }
90
+
91
+ it 'returns the current item from the collection' do
92
+ subject.must_equal('hydrogen')
93
+ end
94
+
95
+ it 'when the current item has changed' do
96
+ instance.next_item
97
+ instance.next_item
98
+
99
+ subject.must_equal('nitrogen')
100
+ end
101
+ end
102
+
103
+ describe '#selected_item' do
104
+ subject { instance.selected_item }
105
+
106
+ it 'returns nil when nothing is selected' do
107
+ subject.must_equal(nil)
108
+ end
109
+
110
+ it 'returns the selected item from the collection' do
111
+ instance.next_item
112
+ instance.select_item
113
+
114
+ subject.must_equal('carbon')
115
+ end
116
+ end
117
+
118
+ describe '#items' do
119
+ it 'returns a collection of items' do
120
+ instance.items.must_equal(
121
+ [
122
+ [false, true, 'hydrogen'],
123
+ [false, false, 'carbon'],
124
+ [false, false, 'nitrogen'],
125
+ [false, false, 'oxygen']
126
+ ]
127
+ )
128
+ end
129
+
130
+ it 'returns a collection of items when the current has ' \
131
+ 'changed' do
132
+ instance.next_item
133
+ instance.items.must_equal(
134
+ [
135
+ [false, false, 'hydrogen'],
136
+ [false, true, 'carbon'],
137
+ [false, false, 'nitrogen'],
138
+ [false, false, 'oxygen']
139
+ ]
140
+ )
141
+ end
142
+
143
+ it 'returns a collection of items when an item is selected' do
144
+ instance.next_item
145
+ instance.select_item
146
+ instance.items.must_equal(
147
+ [
148
+ [false, false, 'hydrogen'],
149
+ [true, true, 'carbon'],
150
+ [false, false, 'nitrogen'],
151
+ [false, false, 'oxygen']
152
+ ]
153
+ )
154
+ end
155
+
156
+ it 'returns a collection of items when the current has ' \
157
+ 'changed and an item is selected' do
158
+ instance.next_item
159
+ instance.select_item
160
+ instance.next_item
161
+ instance.next_item
162
+ instance.items.must_equal(
163
+ [
164
+ [false, false, 'hydrogen'],
165
+ [true, false, 'carbon'],
166
+ [false, false, 'nitrogen'],
167
+ [false, true, 'oxygen']
168
+ ]
169
+ )
170
+ end
171
+ end
172
+
173
+ describe '#view' do
174
+ it 'returns a collection of items when the start position ' \
175
+ 'has changed' do
176
+ instance.top_item
177
+ instance.next_item
178
+ instance.view.must_equal(
179
+ [
180
+ [false, true, 'carbon'],
181
+ [false, false, 'nitrogen'],
182
+ [false, false, 'oxygen']
183
+ ]
184
+ )
185
+ end
186
+ end
187
+
188
+ describe '#top_item' do
189
+ it 'sets current to the index of the first item' do
190
+ instance.next_item
191
+ instance.top_item
192
+ instance.current.must_equal(0)
193
+ end
194
+
195
+ it 'returns the items' do
196
+ instance.top_item.must_equal(instance.items)
197
+ end
198
+ end
199
+
200
+ describe '#bottom_item' do
201
+ it 'sets current to the index of the last item' do
202
+ instance.bottom_item
203
+ instance.current.must_equal(3)
204
+ end
205
+
206
+ it 'returns the items' do
207
+ instance.bottom_item.must_equal(instance.items)
208
+ end
209
+ end
210
+
211
+ describe '#next_item' do
212
+ it 'sets the current to the index of the next item' do
213
+ instance.next_item
214
+ instance.current.must_equal(1)
215
+ end
216
+
217
+ it 'returns the items' do
218
+ instance.next_item.must_equal(instance.items)
219
+ end
220
+
221
+ it 'does not loop' do
222
+ instance.next_item
223
+ instance.next_item
224
+ instance.next_item
225
+ instance.next_item
226
+ instance.next_item
227
+ instance.current.must_equal(3)
228
+ end
229
+ end
230
+
231
+ describe '#prev_item' do
232
+ it 'does not loop' do
233
+ instance.prev_item
234
+ instance.current.must_equal(0)
235
+ end
236
+
237
+ it 'sets the current to the index of the previous item' do
238
+ instance.next_item
239
+ instance.next_item
240
+ instance.prev_item
241
+ instance.current.must_equal(1)
242
+ end
243
+
244
+ it 'returns the items' do
245
+ instance.prev_item.must_equal(instance.items)
246
+ end
247
+
248
+ it 'does not loop' do
249
+ instance.next_item
250
+ instance.next_item
251
+ instance.next_item
252
+ instance.prev_item
253
+ instance.prev_item
254
+ instance.current.must_equal(1)
255
+ end
256
+ end
257
+
258
+ describe '#select_item' do
259
+ it 'sets the selected index to the current index' do
260
+ instance.select_item
261
+ instance.selected.must_equal(0)
262
+ end
263
+
264
+ it 'sets the selected index to the current index' do
265
+ instance.next_item
266
+ instance.select_item
267
+ instance.selected.must_equal(1)
268
+ end
269
+
270
+ it 'returns the items' do
271
+ instance.select_item.must_equal(instance.items)
272
+ end
273
+ end
274
+
275
+ describe '#deselect_item' do
276
+ it 'sets the selected index to nil' do
277
+ instance.next_item
278
+ instance.next_item
279
+ instance.select_item
280
+ instance.deselect_item
281
+ instance.selected.must_equal(nil)
282
+ end
283
+
284
+ it 'returns the items' do
285
+ instance.deselect_item.must_equal(instance.items)
286
+ end
287
+ end
288
+
289
+ describe '#last' do
290
+ it 'returns the index of the last item' do
291
+ instance.last.must_equal(3)
292
+ end
293
+ end
294
+
295
+ describe '#size' do
296
+ it 'returns the collection size' do
297
+ instance.size.must_equal(4)
298
+ end
299
+ end
300
+
301
+ end # Menu
302
+
303
+ end # Menus
304
+
305
+ end # Vedeu
@@ -2,11 +2,11 @@ require 'test_helper'
2
2
 
3
3
  module Vedeu
4
4
 
5
- module Null
5
+ module Menus
6
6
 
7
- describe Menu do
7
+ describe Null do
8
8
 
9
- let(:described) { Vedeu::Null::Menu }
9
+ let(:described) { Vedeu::Menus::Null }
10
10
  let(:instance) { described.new(attributes) }
11
11
  let(:_name) { 'null_menu' }
12
12
  let(:attributes) {
@@ -23,8 +23,8 @@ module Vedeu
23
23
  it { instance.instance_variable_get('@name').must_equal(_name) }
24
24
  end
25
25
 
26
- end # Menu
26
+ end # Null
27
27
 
28
- end # Null
28
+ end # Menus
29
29
 
30
30
  end # Vedeu
@@ -0,0 +1,17 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ module Menus
6
+
7
+ describe Repository do
8
+
9
+ let(:described) { Vedeu::Menus::Repository }
10
+
11
+ it { described.must_respond_to(:menus) }
12
+
13
+ end # Repository
14
+
15
+ end # Menus
16
+
17
+ end # Vedeu
@@ -2,58 +2,62 @@ require 'test_helper'
2
2
 
3
3
  module Vedeu
4
4
 
5
- describe Cell do
6
-
7
- let(:described) { Vedeu::Cell }
8
- let(:instance) { described.new(attributes) }
9
- let(:attributes) {
10
- {
11
- colour: colour,
12
- style: style,
13
- value: _value,
14
- x: x,
15
- y: y,
5
+ module Models
6
+
7
+ describe Cell do
8
+
9
+ let(:described) { Vedeu::Models::Cell }
10
+ let(:instance) { described.new(attributes) }
11
+ let(:attributes) {
12
+ {
13
+ colour: colour,
14
+ style: style,
15
+ value: _value,
16
+ x: x,
17
+ y: y,
18
+ }
16
19
  }
17
- }
18
- let(:colour) { Vedeu::Colours::Colour.new(background: '#000000') }
19
- let(:style) {}
20
- let(:_value) {}
21
- let(:x) {}
22
- let(:y) {}
23
-
24
- describe '#initialize' do
25
- it { instance.must_be_instance_of(described) }
26
- it { instance.instance_variable_get('@colour').must_equal(colour) }
27
- it { instance.instance_variable_get('@style').must_equal(style) }
28
- it { instance.instance_variable_get('@value').must_equal(_value) }
29
- it { instance.instance_variable_get('@x').must_equal(x) }
30
- it { instance.instance_variable_get('@y').must_equal(y) }
31
- end
32
-
33
- describe 'accessors' do
34
- it { instance.must_respond_to(:colour) }
35
- it { instance.must_respond_to(:style) }
36
- it { instance.must_respond_to(:value) }
37
- it { instance.must_respond_to(:x) }
38
- it { instance.must_respond_to(:y) }
39
- end
40
-
41
- describe '#eql?' do
42
- let(:other) { described.new(value: nil) }
43
-
44
- subject { instance.eql?(other) }
45
-
46
- it { subject.must_respond_to(:==) }
47
-
48
- it { subject.must_equal(true) }
49
-
50
- context 'when different to other' do
51
- let(:other) { described.new(value: 'b') }
52
-
53
- it { subject.must_equal(false) }
20
+ let(:colour) { Vedeu::Colours::Colour.new(background: '#000000') }
21
+ let(:style) {}
22
+ let(:_value) {}
23
+ let(:x) {}
24
+ let(:y) {}
25
+
26
+ describe '#initialize' do
27
+ it { instance.must_be_instance_of(described) }
28
+ it { instance.instance_variable_get('@colour').must_equal(colour) }
29
+ it { instance.instance_variable_get('@style').must_equal(style) }
30
+ it { instance.instance_variable_get('@value').must_equal(_value) }
31
+ it { instance.instance_variable_get('@x').must_equal(x) }
32
+ it { instance.instance_variable_get('@y').must_equal(y) }
54
33
  end
55
- end
56
34
 
57
- end # Cell
35
+ describe 'accessors' do
36
+ it { instance.must_respond_to(:colour) }
37
+ it { instance.must_respond_to(:style) }
38
+ it { instance.must_respond_to(:value) }
39
+ it { instance.must_respond_to(:x) }
40
+ it { instance.must_respond_to(:y) }
41
+ end
42
+
43
+ describe '#eql?' do
44
+ let(:other) { described.new(value: nil) }
45
+
46
+ subject { instance.eql?(other) }
47
+
48
+ it { subject.must_respond_to(:==) }
49
+
50
+ it { subject.must_equal(true) }
51
+
52
+ context 'when different to other' do
53
+ let(:other) { described.new(value: 'b') }
54
+
55
+ it { subject.must_equal(false) }
56
+ end
57
+ end
58
+
59
+ end # Cell
60
+
61
+ end # Models
58
62
 
59
63
  end # Vedeu
@@ -2,66 +2,70 @@ require 'test_helper'
2
2
 
3
3
  module Vedeu
4
4
 
5
- describe Escape do
6
-
7
- let(:described) { Vedeu::Escape }
8
- let(:instance) { described.new(attributes) }
9
- let(:attributes) {
10
- {
11
- value: _value,
12
- position: position,
5
+ module Models
6
+
7
+ describe Escape do
8
+
9
+ let(:described) { Vedeu::Models::Escape }
10
+ let(:instance) { described.new(attributes) }
11
+ let(:attributes) {
12
+ {
13
+ value: _value,
14
+ position: position,
15
+ }
13
16
  }
14
- }
15
- let(:_value) { "\e[?25h" }
16
- let(:position) { [2, 6] }
17
+ let(:_value) { "\e[?25h" }
18
+ let(:position) { [2, 6] }
17
19
 
18
- describe '#initialize' do
19
- it { instance.must_be_instance_of(described) }
20
- it { instance.instance_variable_get('@value').must_equal(_value) }
21
- end
20
+ describe '#initialize' do
21
+ it { instance.must_be_instance_of(described) }
22
+ it { instance.instance_variable_get('@value').must_equal(_value) }
23
+ end
22
24
 
23
- describe 'accessors' do
24
- it { instance.must_respond_to(:value) }
25
- end
25
+ describe 'accessors' do
26
+ it { instance.must_respond_to(:value) }
27
+ end
26
28
 
27
- describe '#null' do
28
- it { instance.null.must_equal(nil) }
29
- it { instance.background.must_equal(nil) }
30
- it { instance.colour.must_equal(nil) }
31
- it { instance.foreground.must_equal(nil) }
32
- it { instance.style.must_equal(nil) }
33
- end
29
+ describe '#null' do
30
+ it { instance.null.must_equal(nil) }
31
+ it { instance.background.must_equal(nil) }
32
+ it { instance.colour.must_equal(nil) }
33
+ it { instance.foreground.must_equal(nil) }
34
+ it { instance.style.must_equal(nil) }
35
+ end
34
36
 
35
- describe '#eql?' do
36
- let(:other) { instance }
37
+ describe '#eql?' do
38
+ let(:other) { instance }
37
39
 
38
- subject { instance.eql?(other) }
40
+ subject { instance.eql?(other) }
39
41
 
40
- it { subject.must_equal(true) }
42
+ it { subject.must_equal(true) }
41
43
 
42
- context 'when different to other' do
43
- let(:other) { described.new(value: 'b') }
44
+ context 'when different to other' do
45
+ let(:other) { described.new(value: 'b') }
44
46
 
45
- it { subject.must_equal(false) }
47
+ it { subject.must_equal(false) }
48
+ end
49
+
50
+ it { instance.must_respond_to(:==) }
46
51
  end
47
52
 
48
- it { instance.must_respond_to(:==) }
49
- end
53
+ describe '#position' do
54
+ it { instance.position.must_be_instance_of(Vedeu::Geometry::Position) }
55
+ end
50
56
 
51
- describe '#position' do
52
- it { instance.position.must_be_instance_of(Vedeu::Geometry::Position) }
53
- end
57
+ describe '#value' do
58
+ it { instance.value.must_be_instance_of(String) }
59
+ end
54
60
 
55
- describe '#value' do
56
- it { instance.value.must_be_instance_of(String) }
57
- end
61
+ describe '#to_s' do
62
+ subject { instance.to_s }
58
63
 
59
- describe '#to_s' do
60
- subject { instance.to_s }
64
+ it { instance.must_respond_to(:to_str) }
65
+ end
61
66
 
62
- it { instance.must_respond_to(:to_str) }
63
- end
67
+ end # Escape
64
68
 
65
- end # Escape
69
+ end # Models
66
70
 
67
71
  end # Vedeu