vedeu 0.4.47 → 0.4.48
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/vedeu/all.rb +0 -1
- data/lib/vedeu/geometry/area.rb +4 -22
- data/lib/vedeu/geometry/dimension.rb +15 -21
- data/lib/vedeu/geometry/geometry.rb +1 -8
- data/lib/vedeu/models/interface.rb +2 -2
- data/lib/vedeu/null/geometry.rb +2 -11
- data/lib/vedeu/repositories/all.rb +2 -0
- data/lib/vedeu/{storage → repositories}/store.rb +0 -0
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/geometry/area_test.rb +27 -32
- data/test/lib/vedeu/geometry/dimension_test.rb +19 -16
- data/test/lib/vedeu/{storage → repositories}/store_test.rb +0 -0
- metadata +4 -15
- data/lib/vedeu/models/panel.rb +0 -23
- data/lib/vedeu/storage/all.rb +0 -5
- data/lib/vedeu/storage/associative_store.rb +0 -50
- data/lib/vedeu/storage/conveyor_store.rb +0 -72
- data/lib/vedeu/storage/fifo_store.rb +0 -40
- data/test/lib/vedeu/storage/associative_store_test.rb +0 -76
- data/test/lib/vedeu/storage/conveyor_store_test.rb +0 -140
- data/test/lib/vedeu/storage/fifo_store_test.rb +0 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5ceca13f9b58a2952c6d8805faf464dabeb3610
|
4
|
+
data.tar.gz: e588afaa1dfde0bd1d6f2297880621f5399fdb0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 45ef186c4d5da19d0d482a0ce89772f8de5e135dd974e6526370ffa13078b2d33ac905aec0abeaa863f930d62a96917613eb4fe1de3c63e9a6bf5c1550502293
|
7
|
+
data.tar.gz: e2c3aa1c381a0e4c9912f14bccbc66b2ec1242c53a9c20544bf3e894b6cb350e04bcdd786995f15382e195a565b5882ff61bb0bf7d36a33d26a72a086f8ffd51
|
data/lib/vedeu/all.rb
CHANGED
data/lib/vedeu/geometry/area.rb
CHANGED
@@ -41,36 +41,18 @@ module Vedeu
|
|
41
41
|
dn: attributes[:yn],
|
42
42
|
d_dn: attributes[:y_yn],
|
43
43
|
default: attributes[:y_default],
|
44
|
-
|
44
|
+
maximised: attributes[:maximised],
|
45
|
+
centred: attributes[:centred])
|
45
46
|
x_xn = Vedeu::Dimension.pair(d: attributes[:x],
|
46
47
|
dn: attributes[:xn],
|
47
48
|
d_dn: attributes[:x_xn],
|
48
49
|
default: attributes[:x_default],
|
49
|
-
|
50
|
+
maximised: attributes[:maximised],
|
51
|
+
centred: attributes[:centred])
|
50
52
|
|
51
|
-
from_dimensions(y_yn: y_yn, x_xn: x_xn)
|
52
|
-
end
|
53
|
-
|
54
|
-
# @param y_yn [Array<Fixnum>]
|
55
|
-
# @param x_xn [Array<Fixnum>]
|
56
|
-
# @return [Vedeu::Area]
|
57
|
-
def self.from_dimensions(y_yn:, x_xn:)
|
58
53
|
new(y: y_yn.first, yn: y_yn.last, x: x_xn.first, xn: x_xn.last)
|
59
54
|
end
|
60
55
|
|
61
|
-
# @param height [Fixnum]
|
62
|
-
# @param width [Fixnum]
|
63
|
-
# @return [Vedeu::Area]
|
64
|
-
def self.from_height_and_width(height:, width:)
|
65
|
-
new(y: 1, yn: height, x: 1, xn: width)
|
66
|
-
end
|
67
|
-
|
68
|
-
# @param (see #initialize)
|
69
|
-
# @return [Vedeu::Area]
|
70
|
-
def self.from_points(y:, yn:, x:, xn:)
|
71
|
-
new(y: y, yn: yn, x: x, xn: xn)
|
72
|
-
end
|
73
|
-
|
74
56
|
# Returns a new instance of Vedeu::Area.
|
75
57
|
#
|
76
58
|
# @param y [Fixnum]
|
@@ -59,9 +59,15 @@ module Vedeu
|
|
59
59
|
# @return [Fixnum|NilClass]
|
60
60
|
attr_reader :default
|
61
61
|
|
62
|
-
# @!attribute [r]
|
63
|
-
# @return [
|
64
|
-
attr_reader :
|
62
|
+
# @!attribute [r] maximised
|
63
|
+
# @return [Boolean]
|
64
|
+
attr_reader :maximised
|
65
|
+
alias_method :maximised?, :maximised
|
66
|
+
|
67
|
+
# @!attribute [r] centred
|
68
|
+
# @return [Boolean]
|
69
|
+
attr_reader :centred
|
70
|
+
alias_method :centred?, :centred
|
65
71
|
|
66
72
|
private
|
67
73
|
|
@@ -98,11 +104,6 @@ module Vedeu
|
|
98
104
|
end
|
99
105
|
end
|
100
106
|
|
101
|
-
# @return [Boolean]
|
102
|
-
def centred?
|
103
|
-
options[:centred]
|
104
|
-
end
|
105
|
-
|
106
107
|
# @return [Fixnum]
|
107
108
|
def centred_d
|
108
109
|
(default / 2) - (length / 2)
|
@@ -135,24 +136,17 @@ module Vedeu
|
|
135
136
|
end
|
136
137
|
end
|
137
138
|
|
138
|
-
# @return [Boolean]
|
139
|
-
def maximised?
|
140
|
-
options[:maximised]
|
141
|
-
end
|
142
|
-
|
143
139
|
# Returns the default options/attributes for this class.
|
144
140
|
#
|
145
141
|
# @return [Hash<Symbol => NilClass,Boolean>]
|
146
142
|
def defaults
|
147
143
|
{
|
148
|
-
d:
|
149
|
-
dn:
|
150
|
-
d_dn:
|
151
|
-
default:
|
152
|
-
|
153
|
-
|
154
|
-
maximised: false,
|
155
|
-
},
|
144
|
+
d: nil,
|
145
|
+
dn: nil,
|
146
|
+
d_dn: nil,
|
147
|
+
default: nil,
|
148
|
+
centred: false,
|
149
|
+
maximised: false,
|
156
150
|
}
|
157
151
|
end
|
158
152
|
|
@@ -162,16 +162,9 @@ module Vedeu
|
|
162
162
|
xn: _xn,
|
163
163
|
x_xn: @width,
|
164
164
|
x_default: Vedeu.width,
|
165
|
-
options: dimension_options,
|
166
|
-
)
|
167
|
-
end
|
168
|
-
|
169
|
-
# @return [Hash<Symbol => Boolean>]
|
170
|
-
def dimension_options
|
171
|
-
{
|
172
165
|
centred: centred,
|
173
166
|
maximised: maximised,
|
174
|
-
|
167
|
+
)
|
175
168
|
end
|
176
169
|
|
177
170
|
# Returns the row/line start position for the interface.
|
@@ -108,7 +108,7 @@ module Vedeu
|
|
108
108
|
def render
|
109
109
|
return [] unless visible?
|
110
110
|
|
111
|
-
Vedeu.trigger(:
|
111
|
+
Vedeu.trigger(:_hide_cursor_, name)
|
112
112
|
|
113
113
|
output = [
|
114
114
|
Vedeu::Clear::NamedInterface.render(name),
|
@@ -116,7 +116,7 @@ module Vedeu
|
|
116
116
|
Vedeu::Viewport.render(self),
|
117
117
|
]
|
118
118
|
|
119
|
-
Vedeu.trigger(:
|
119
|
+
Vedeu.trigger(:_show_cursor_, name)
|
120
120
|
|
121
121
|
output
|
122
122
|
end
|
data/lib/vedeu/null/geometry.rb
CHANGED
@@ -63,17 +63,8 @@ module Vedeu
|
|
63
63
|
|
64
64
|
# @return [Vedeu::Area]
|
65
65
|
def area
|
66
|
-
@area ||= Vedeu::Area.
|
67
|
-
|
68
|
-
|
69
|
-
# @return [Array<Fixnum>]
|
70
|
-
def x_xn
|
71
|
-
@x_xn ||= Vedeu::Dimension.pair(default: Vedeu.width)
|
72
|
-
end
|
73
|
-
|
74
|
-
# @return [Array<Fixnum>]
|
75
|
-
def y_yn
|
76
|
-
@y_yn ||= Vedeu::Dimension.pair(default: Vedeu.height)
|
66
|
+
@area ||= Vedeu::Area.from_attributes(y_default: Vedeu.height,
|
67
|
+
x_default: Vedeu.width)
|
77
68
|
end
|
78
69
|
|
79
70
|
end # Geometry
|
@@ -34,9 +34,11 @@ module Vedeu
|
|
34
34
|
|
35
35
|
end # Vedeu
|
36
36
|
|
37
|
+
require_relative 'store'
|
37
38
|
require_relative 'registerable'
|
38
39
|
require_relative 'collection'
|
39
40
|
require_relative 'collections/all'
|
40
41
|
require_relative 'model'
|
41
42
|
require_relative 'repositories/all'
|
42
43
|
require_relative 'repository'
|
44
|
+
|
File without changes
|
data/lib/vedeu/version.rb
CHANGED
@@ -31,40 +31,35 @@ module Vedeu
|
|
31
31
|
it { instance.instance_variable_get('@xn').must_equal(xn) }
|
32
32
|
end
|
33
33
|
|
34
|
-
describe '.
|
35
|
-
let(:
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
let(:
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
subject { described.from_points(y: y, yn: yn, x: x, xn: xn) }
|
34
|
+
describe '.from_attributes' do
|
35
|
+
let(:attributes) {
|
36
|
+
{
|
37
|
+
y: y,
|
38
|
+
yn: yn,
|
39
|
+
y_yn: y_yn,
|
40
|
+
y_default: y_default,
|
41
|
+
x: x,
|
42
|
+
xn: xn,
|
43
|
+
x_xn: x_xn,
|
44
|
+
x_default: x_default,
|
45
|
+
maximised: maximised,
|
46
|
+
centred: centred,
|
47
|
+
}
|
48
|
+
}
|
49
|
+
let(:y) {}
|
50
|
+
let(:yn) {}
|
51
|
+
let(:y_yn) {}
|
52
|
+
let(:y_default) {}
|
53
|
+
let(:x) {}
|
54
|
+
let(:xn) {}
|
55
|
+
let(:x_xn) {}
|
56
|
+
let(:x_default) {}
|
57
|
+
let(:maximised) {}
|
58
|
+
let(:centred) {}
|
59
|
+
|
60
|
+
subject { described.from_attributes(attributes) }
|
62
61
|
|
63
62
|
it { subject.must_be_instance_of(described) }
|
64
|
-
it { subject.instance_variable_get('@y').must_equal(y) }
|
65
|
-
it { subject.instance_variable_get('@yn').must_equal(yn) }
|
66
|
-
it { subject.instance_variable_get('@x').must_equal(x) }
|
67
|
-
it { subject.instance_variable_get('@xn').must_equal(xn) }
|
68
63
|
end
|
69
64
|
|
70
65
|
describe '#eql?' do
|
@@ -8,18 +8,20 @@ module Vedeu
|
|
8
8
|
let(:instance) { described.new(attributes) }
|
9
9
|
let(:attributes) {
|
10
10
|
{
|
11
|
-
d:
|
12
|
-
dn:
|
13
|
-
d_dn:
|
14
|
-
default:
|
15
|
-
|
11
|
+
d: d,
|
12
|
+
dn: dn,
|
13
|
+
d_dn: d_dn,
|
14
|
+
default: default,
|
15
|
+
maximised: maximised,
|
16
|
+
centred: centred,
|
16
17
|
}
|
17
18
|
}
|
18
|
-
let(:d)
|
19
|
-
let(:dn)
|
20
|
-
let(:d_dn)
|
21
|
-
let(:default)
|
22
|
-
let(:
|
19
|
+
let(:d) {}
|
20
|
+
let(:dn) {}
|
21
|
+
let(:d_dn) {}
|
22
|
+
let(:default) {}
|
23
|
+
let(:maximised) {}
|
24
|
+
let(:centred) {}
|
23
25
|
|
24
26
|
describe '#initialize' do
|
25
27
|
it { instance.must_be_instance_of(described) }
|
@@ -27,7 +29,8 @@ module Vedeu
|
|
27
29
|
it { instance.instance_variable_get('@dn').must_equal(dn) }
|
28
30
|
it { instance.instance_variable_get('@d_dn').must_equal(d_dn) }
|
29
31
|
it { instance.instance_variable_get('@default').must_equal(default) }
|
30
|
-
it { instance.instance_variable_get('@
|
32
|
+
it { instance.instance_variable_get('@maximised').must_equal(maximised) }
|
33
|
+
it { instance.instance_variable_get('@centred').must_equal(centred) }
|
31
34
|
end
|
32
35
|
|
33
36
|
describe '.pair' do
|
@@ -40,14 +43,14 @@ module Vedeu
|
|
40
43
|
it { subject.must_equal([15, 38]) }
|
41
44
|
|
42
45
|
context 'when maximised' do
|
43
|
-
let(:
|
44
|
-
let(:default)
|
46
|
+
let(:maximised) { true }
|
47
|
+
let(:default) { 80 }
|
45
48
|
|
46
49
|
it { subject.must_equal([1, 80]) }
|
47
50
|
end
|
48
51
|
|
49
52
|
context 'when centred and a length can be determined' do
|
50
|
-
let(:
|
53
|
+
let(:centred) { true }
|
51
54
|
let(:default) { 80 }
|
52
55
|
|
53
56
|
context 'when d and dn are given' do
|
@@ -87,7 +90,7 @@ module Vedeu
|
|
87
90
|
end
|
88
91
|
|
89
92
|
context 'when centred and a length can be determined' do
|
90
|
-
let(:
|
93
|
+
let(:centred) { true }
|
91
94
|
let(:default) { 80 }
|
92
95
|
|
93
96
|
context 'when d and dn are given' do
|
@@ -158,7 +161,7 @@ module Vedeu
|
|
158
161
|
end
|
159
162
|
|
160
163
|
context 'when centred and a length can be determined' do
|
161
|
-
let(:
|
164
|
+
let(:centred) { true }
|
162
165
|
let(:default) { 80 }
|
163
166
|
|
164
167
|
context 'when d and dn are given' do
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vedeu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.48
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gavin Laking
|
@@ -406,7 +406,6 @@ files:
|
|
406
406
|
- lib/vedeu/models/interface.rb
|
407
407
|
- lib/vedeu/models/line.rb
|
408
408
|
- lib/vedeu/models/menu.rb
|
409
|
-
- lib/vedeu/models/panel.rb
|
410
409
|
- lib/vedeu/models/stream.rb
|
411
410
|
- lib/vedeu/null/all.rb
|
412
411
|
- lib/vedeu/null/border.rb
|
@@ -466,11 +465,7 @@ files:
|
|
466
465
|
- lib/vedeu/repositories/repositories/keymaps.rb
|
467
466
|
- lib/vedeu/repositories/repositories/menus.rb
|
468
467
|
- lib/vedeu/repositories/repository.rb
|
469
|
-
- lib/vedeu/
|
470
|
-
- lib/vedeu/storage/associative_store.rb
|
471
|
-
- lib/vedeu/storage/conveyor_store.rb
|
472
|
-
- lib/vedeu/storage/fifo_store.rb
|
473
|
-
- lib/vedeu/storage/store.rb
|
468
|
+
- lib/vedeu/repositories/store.rb
|
474
469
|
- lib/vedeu/support/all.rb
|
475
470
|
- lib/vedeu/support/common.rb
|
476
471
|
- lib/vedeu/support/log.rb
|
@@ -609,10 +604,7 @@ files:
|
|
609
604
|
- test/lib/vedeu/repositories/repositories/keymaps_test.rb
|
610
605
|
- test/lib/vedeu/repositories/repositories/menus_test.rb
|
611
606
|
- test/lib/vedeu/repositories/repository_test.rb
|
612
|
-
- test/lib/vedeu/
|
613
|
-
- test/lib/vedeu/storage/conveyor_store_test.rb
|
614
|
-
- test/lib/vedeu/storage/fifo_store_test.rb
|
615
|
-
- test/lib/vedeu/storage/store_test.rb
|
607
|
+
- test/lib/vedeu/repositories/store_test.rb
|
616
608
|
- test/lib/vedeu/support/common_test.rb
|
617
609
|
- test/lib/vedeu/support/log_test.rb
|
618
610
|
- test/lib/vedeu/support/options_test.rb
|
@@ -780,10 +772,7 @@ test_files:
|
|
780
772
|
- test/lib/vedeu/repositories/repositories/keymaps_test.rb
|
781
773
|
- test/lib/vedeu/repositories/repositories/menus_test.rb
|
782
774
|
- test/lib/vedeu/repositories/repository_test.rb
|
783
|
-
- test/lib/vedeu/
|
784
|
-
- test/lib/vedeu/storage/conveyor_store_test.rb
|
785
|
-
- test/lib/vedeu/storage/fifo_store_test.rb
|
786
|
-
- test/lib/vedeu/storage/store_test.rb
|
775
|
+
- test/lib/vedeu/repositories/store_test.rb
|
787
776
|
- test/lib/vedeu/support/common_test.rb
|
788
777
|
- test/lib/vedeu/support/log_test.rb
|
789
778
|
- test/lib/vedeu/support/options_test.rb
|
data/lib/vedeu/models/panel.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
|
3
|
-
# Abstract interface class without the baggage.
|
4
|
-
#
|
5
|
-
# @api private
|
6
|
-
class Panel
|
7
|
-
|
8
|
-
# Returns a new instance of Vedeu::Panel.
|
9
|
-
#
|
10
|
-
# @return [Vedeu::Panel]
|
11
|
-
def initialize
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
# @return [Vedeu::Area]
|
17
|
-
def area
|
18
|
-
@area = Vedeu::Area.from_dimensions(y_yn: y_yn, x_xn: x_xn)
|
19
|
-
end
|
20
|
-
|
21
|
-
end # Panel
|
22
|
-
|
23
|
-
end # Vedeu
|
data/lib/vedeu/storage/all.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
|
3
|
-
# Name/Value storage.
|
4
|
-
#
|
5
|
-
# name: [value]
|
6
|
-
#
|
7
|
-
# @api private
|
8
|
-
class AssociativeStore
|
9
|
-
|
10
|
-
include Vedeu::Store
|
11
|
-
|
12
|
-
# Returns a new instance of Vedeu::AssociativeStore.
|
13
|
-
#
|
14
|
-
# @param storage [Hash]
|
15
|
-
# @return [Vedeu::AssociativeStore]
|
16
|
-
def initialize(storage = {})
|
17
|
-
@storage = storage
|
18
|
-
end
|
19
|
-
|
20
|
-
# @param name [String]
|
21
|
-
def load(name)
|
22
|
-
return nil if empty?
|
23
|
-
|
24
|
-
storage[name]
|
25
|
-
end
|
26
|
-
|
27
|
-
# @param data [Object]
|
28
|
-
# @param name [String|Symbol]
|
29
|
-
def save(data, name = nil)
|
30
|
-
if name
|
31
|
-
storage[name] = data
|
32
|
-
|
33
|
-
elsif data.respond_to?(:name)
|
34
|
-
storage[data.name] = data
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
storage
|
39
|
-
end
|
40
|
-
|
41
|
-
private
|
42
|
-
|
43
|
-
# @return [Hash]
|
44
|
-
def in_memory
|
45
|
-
{}
|
46
|
-
end
|
47
|
-
|
48
|
-
end # AssociativeStore
|
49
|
-
|
50
|
-
end # Vedeu
|
@@ -1,72 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
|
3
|
-
# Conveyor belt like storage. The belt can move forward (`load_next`) or
|
4
|
-
# backwards (`load_previous`), or a named entry can be retrieved.
|
5
|
-
#
|
6
|
-
# @api private
|
7
|
-
class ConveyorStore
|
8
|
-
|
9
|
-
include Vedeu::Store
|
10
|
-
|
11
|
-
# Returns a new instance of Vedeu::ConveyorStore.
|
12
|
-
#
|
13
|
-
# @param storage [Array]
|
14
|
-
# @return [Vedeu::ConveyorStore]
|
15
|
-
def initialize(storage = [])
|
16
|
-
@storage = storage
|
17
|
-
end
|
18
|
-
|
19
|
-
# @return [Object]
|
20
|
-
def load
|
21
|
-
storage.first
|
22
|
-
end
|
23
|
-
alias_method :current, :load
|
24
|
-
|
25
|
-
# @param name [String]
|
26
|
-
# @return [Object]
|
27
|
-
def load_named(name)
|
28
|
-
return nil if empty?
|
29
|
-
|
30
|
-
return nil unless storage.include?(name)
|
31
|
-
|
32
|
-
storage.rotate!(storage.index(name))
|
33
|
-
|
34
|
-
load
|
35
|
-
end
|
36
|
-
|
37
|
-
# @return [Object]
|
38
|
-
def load_next
|
39
|
-
storage.rotate!
|
40
|
-
|
41
|
-
load
|
42
|
-
end
|
43
|
-
|
44
|
-
# @return [Object]
|
45
|
-
def load_previous
|
46
|
-
storage.rotate!(-1)
|
47
|
-
|
48
|
-
load
|
49
|
-
end
|
50
|
-
|
51
|
-
# @param data [Object]
|
52
|
-
# @param front [Boolean]
|
53
|
-
def save(data, front = false)
|
54
|
-
if front
|
55
|
-
storage.push(data)
|
56
|
-
|
57
|
-
else
|
58
|
-
storage.unshift(data)
|
59
|
-
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
private
|
64
|
-
|
65
|
-
# @return [Array]
|
66
|
-
def in_memory
|
67
|
-
[]
|
68
|
-
end
|
69
|
-
|
70
|
-
end # ConveyorStore
|
71
|
-
|
72
|
-
end # Vedeu
|
@@ -1,40 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
|
3
|
-
# First-in first-out storage.
|
4
|
-
#
|
5
|
-
# in -> [3] -> [2] -> [1] -> out
|
6
|
-
#
|
7
|
-
# @api private
|
8
|
-
class FifoStore
|
9
|
-
|
10
|
-
include Vedeu::Store
|
11
|
-
|
12
|
-
# Returns a new instance of Vedeu::FifoStore.
|
13
|
-
#
|
14
|
-
# @param storage [Array]
|
15
|
-
# @return [Vedeu::FifoStore]
|
16
|
-
def initialize(storage = [])
|
17
|
-
@storage = storage
|
18
|
-
end
|
19
|
-
|
20
|
-
# @return [Object]
|
21
|
-
def load
|
22
|
-
storage.pop
|
23
|
-
end
|
24
|
-
|
25
|
-
# @param data [Object]
|
26
|
-
# @return [Array<Object>]
|
27
|
-
def save(data)
|
28
|
-
storage.unshift(data)
|
29
|
-
end
|
30
|
-
|
31
|
-
private
|
32
|
-
|
33
|
-
# @return [Array]
|
34
|
-
def in_memory
|
35
|
-
[]
|
36
|
-
end
|
37
|
-
|
38
|
-
end # FifoStore
|
39
|
-
|
40
|
-
end # Vedeu
|
@@ -1,76 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
|
5
|
-
describe AssociativeStore do
|
6
|
-
|
7
|
-
let(:described) { Vedeu::AssociativeStore }
|
8
|
-
let(:instance) { described.new(storage) }
|
9
|
-
let(:storage) { {} }
|
10
|
-
|
11
|
-
describe '#initialize' do
|
12
|
-
it { instance.must_be_instance_of(described) }
|
13
|
-
it { instance.instance_variable_get('@storage').must_equal(storage) }
|
14
|
-
end
|
15
|
-
|
16
|
-
describe '#load' do
|
17
|
-
let(:_name) {}
|
18
|
-
|
19
|
-
subject { instance.load(_name) }
|
20
|
-
|
21
|
-
context 'when the storage is empty' do
|
22
|
-
it { subject.must_equal(nil) }
|
23
|
-
end
|
24
|
-
|
25
|
-
context 'when the storage is not empty' do
|
26
|
-
let(:storage) { { hydrogen: '1', helium: '2' } }
|
27
|
-
|
28
|
-
context 'when the named entry exists' do
|
29
|
-
let(:_name) { :helium }
|
30
|
-
|
31
|
-
it { subject.must_equal('2') }
|
32
|
-
end
|
33
|
-
|
34
|
-
context 'when the named entry does not exist' do
|
35
|
-
let(:_name) { :beryllium }
|
36
|
-
|
37
|
-
it { subject.must_equal(nil) }
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
describe '#reset' do
|
43
|
-
subject { instance.reset }
|
44
|
-
|
45
|
-
it { subject.must_be_instance_of(Hash) }
|
46
|
-
it { subject.must_equal({}) }
|
47
|
-
end
|
48
|
-
|
49
|
-
describe '#save' do
|
50
|
-
let(:data) { [:some_data] }
|
51
|
-
let(:_name) {}
|
52
|
-
|
53
|
-
subject { instance.save(data, _name) }
|
54
|
-
|
55
|
-
context 'when a name is given' do
|
56
|
-
let(:_name) { :hydrogen }
|
57
|
-
|
58
|
-
it { subject.must_equal(hydrogen: [:some_data]) }
|
59
|
-
end
|
60
|
-
|
61
|
-
context 'when a name is not given' do
|
62
|
-
context 'when the data respond to name' do
|
63
|
-
let(:data) { ModelTestClass.new(name: 'helium')}
|
64
|
-
|
65
|
-
it { subject.key?('helium').must_equal(true) }
|
66
|
-
end
|
67
|
-
|
68
|
-
context 'when the data does not respond to name' do
|
69
|
-
it { subject.must_equal({}) }
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
end # AssociativeStore
|
75
|
-
|
76
|
-
end # Vedeu
|
@@ -1,140 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
|
5
|
-
describe ConveyorStore do
|
6
|
-
|
7
|
-
let(:described) { Vedeu::ConveyorStore }
|
8
|
-
let(:instance) { described.new(storage) }
|
9
|
-
let(:storage) { [] }
|
10
|
-
|
11
|
-
describe '#initialize' do
|
12
|
-
it { instance.must_be_instance_of(described) }
|
13
|
-
it { instance.instance_variable_get('@storage').must_equal(storage) }
|
14
|
-
end
|
15
|
-
|
16
|
-
describe '#load' do
|
17
|
-
subject { instance.load }
|
18
|
-
|
19
|
-
it { instance.must_respond_to(:current) }
|
20
|
-
|
21
|
-
context 'when the storage is empty' do
|
22
|
-
it { subject.must_equal(nil) }
|
23
|
-
end
|
24
|
-
|
25
|
-
context 'when the storage is not empty' do
|
26
|
-
let(:storage) { [:hydrogen] }
|
27
|
-
|
28
|
-
it { subject.must_equal(:hydrogen) }
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
describe '#load_named' do
|
33
|
-
let(:_name) {}
|
34
|
-
|
35
|
-
subject { instance.load_named(_name) }
|
36
|
-
|
37
|
-
context 'when the storage is empty' do
|
38
|
-
it { subject.must_equal(nil) }
|
39
|
-
end
|
40
|
-
|
41
|
-
context 'when the storage is not empty' do
|
42
|
-
let(:storage) { [:lithium, :helium, :hydrogen] }
|
43
|
-
|
44
|
-
context 'when the named entry exists' do
|
45
|
-
let(:_name) { :helium }
|
46
|
-
|
47
|
-
it { subject.must_equal(:helium) }
|
48
|
-
|
49
|
-
it 'rotates the store to the named entry' do
|
50
|
-
instance.storage.must_equal([:lithium, :helium, :hydrogen])
|
51
|
-
subject
|
52
|
-
instance.storage.must_equal([:helium, :hydrogen, :lithium])
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
context 'when the named entry does not exist' do
|
57
|
-
let(:_name) { :beryllium }
|
58
|
-
|
59
|
-
it { subject.must_equal(nil) }
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
describe '#load_next' do
|
65
|
-
subject { instance.load_next }
|
66
|
-
|
67
|
-
context 'when the storage is empty' do
|
68
|
-
it { subject.must_equal(nil) }
|
69
|
-
end
|
70
|
-
|
71
|
-
context 'when the storage is not empty' do
|
72
|
-
let(:storage) { [:lithium, :helium, :hydrogen] }
|
73
|
-
|
74
|
-
it { subject.must_equal(:helium) }
|
75
|
-
|
76
|
-
it 'rotates the store' do
|
77
|
-
instance.storage.must_equal([:lithium, :helium, :hydrogen])
|
78
|
-
instance.load_next
|
79
|
-
instance.load_next
|
80
|
-
instance.storage.must_equal([:hydrogen, :lithium, :helium])
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
describe '#load_previous' do
|
86
|
-
subject { instance.load_previous }
|
87
|
-
|
88
|
-
context 'when the storage is empty' do
|
89
|
-
it { subject.must_equal(nil) }
|
90
|
-
end
|
91
|
-
|
92
|
-
context 'when the storage is not empty' do
|
93
|
-
let(:storage) { [:lithium, :helium, :hydrogen] }
|
94
|
-
|
95
|
-
it { subject.must_equal(:hydrogen) }
|
96
|
-
|
97
|
-
it 'rotates the store' do
|
98
|
-
instance.storage.must_equal([:lithium, :helium, :hydrogen])
|
99
|
-
instance.load_previous
|
100
|
-
instance.load_previous
|
101
|
-
instance.storage.must_equal([:helium, :hydrogen, :lithium])
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
describe '#reset' do
|
107
|
-
subject { instance.reset }
|
108
|
-
|
109
|
-
it { subject.must_be_instance_of(Array) }
|
110
|
-
it { subject.must_equal([]) }
|
111
|
-
end
|
112
|
-
|
113
|
-
describe '#save' do
|
114
|
-
let(:data) { :beryllium }
|
115
|
-
let(:front) { false }
|
116
|
-
|
117
|
-
subject { instance.save(data, front) }
|
118
|
-
|
119
|
-
context 'when the storage is empty' do
|
120
|
-
it { subject.must_equal([:beryllium]) }
|
121
|
-
end
|
122
|
-
|
123
|
-
context 'when the storage is not empty' do
|
124
|
-
let(:storage) { [:lithium, :helium, :hydrogen] }
|
125
|
-
|
126
|
-
context 'and `front` is false' do
|
127
|
-
it { subject.must_equal([:beryllium, :lithium, :helium, :hydrogen]) }
|
128
|
-
end
|
129
|
-
|
130
|
-
context 'and `front` is true' do
|
131
|
-
let(:front) { true }
|
132
|
-
|
133
|
-
it { subject.must_equal([:lithium, :helium, :hydrogen, :beryllium]) }
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
end # ConveyorStore
|
139
|
-
|
140
|
-
end # Vedeu
|
@@ -1,54 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
|
5
|
-
describe FifoStore do
|
6
|
-
|
7
|
-
let(:described) { Vedeu::FifoStore }
|
8
|
-
let(:instance) { described.new(storage) }
|
9
|
-
let(:storage) { [] }
|
10
|
-
|
11
|
-
describe '#initialize' do
|
12
|
-
it { instance.must_be_instance_of(described) }
|
13
|
-
it { instance.instance_variable_get('@storage').must_equal(storage) }
|
14
|
-
end
|
15
|
-
|
16
|
-
describe '#load' do
|
17
|
-
subject { instance.load }
|
18
|
-
|
19
|
-
context 'when the storage is empty' do
|
20
|
-
it { subject.must_equal(nil) }
|
21
|
-
end
|
22
|
-
|
23
|
-
context 'when the storage is not empty' do
|
24
|
-
let(:storage) { [:lithium, :helium, :hydrogen] }
|
25
|
-
|
26
|
-
it { subject.must_equal(:hydrogen) }
|
27
|
-
|
28
|
-
it 'removes the item from storage on retrieval' do
|
29
|
-
instance.size.must_equal(3)
|
30
|
-
subject
|
31
|
-
instance.size.must_equal(2)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe '#reset' do
|
37
|
-
subject { instance.reset }
|
38
|
-
|
39
|
-
it { subject.must_be_instance_of(Array) }
|
40
|
-
it { subject.must_equal([]) }
|
41
|
-
end
|
42
|
-
|
43
|
-
describe '#save' do
|
44
|
-
let(:data) { :beryllium }
|
45
|
-
let(:storage) { [:lithium, :helium, :hydrogen] }
|
46
|
-
|
47
|
-
subject { instance.save(data) }
|
48
|
-
|
49
|
-
it { subject.must_equal([:beryllium, :lithium, :helium, :hydrogen]) }
|
50
|
-
end
|
51
|
-
|
52
|
-
end # FifoStore
|
53
|
-
|
54
|
-
end # Vedeu
|