vedeu 0.4.8 → 0.4.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,267 +4,98 @@ module Vedeu
4
4
 
5
5
  describe Geometry do
6
6
 
7
- let(:described) { Geometry.new(attributes) }
8
- let(:instance) { Geometry.new(attributes) }
9
- let(:attributes) { {} }
10
-
11
- before do
12
- IO.console.stubs(:winsize).returns([25, 80])
13
- end
7
+ let(:described) { Vedeu::Geometry }
8
+ let(:instance) { described.new(attributes) }
9
+ let(:attributes) {
10
+ {
11
+ centred: centred,
12
+ height: height,
13
+ name: _name,
14
+ width: width,
15
+ x: x,
16
+ xn: xn,
17
+ y: y,
18
+ yn: yn,
19
+ }
20
+ }
21
+ let(:centred) {}
22
+ let(:height) {}
23
+ let(:_name) {}
24
+ let(:width) {}
25
+ let(:x) {}
26
+ let(:xn) {}
27
+ let(:y) {}
28
+ let(:yn) {}
29
+
30
+ before { Terminal.stubs(:size).returns([12, 40]) }
14
31
 
15
32
  describe '#initialize' do
16
33
  it { instance.must_be_instance_of(Geometry) }
17
-
18
- context 'with default attributes' do
19
- it { instance.instance_variable_get('@attributes').must_equal({
20
- centred: false,
21
- client: nil,
22
- height: 25,
23
- name: '',
24
- width: 80,
25
- x: 1,
26
- xn: 80,
27
- y: 1,
28
- yn: 25,
29
- })
30
- }
31
- it { instance.instance_variable_get('@centred').must_equal(false) }
32
- it { instance.instance_variable_get('@height').must_equal(25) }
33
- it { instance.instance_variable_get('@name').must_equal('') }
34
- it { instance.instance_variable_get('@width').must_equal(80) }
35
- it { instance.instance_variable_get('@x').must_equal(1) }
36
- it { instance.instance_variable_get('@xn').must_equal(80) }
37
- it { instance.instance_variable_get('@y').must_equal(1) }
38
- it { instance.instance_variable_get('@yn').must_equal(25) }
39
- it { instance.instance_variable_get('@repository').must_equal(Vedeu.geometries) }
40
- end
34
+ it { instance.instance_variable_get('@attributes').must_equal(attributes) }
35
+ it { instance.instance_variable_get('@centred').must_equal(centred) }
36
+ it { instance.instance_variable_get('@height').must_equal(height) }
37
+ it { instance.instance_variable_get('@name').must_equal(_name) }
38
+ it { instance.instance_variable_get('@width').must_equal(width) }
39
+ it { instance.instance_variable_get('@x').must_equal(x) }
40
+ it { instance.instance_variable_get('@xn').must_equal(xn) }
41
+ it { instance.instance_variable_get('@y').must_equal(y) }
42
+ it { instance.instance_variable_get('@yn').must_equal(yn) }
43
+ it { instance.instance_variable_get('@repository').must_equal(Vedeu.geometries) }
41
44
  end
42
45
 
43
- describe '#y' do
44
- subject { instance.y }
45
-
46
- context 'when it is a proc' do
47
- let(:attributes) { { y: proc { 17 } } }
46
+ describe '#top, #right, #bottom, #left' do
47
+ context 'centred is true' do
48
+ let(:attributes) { { height: 6, width: 18, centred: true } }
48
49
 
49
- it { subject.must_equal(17) }
50
+ it { instance.top.must_equal(3) }
51
+ it { instance.right.must_equal(29) }
52
+ it { instance.bottom.must_equal(9) }
53
+ it { instance.left.must_equal(11) }
50
54
  end
51
55
 
52
- context 'when just an attribute' do
53
- let(:attributes) { { y: 19 } }
56
+ context 'centred is true and y is set, y is ignored' do
57
+ let(:attributes) { { height: 6, width: 18, centred: true, y: 4 } }
54
58
 
55
- it { subject.must_equal(19) }
59
+ it { instance.top.must_equal(3) }
60
+ it { instance.right.must_equal(29) }
61
+ it { instance.bottom.must_equal(9) }
62
+ it { instance.left.must_equal(11) }
56
63
  end
