vedeu 0.4.23 → 0.4.24
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/cursor_app.rb +9 -4
- data/lib/vedeu/bindings.rb +36 -9
- data/lib/vedeu/cursor/move.rb +49 -55
- data/lib/vedeu/geometry/coordinate.rb +51 -38
- data/lib/vedeu/geometry/geometry.rb +44 -16
- data/lib/vedeu/geometry/position.rb +2 -6
- data/lib/vedeu/input/mapper.rb +2 -0
- data/lib/vedeu/models/char.rb +2 -2
- data/lib/vedeu/output/all.rb +1 -1
- data/lib/vedeu/output/border.rb +8 -6
- data/lib/vedeu/output/clear.rb +17 -19
- data/lib/vedeu/output/refresh.rb +4 -10
- data/lib/vedeu/output/renderers/all.rb +1 -2
- data/lib/vedeu/output/renderers/terminal.rb +3 -1
- data/lib/vedeu/output/viewport.rb +8 -8
- data/lib/vedeu/repositories/collections/all.rb +33 -6
- data/lib/vedeu/repositories/registerable.rb +21 -0
- data/lib/vedeu/repositories/repositories/borders.rb +2 -1
- data/lib/vedeu/repositories/repositories/buffers.rb +2 -1
- data/lib/vedeu/repositories/repositories/cursors.rb +1 -1
- data/lib/vedeu/repositories/repositories/events_repository.rb +1 -1
- data/lib/vedeu/repositories/repositories/geometries.rb +2 -1
- data/lib/vedeu/repositories/repositories/groups.rb +1 -1
- data/lib/vedeu/repositories/repositories/interfaces_repository.rb +2 -1
- data/lib/vedeu/repositories/repositories/keymaps.rb +1 -1
- data/lib/vedeu/repositories/repositories/menus.rb +1 -1
- data/lib/vedeu/repositories/repository.rb +1 -10
- data/lib/vedeu/support/log.rb +27 -13
- data/lib/vedeu/support/terminal.rb +1 -1
- data/lib/vedeu/support/timer.rb +11 -4
- data/test/lib/vedeu/cursor/move_test.rb +9 -7
- data/test/lib/vedeu/geometry/coordinate_test.rb +29 -21
- data/test/lib/vedeu/geometry/geometry_test.rb +14 -2
- data/test/lib/vedeu/repositories/collections/all_test.rb +71 -0
- data/vedeu.gemspec +2 -5
- metadata +6 -22
- data/lib/vedeu/repositories/collections/chars.rb +0 -8
- data/lib/vedeu/repositories/collections/events.rb +0 -8
- data/lib/vedeu/repositories/collections/interfaces.rb +0 -8
- data/lib/vedeu/repositories/collections/keys.rb +0 -8
- data/lib/vedeu/repositories/collections/lines.rb +0 -8
- data/lib/vedeu/repositories/collections/streams.rb +0 -8
- data/test/lib/vedeu/repositories/collections/chars_test.rb +0 -16
- data/test/lib/vedeu/repositories/collections/events_test.rb +0 -16
- data/test/lib/vedeu/repositories/collections/interfaces_test.rb +0 -16
- data/test/lib/vedeu/repositories/collections/keys_test.rb +0 -16
- data/test/lib/vedeu/repositories/collections/lines_test.rb +0 -16
- data/test/lib/vedeu/repositories/collections/streams_test.rb +0 -16
@@ -26,8 +26,7 @@ module Vedeu
|
|
26
26
|
threads = storage.map do |renderer|
|
27
27
|
Thread.new(renderer) do
|
28
28
|
mutex.synchronize do
|
29
|
-
Vedeu.log(type: :debug,
|
30
|
-
message: "Rendering with: '#{renderer}' (#{storage.size} defined)")
|
29
|
+
Vedeu.log(type: :debug, message: "Rendering with: '#{renderer}'")
|
31
30
|
renderer.render(*args)
|
32
31
|
end
|
33
32
|
end
|
@@ -52,16 +52,16 @@ module Vedeu
|
|
52
52
|
def render
|
53
53
|
return [] unless visible?
|
54
54
|
|
55
|
-
Vedeu.
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
55
|
+
Vedeu::Timer.for(:output, "Rendering: #{name}") do
|
56
|
+
out = []
|
57
|
+
show[0...height].each_with_index do |line, iy|
|
58
|
+
line[0...width].each_with_index do |column, ix|
|
59
|
+
column.position = Vedeu::IndexPosition[iy, ix, by, bx]
|
60
|
+
out << column
|
61
|
+
end
|
62
62
|
end
|
63
|
+
out
|
63
64
|
end
|
64
|
-
out
|
65
65
|
end
|
66
66
|
|
67
67
|
# Returns a string representation of the viewport.
|
@@ -1,8 +1,35 @@
|
|
1
1
|
require 'vedeu/repositories/collection'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
# A collection of {Vedeu::Char} instances.
|
6
|
+
class Chars < Vedeu::Collection
|
7
|
+
|
8
|
+
end # Chars
|
9
|
+
|
10
|
+
# A collection of {Vedeu::Event} instances.
|
11
|
+
class Events < Vedeu::Collection
|
12
|
+
|
13
|
+
end # Events
|
14
|
+
|
15
|
+
# A collection of {Vedeu::Interface} instances.
|
16
|
+
class Interfaces < Vedeu::Collection
|
17
|
+
|
18
|
+
end # Interfaces
|
19
|
+
|
20
|
+
# A collection of {Vedeu::Key} instances.
|
21
|
+
class Keys < Vedeu::Collection
|
22
|
+
|
23
|
+
end # Keys
|
24
|
+
|
25
|
+
# A collection of {Vedeu::Line} instances.
|
26
|
+
class Lines < Vedeu::Collection
|
27
|
+
|
28
|
+
end # Lines
|
29
|
+
|
30
|
+
# A collection of {Vedeu::Stream} instances.
|
31
|
+
class Streams < Vedeu::Collection
|
32
|
+
|
33
|
+
end # Streams
|
34
|
+
|
35
|
+
end
|
@@ -7,12 +7,33 @@ module Vedeu
|
|
7
7
|
# These class methods are mixed into the repository.
|
8
8
|
module ClassMethods
|
9
9
|
|
10
|
+
# The null model is used when the repository cannot be found.
|
11
|
+
#
|
10
12
|
# @param klass [Class]
|
11
13
|
# @return [Symbol]
|
12
14
|
def null(klass)
|
13
15
|
define_method(:null_model) { klass }
|
14
16
|
end
|
15
17
|
|
18
|
+
# The real model is the usual model to use for a given repository.
|
19
|
+
#
|
20
|
+
# @param klass [Class]
|
21
|
+
# @return [Symbol]
|
22
|
+
def real(klass)
|
23
|
+
define_method(:real_model) { klass }
|
24
|
+
end
|
25
|
+
|
26
|
+
# Register a repository for storing models.
|
27
|
+
#
|
28
|
+
# @param model [Class]
|
29
|
+
# @param storage [Class|Hash]
|
30
|
+
# @return [Vedeu::Repository]
|
31
|
+
def register(model = nil, storage = {})
|
32
|
+
new(model, storage).tap do |klass|
|
33
|
+
Vedeu::Repositories.register(klass.repository)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
16
37
|
end # ClassMethods
|
17
38
|
|
18
39
|
# When this module is included in a class, provide ClassMethods as class
|
@@ -16,12 +16,13 @@ module Vedeu
|
|
16
16
|
#
|
17
17
|
# @return [Vedeu::Borders]
|
18
18
|
def reset!
|
19
|
-
@borders =
|
19
|
+
@borders = register(Vedeu::Border)
|
20
20
|
end
|
21
21
|
|
22
22
|
end
|
23
23
|
|
24
24
|
null Vedeu::Null::Border
|
25
|
+
# real Vedeu::Border
|
25
26
|
|
26
27
|
end # Borders
|
27
28
|
|
@@ -15,12 +15,13 @@ module Vedeu
|
|
15
15
|
#
|
16
16
|
# @return [Vedeu::Buffers]
|
17
17
|
def reset!
|
18
|
-
@buffers =
|
18
|
+
@buffers = register(Vedeu::Buffer)
|
19
19
|
end
|
20
20
|
|
21
21
|
end
|
22
22
|
|
23
23
|
null Vedeu::Null::Buffer
|
24
|
+
# real Vedeu::Buffer
|
24
25
|
|
25
26
|
end # Buffers
|
26
27
|
|
@@ -16,12 +16,13 @@ module Vedeu
|
|
16
16
|
#
|
17
17
|
# @return [Vedeu::Geometries]
|
18
18
|
def reset!
|
19
|
-
@geometries =
|
19
|
+
@geometries = register(Vedeu::Geometry)
|
20
20
|
end
|
21
21
|
|
22
22
|
end
|
23
23
|
|
24
24
|
null Vedeu::Null::Geometry
|
25
|
+
# real Vedeu::Geometry
|
25
26
|
|
26
27
|
end # Geometries
|
27
28
|
|
@@ -15,12 +15,13 @@ module Vedeu
|
|
15
15
|
#
|
16
16
|
# @return [Vedeu::InterfacesRepository]
|
17
17
|
def reset!
|
18
|
-
@interfaces =
|
18
|
+
@interfaces = register(Vedeu::Interface)
|
19
19
|
end
|
20
20
|
|
21
21
|
end
|
22
22
|
|
23
23
|
null Vedeu::Null::Interface
|
24
|
+
# real Vedeu::Interface
|
24
25
|
|
25
26
|
end # InterfacesRepository
|
26
27
|
|
@@ -22,15 +22,6 @@ module Vedeu
|
|
22
22
|
# @return [void]
|
23
23
|
attr_reader :storage
|
24
24
|
|
25
|
-
# @param model [Class]
|
26
|
-
# @param storage [Class|Hash]
|
27
|
-
# @return [Vedeu::Repository]
|
28
|
-
def self.register(model = nil, storage = {})
|
29
|
-
new(model, storage).tap do |klass|
|
30
|
-
Vedeu::Repositories.register(klass.repository)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
25
|
# Returns a new instance of Vedeu::Repository.
|
35
26
|
#
|
36
27
|
# @param model [Class]
|
@@ -45,7 +36,7 @@ module Vedeu
|
|
45
36
|
#
|
46
37
|
# @return [Class]
|
47
38
|
def repository
|
48
|
-
self.class
|
39
|
+
self.class
|
49
40
|
end
|
50
41
|
|
51
42
|
# @param name [String] The name of the stored model.
|
data/lib/vedeu/support/log.rb
CHANGED
@@ -94,7 +94,8 @@ module Vedeu
|
|
94
94
|
#
|
95
95
|
# @return [TrueClass]
|
96
96
|
def log(message:, force: false, type: :info)
|
97
|
-
logger.debug([message_type(type),
|
97
|
+
logger.debug([message_type(type),
|
98
|
+
message_body(type, message)]) if enabled? || force
|
98
99
|
end
|
99
100
|
|
100
101
|
# @return [TrueClass]
|
@@ -108,6 +109,8 @@ module Vedeu
|
|
108
109
|
|
109
110
|
private
|
110
111
|
|
112
|
+
# @param message [String]
|
113
|
+
# @param time [Time]
|
111
114
|
# @return [String]
|
112
115
|
def formatted_message(message, time = Time.now)
|
113
116
|
[timestamp(time.utc.iso8601), message, "\n"].join
|
@@ -123,9 +126,19 @@ module Vedeu
|
|
123
126
|
Vedeu::Configuration.log
|
124
127
|
end
|
125
128
|
|
129
|
+
# @param type [Symbol] The type of log message.
|
130
|
+
# @param body [String] The log message itself.
|
131
|
+
# @return [String]
|
132
|
+
def message_body(type, body)
|
133
|
+
Vedeu::Esc.send(message_types.fetch(type, :default).last) do
|
134
|
+
body
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
# @param type [Symbol] The type of log message.
|
126
139
|
# @return [String]
|
127
140
|
def message_type(type)
|
128
|
-
Vedeu::Esc.send(message_types.fetch(type, :default)) do
|
141
|
+
Vedeu::Esc.send(message_types.fetch(type, :default).first) do
|
129
142
|
"[#{type}]".ljust(9)
|
130
143
|
end
|
131
144
|
end
|
@@ -133,23 +146,24 @@ module Vedeu
|
|
133
146
|
# @return [Hash<Symbol => Symbol>]
|
134
147
|
def message_types
|
135
148
|
{
|
136
|
-
config: :yellow,
|
137
|
-
create: :green,
|
138
|
-
debug: :red,
|
139
|
-
drb: :blue,
|
140
|
-
event: :magenta,
|
141
|
-
info: :default,
|
142
|
-
input: :yellow,
|
143
|
-
output: :green,
|
144
|
-
store: :cyan,
|
145
|
-
test: :white,
|
146
|
-
update: :cyan,
|
149
|
+
config: [:light_yellow, :yellow],
|
150
|
+
create: [:light_green, :green],
|
151
|
+
debug: [:light_red, :red],
|
152
|
+
drb: [:light_blue, :blue],
|
153
|
+
event: [:light_magenta, :magenta],
|
154
|
+
info: [:white, :default],
|
155
|
+
input: [:light_yellow, :yellow],
|
156
|
+
output: [:light_green, :green],
|
157
|
+
store: [:light_cyan, :cyan],
|
158
|
+
test: [:light_white, :white],
|
159
|
+
update: [:light_cyan, :cyan],
|
147
160
|
}
|
148
161
|
end
|
149
162
|
|
150
163
|
# Returns a formatted (red, underlined) UTC timestamp,
|
151
164
|
# eg. 2014-10-24T12:34:56Z
|
152
165
|
#
|
166
|
+
# @param utc_time [String]
|
153
167
|
# @return [String]
|
154
168
|
def timestamp(utc_time)
|
155
169
|
return '' if @last_seen == utc_time
|
data/lib/vedeu/support/timer.rb
CHANGED
@@ -3,16 +3,19 @@ module Vedeu
|
|
3
3
|
# Measure the duration. Used for debugging.
|
4
4
|
class Timer
|
5
5
|
|
6
|
+
# @param type [Symbol]
|
6
7
|
# @param message [String]
|
7
8
|
# @param block [Proc]
|
8
9
|
# @return [void]
|
9
|
-
def self.for(message = '', &block)
|
10
|
-
new(message).measure(&block)
|
10
|
+
def self.for(type = :debug, message = '', &block)
|
11
|
+
new(type, message).measure(&block)
|
11
12
|
end
|
12
13
|
|
14
|
+
# @param type [Symbol]
|
13
15
|
# @param message [String]
|
14
16
|
# @return [Vedeu::Timer]
|
15
|
-
def initialize(message = '')
|
17
|
+
def initialize(type = :debug, message = '')
|
18
|
+
@type = type
|
16
19
|
@message = message
|
17
20
|
@started = Time.now.to_f
|
18
21
|
end
|
@@ -24,7 +27,7 @@ module Vedeu
|
|
24
27
|
|
25
28
|
elapsed = ((Time.now.to_f - started) * 1000).to_i
|
26
29
|
|
27
|
-
Vedeu.log(type:
|
30
|
+
Vedeu.log(type: type, message: "#{message} took #{elapsed}ms.")
|
28
31
|
|
29
32
|
work
|
30
33
|
end
|
@@ -39,6 +42,10 @@ module Vedeu
|
|
39
42
|
# @return [String]
|
40
43
|
attr_reader :message
|
41
44
|
|
45
|
+
# @!attribute [r] type
|
46
|
+
# @return [Symbol]
|
47
|
+
attr_reader :type
|
48
|
+
|
42
49
|
end # Timer
|
43
50
|
|
44
51
|
end # Vedeu
|
@@ -5,7 +5,8 @@ module Vedeu
|
|
5
5
|
describe Move do
|
6
6
|
|
7
7
|
let(:described) { Vedeu::Move }
|
8
|
-
let(:instance) { described.new(_name, dy, dx) }
|
8
|
+
let(:instance) { described.new(entity, _name, dy, dx) }
|
9
|
+
let(:entity) { Vedeu::Cursor }
|
9
10
|
let(:_name) { '' }
|
10
11
|
let(:dy) { 0 }
|
11
12
|
let(:dx) { 0 }
|
@@ -56,6 +57,7 @@ module Vedeu
|
|
56
57
|
|
57
58
|
describe '#initialize' do
|
58
59
|
it { instance.must_be_instance_of(described) }
|
60
|
+
it { instance.instance_variable_get('@entity').must_equal(entity) }
|
59
61
|
it { instance.instance_variable_get('@name').must_equal(_name) }
|
60
62
|
it { instance.instance_variable_get('@dy').must_equal(dy) }
|
61
63
|
it { instance.instance_variable_get('@dx').must_equal(dx) }
|
@@ -69,7 +71,7 @@ module Vedeu
|
|
69
71
|
Vedeu::Cursor.new(name: 'manganese', oy: 2, ox: 3, x: 8, y: 7).store
|
70
72
|
end
|
71
73
|
|
72
|
-
subject { described.by_name(direction, _name) }
|
74
|
+
subject { described.by_name(entity, direction, _name) }
|
73
75
|
|
74
76
|
it { subject.must_be_instance_of(Vedeu::Cursor) }
|
75
77
|
|
@@ -107,7 +109,7 @@ module Vedeu
|
|
107
109
|
describe '.down' do
|
108
110
|
let(:_name) { 'move_down' }
|
109
111
|
|
110
|
-
subject { described.down(_name) }
|
112
|
+
subject { described.down(entity, _name) }
|
111
113
|
|
112
114
|
it { subject.must_be_instance_of(Vedeu::Cursor) }
|
113
115
|
|
@@ -135,7 +137,7 @@ module Vedeu
|
|
135
137
|
describe '.left' do
|
136
138
|
let(:_name) { 'move_left' }
|
137
139
|
|
138
|
-
subject { described.left(_name) }
|
140
|
+
subject { described.left(entity, _name) }
|
139
141
|
|
140
142
|
it { subject.must_be_instance_of(Vedeu::Cursor) }
|
141
143
|
|
@@ -161,7 +163,7 @@ module Vedeu
|
|
161
163
|
describe '.right' do
|
162
164
|
let(:_name) { 'move_right' }
|
163
165
|
|
164
|
-
subject { described.right(_name) }
|
166
|
+
subject { described.right(entity, _name) }
|
165
167
|
|
166
168
|
it { subject.must_be_instance_of(Vedeu::Cursor) }
|
167
169
|
|
@@ -189,7 +191,7 @@ module Vedeu
|
|
189
191
|
describe '.up' do
|
190
192
|
let(:_name) { 'move_up' }
|
191
193
|
|
192
|
-
subject { described.up(_name) }
|
194
|
+
subject { described.up(entity, _name) }
|
193
195
|
|
194
196
|
it { subject.must_be_instance_of(Vedeu::Cursor) }
|
195
197
|
|
@@ -215,7 +217,7 @@ module Vedeu
|
|
215
217
|
describe '#origin' do
|
216
218
|
let(:_name) { 'move_origin' }
|
217
219
|
|
218
|
-
subject { described.origin(_name) }
|
220
|
+
subject { described.origin(entity, _name) }
|
219
221
|
|
220
222
|
it { subject.must_be_instance_of(Vedeu::Cursor) }
|
221
223
|
|
@@ -5,18 +5,34 @@ module Vedeu
|
|
5
5
|
describe Coordinate do
|
6
6
|
|
7
7
|
let(:described) { Vedeu::Coordinate }
|
8
|
-
let(:instance) { described.new(
|
8
|
+
let(:instance) { described.new(_name) }
|
9
|
+
let(:_name) { 'coordinate' }
|
9
10
|
let(:height) { 6 }
|
10
11
|
let(:width) { 6 }
|
11
12
|
let(:x) { 7 }
|
12
13
|
let(:y) { 5 }
|
13
14
|
|
15
|
+
let(:borders) { mock('Vedeu::Borders') }
|
16
|
+
let(:border) {
|
17
|
+
Vedeu::Border.new({
|
18
|
+
name: _name,
|
19
|
+
enabled: true
|
20
|
+
})
|
21
|
+
}
|
22
|
+
|
23
|
+
before do
|
24
|
+
Vedeu::Geometry.new({name: _name,
|
25
|
+
height: height,
|
26
|
+
width: width,
|
27
|
+
x: x,
|
28
|
+
y: y}).store
|
29
|
+
Vedeu.stubs(:borders).returns(borders)
|
30
|
+
borders.stubs(:by_name).returns(border)
|
31
|
+
end
|
32
|
+
|
14
33
|
describe '#initialize' do
|
15
34
|
it { instance.must_be_instance_of(described) }
|
16
|
-
it { instance.instance_variable_get('@
|
17
|
-
it { instance.instance_variable_get('@width').must_equal(width) }
|
18
|
-
it { instance.instance_variable_get('@x').must_equal(x) }
|
19
|
-
it { instance.instance_variable_get('@y').must_equal(y) }
|
35
|
+
it { instance.instance_variable_get('@name').must_equal(_name) }
|
20
36
|
end
|
21
37
|
|
22
38
|
describe '#yn' do
|
@@ -29,7 +45,7 @@ module Vedeu
|
|
29
45
|
end
|
30
46
|
|
31
47
|
context 'when the height is > 0' do
|
32
|
-
it { subject.must_equal(
|
48
|
+
it { subject.must_equal(9) }
|
33
49
|
end
|
34
50
|
end
|
35
51
|
|
@@ -43,16 +59,12 @@ module Vedeu
|
|
43
59
|
end
|
44
60
|
|
45
61
|
context 'when the width is > 0' do
|
46
|
-
it { subject.must_equal(
|
62
|
+
it { subject.must_equal(11) }
|
47
63
|
end
|
48
64
|
end
|
49
65
|
|
50
66
|
describe '#y_position' do
|
51
67
|
let(:index) { 0 }
|
52
|
-
let(:height) { 6 }
|
53
|
-
let(:width) { 6 }
|
54
|
-
let(:x) { 7 }
|
55
|
-
let(:y) { 5 }
|
56
68
|
|
57
69
|
subject { instance.y_position(index) }
|
58
70
|
|
@@ -61,18 +73,18 @@ module Vedeu
|
|
61
73
|
context 'with a negative index' do
|
62
74
|
let(:index) { -3 }
|
63
75
|
|
64
|
-
it { subject.must_equal(
|
76
|
+
it { subject.must_equal(6) }
|
65
77
|
end
|
66
78
|
|
67
79
|
context 'with an index greater than the maximum index for y' do
|
68
80
|
let(:index) { 9 }
|
69
81
|
|
70
|
-
it { subject.must_equal(
|
82
|
+
it { subject.must_equal(9) }
|
71
83
|
|
72
84
|
context 'but the height is negative' do
|
73
85
|
let(:height) { -2 }
|
74
86
|
|
75
|
-
it { subject.must_equal(
|
87
|
+
it { subject.must_equal(1) }
|
76
88
|
end
|
77
89
|
end
|
78
90
|
|
@@ -85,10 +97,6 @@ module Vedeu
|
|
85
97
|
|
86
98
|
describe '#x_position' do
|
87
99
|
let(:index) { 0 }
|
88
|
-
let(:height) { 6 }
|
89
|
-
let(:width) { 6 }
|
90
|
-
let(:x) { 7 }
|
91
|
-
let(:y) { 5 }
|
92
100
|
|
93
101
|
subject { instance.x_position(index) }
|
94
102
|
|
@@ -97,18 +105,18 @@ module Vedeu
|
|
97
105
|
context 'with a negative index' do
|
98
106
|
let(:index) { -3 }
|
99
107
|
|
100
|
-
it { subject.must_equal(
|
108
|
+
it { subject.must_equal(8) }
|
101
109
|
end
|
102
110
|
|
103
111
|
context 'with an index greater than the maximum index for x' do
|
104
112
|
let(:index) { 9 }
|
105
113
|
|
106
|
-
it { subject.must_equal(
|
114
|
+
it { subject.must_equal(11) }
|
107
115
|
|
108
116
|
context 'but the width is negative' do
|
109
117
|
let(:width) { -2 }
|
110
118
|
|
111
|
-
it { subject.must_equal(
|
119
|
+
it { subject.must_equal(3) }
|
112
120
|
end
|
113
121
|
end
|
114
122
|
|
@@ -20,7 +20,7 @@ module Vedeu
|
|
20
20
|
yn: yn,
|
21
21
|
}
|
22
22
|
}
|
23
|
-
let(:centred) {}
|
23
|
+
let(:centred) { false }
|
24
24
|
let(:height) {}
|
25
25
|
let(:maximised) { false }
|
26
26
|
let(:_name) {}
|
@@ -56,7 +56,10 @@ module Vedeu
|
|
56
56
|
|
57
57
|
it { subject.must_be_instance_of(String) }
|
58
58
|
|
59
|
-
it { subject.must_equal(
|
59
|
+
it { subject.must_equal(
|
60
|
+
'<Vedeu::Geometry x:1 xn:40 y:1 yn:12 centred:false maximise:false>'
|
61
|
+
)
|
62
|
+
}
|
60
63
|
end
|
61
64
|
|
62
65
|
describe '#maximise' do
|
@@ -93,6 +96,15 @@ module Vedeu
|
|
93
96
|
it { subject.maximised.must_equal(false) }
|
94
97
|
end
|
95
98
|
|
99
|
+
describe '#move' do
|
100
|
+
let(:dy) {}
|
101
|
+
let(:dx) {}
|
102
|
+
|
103
|
+
subject { instance.move(dy, dx) }
|
104
|
+
|
105
|
+
|
106
|
+
end
|
107
|
+
|
96
108
|
describe '#top, #right, #bottom, #left' do
|
97
109
|
context 'maximised is true' do
|
98
110
|
let(:attributes) { { maximised: true } }
|