57
- end
58
-
59
- describe '#yn' do
60
- subject { instance.yn }
61
64
 
62
- context 'when it is a proc' do
63
- let(:attributes) { { yn: proc { 17 } } }
65
+ context 'centred is true and x is set, x is ignored' do
66
+ let(:attributes) { { height: 6, width: 18, centred: true, x: 4 } }
64
67
 
65
- it { subject.must_equal(17) }
68
+ it { instance.top.must_equal(3) }
69
+ it { instance.right.must_equal(29) }
70
+ it { instance.bottom.must_equal(9) }
71
+ it { instance.left.must_equal(11) }
66
72
  end
67
73
 
68
- context 'when just an attribute' do
69
- let(:attributes) { { yn: 19 } }
70
-
71
- it { subject.must_equal(19) }
72
- end
73
- end
74
+ context 'centred is false' do
75
+ let(:attributes) { { height: 6, width: 18 } }
74
76
 
75
- describe '#x' do
76
- it 'returns the value of x when it is a proc' do
77
- geometry = Geometry.new({ x: proc { 58 } })
78
- geometry.x.must_equal(58)
77
+ it { instance.top.must_equal(1) }
78
+ it { instance.right.must_equal(18) }
79
+ it { instance.bottom.must_equal(6) }
80
+ it { instance.left.must_equal(1) }
79
81
  end
80
82
 
81
- it 'returns the value of x when just an attribute' do
82
- geometry = Geometry.new({ x: 64 })
83
- geometry.x.must_equal(64)
84
- end
85
- end
86
-
87
- describe '#xn' do
88
- it 'returns the value of xn when it is a proc' do
89
- geometry = Geometry.new({ xn: proc { 58 } })
90
- geometry.xn.must_equal(58)
91
- end
92
-
93
- it 'returns the value of xn when just an attribute' do
94
- geometry = Geometry.new({ xn: 64 })
95
- geometry.xn.must_equal(64)
96
- end
97
- end
98
-
99
- describe '#width' do
100
- it 'returns the viewport width when the interface fits the terminal' do
101
- geometry = Geometry.new({ width: 60, height: 1, x: 5, y: 1 })
102
- geometry.width.must_equal(60)
103
- end
83
+ context 'centred is false and y is set' do
84
+ let(:attributes) { { height: 6, width: 18, y: 4 } }
104
85
 
105
- it 'returns the viewport width when the interface does not fit the ' \
106
- 'terminal' do
107
- IO.console.stub(:winsize, [25, 60]) do
108
- geometry = Geometry.new({ width: 60, height: 1, x: 5, y: 1 })
109
- geometry.width.must_equal(55)
110
- end
86
+ it { instance.top.must_equal(4) }
87
+ it { instance.right.must_equal(18) }
88
+ it { instance.bottom.must_equal(10) }
89
+ it { instance.left.must_equal(1) }
111
90
  end
112
91
 
113
- it 'returns an unusable viewport width when the terminal is tiny' do
114
- IO.console.stub(:winsize, [25, -10]) do
115
- geometry = Geometry.new({ width: 60, height: 1, x: 5, y: 1 })
116
- geometry.width.must_equal(1)
117
- end
118
- end
119
- end
120
-
121
- describe '#height' do
122
- it 'returns the viewport height when the interface fits the terminal' do
123
- geometry = Geometry.new({ width: 5, height: 20, x: 1, y: 5 })
124
- geometry.height.must_equal(20)
125
- end
126
-
127
- it 'returns the viewport height when the interface does not fit the ' \
128
- 'terminal' do
129
- IO.console.stub(:winsize, [15, 80]) do
130
- geometry = Geometry.new({ width: 5, height: 20, x: 1, y: 5 })
131
- geometry.height.must_equal(10)
132
- end
133
- end
134
-
135
- it 'returns an unusable viewport height when the terminal is tiny' do
136
- IO.console.stub(:winsize, [-10, 80]) do
137
- geometry = Geometry.new({ width: 60, height: 20, x: 1, y: 5 })
138
- geometry.height.must_equal(1)
139
- end
140
- end
141
- end
142
-
143
- describe '#top' do
144
- it 'centred is true' do
145
- console = IO.console
146
- console.stub :winsize, [12, 80] do
147
- geometry = Geometry.new({ height: 6, width: 18, centred: true })
148
- geometry.top.must_equal(3)
149
- end
150
- end
151
-
152
- it 'centred is false' do
153
- geometry = Geometry.new({ height: 6, width: 18 })
154
- geometry.top.must_equal(1)
155
- end
156
-
157
- it 'centred is false and y is set' do
158
- geometry = Geometry.new({ height: 6, width: 18, y: 4 })
159
- geometry.top.must_equal(4)
160
- end
161
- end
162
-
163
- describe '#north' do
164
- it 'returns the top minus the value when the value is provided' do
165
- geometry = Geometry.new({ height: 6, width: 18, y: 4 })
166
- geometry.north(2).must_equal(2)
167
- end
168
-
169
- it 'returns the top minus 1 without a value' do
170
- geometry = Geometry.new({ height: 6, width: 18, y: 4 })
171
- geometry.north.must_equal(3)
172
- end
173
- end
174
-
175
- describe '#left' do
176
- it 'centred is true' do
177
- console = IO.console
178
- console.stub :winsize, [25, 40] do
179
- geometry = Geometry.new({ height: 6, width: 18, centred: true })
180
- geometry.left.must_equal(11)
181
- end
182
- end
183
-
184
- it 'centred is false' do
185
- geometry = Geometry.new({ height: 6, width: 18 })
186
- geometry.left.must_equal(1)
187
- end
188
-
189
- it 'centred is false and x is set' do
190
- geometry = Geometry.new({ height: 6, width: 18, x: 5 })
191
- geometry.left.must_equal(5)
192
- end
193
- end
194
-
195
- describe '#west' do
196
- it 'returns the left minus the value when the value is provided' do
197
- geometry = Geometry.new({ height: 6, width: 18, x: 7 })
198
- geometry.west(2).must_equal(5)
199
- end
200
-
201
- it 'returns the left minus 1 without a value' do
202
- geometry = Geometry.new({ height: 6, width: 18, x: 7 })
203
- geometry.west.must_equal(6)
204
- end
205
- end
206
-
207
- describe '#bottom' do
208
- it 'centred is true' do
209
- console = IO.console
210
- console.stub :winsize, [20, 40] do
211
- geometry = Geometry.new({ height: 6, width: 18, centred: true })
212
- geometry.bottom.must_equal(13)
213
- end
214
- end
215
-
216
- it 'centred is false' do
217
- geometry = Geometry.new({ height: 6, width: 18 })
218
- geometry.bottom.must_equal(7)
219
- end
220
-
221
- it 'centred is false and y is set' do
222
- geometry = Geometry.new({ height: 6, width: 18, y: 5 })
223
- geometry.bottom.must_equal(11)
224
- end
225
- end
226
-
227
- describe '#south' do
228
- it 'returns the bottom plus the value when the value is provided' do
229
- geometry = Geometry.new({ height: 6, width: 18, y: 3 })
230
- geometry.south(2).must_equal(11)
231
- end
232
-
233
- it 'returns the bottom plus 1 without a value' do
234
- geometry = Geometry.new({ height: 6, width: 18, y: 3 })
235
- geometry.south.must_equal(10)
236
- end
237
- end
238
-
239
- describe '#right' do
240
- it 'centred is true' do
241
- console = IO.console
242
- console.stub :winsize, [25, 40] do
243
- geometry = Geometry.new({ height: 6, width: 18, centred: true })
244
- geometry.right.must_equal(29)
245
- end
246
- end
247
-
248
- it 'centred is false' do
249
- geometry = Geometry.new({ height: 6, width: 18 })
250
- geometry.right.must_equal(19)
251
- end
252
-
253
- it 'centred is false and x is set' do
254
- geometry = Geometry.new({ height: 6, width: 18, x: 5 })
255
- geometry.right.must_equal(23)
256
- end
257
- end
258
-
259
- describe '#east' do
260
- it 'returns the right plus the value when the value is provided' do
261
- geometry = Geometry.new({ height: 6, width: 18, x: 7 })
262
- geometry.east(2).must_equal(27)
263
- end
92
+ context 'centred is false and x is set' do
93
+ let(:attributes) { { height: 6, width: 18, x: 4 } }
264
94
 
265
- it 'returns the right plus 1 without a value' do
266
- geometry = Geometry.new({ height: 6, width: 18, x: 7 })
267
- geometry.east.must_equal(26)
95
+ it { instance.top.must_equal(1) }
96
+ it { instance.right.must_equal(22) }
97
+ it { instance.bottom.must_equal(6) }
98
+ it { instance.left.must_equal(4) }
268
99
  end
269
100
  end
270
101
 
@@ -58,18 +58,14 @@ module Vedeu
58
58
  end
59
59
  end
60
60
 
61
- describe '#==' do
62
- let(:other) {}
61
+ describe '#eql?' do
62
+ let(:other) { described.new(12, 19) }
63
63
 
64
- subject { instance == other }
64
+ subject { instance.eql?(other) }
65
65
 
66
- context 'when they are equal' do
67
- let(:other) { described.new(12, 19) }
66
+ it { subject.must_equal(true) }
68
67
 
69
- it { subject.must_equal(true) }
70
- end
71
-
72
- context 'when they are not equal' do
68
+ context 'when different to other' do
73
69
  let(:other) { described.new(2, 9) }
74
70
 
75
71
  it { subject.must_equal(false) }
@@ -33,22 +33,8 @@ module Vedeu
33
33
  it { instance.instance_variable_get('@y').must_equal(y) }
34
34
  end
35
35
 
36
- describe '#==' do
37
- let(:other) { instance }
38
-
39
- subject { instance.==(other) }
40
-
41
- it { subject.must_equal(true) }
42
-
43
- context 'when different to other' do
44
- let(:other) { described.new({}) }
45
-
46
- it { subject.must_equal(false) }
47
- end
48
- end
49
-
50
36
  describe '#eql?' do
51
- let(:other) { instance }
37
+ let(:other) { described.new({ background: '#000000' }) }
52
38
 
53
39
  subject { instance.eql?(other) }
54
40
 
@@ -43,6 +43,20 @@ module Vedeu
43
43
  it { instance.must_respond_to(:value) }
44
44
  end
45
45
 
46
+ describe '#eql?' do
47
+ let(:other) { instance }
48
+
49
+ subject { instance.eql?(other) }
50
+
51
+ it { subject.must_equal(true) }
52
+
53
+ context 'when different to other' do
54
+ let(:other) { described.new({ value: 'b' }) }
55
+
56
+ it { subject.must_equal(false) }
57
+ end
58
+ end
59
+
46
60
  describe '#inspect' do
47
61
  let(:colour) { Vedeu::Colour.new({ foreground: '#00ff00',
48
62
  background: '#005500' }) }
@@ -42,6 +42,14 @@ module Vedeu
42
42
  end
43
43
  end
44
44
 
45
+ describe '#background=' do
46
+ let(:value) { '#000000' }
47
+
48
+ subject { instance.background=(value) }
49
+
50
+ it { subject.must_equal(value) }
51
+ end
52
+
45
53
  describe '#foreground' do
46
54
  subject { instance.foreground }
47
55
 
@@ -66,6 +74,14 @@ module Vedeu
66
74
  end
67
75
  end
68
76
 
77
+ describe '#foreground=' do
78
+ let(:value) { '#ff0000' }
79
+
80
+ subject { instance.foreground=(value) }
81
+
82
+ it { subject.must_equal(value) }
83
+ end
84
+
69
85
  describe '#to_s' do
70
86
  subject { instance.to_s }
71
87
 
@@ -32,13 +32,15 @@ module Vedeu
32
32
  end
33
33
 
34
34
  describe '#initialize' do
35
- it { instance.must_be_instance_of(Compositor) }
35
+ it { instance.must_be_instance_of(described) }
36
36
  it { instance.instance_variable_get('@name').must_equal(_name) }
37
37
  end
38
38
 
39
39
  describe '.compose' do
40
40
  subject { described.compose(_name) }
41
41
 
42
+ it { subject.must_be_instance_of(Array) }
43
+ it { subject.first.must_be_instance_of(Vedeu::Interface) }
42
44
  end
43
45
 
44
46
  end # Compositor