vedeu 0.8.4 → 0.8.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. checksums.yaml +4 -4
  2. data/TODO.md +4 -0
  3. data/docs/dsl.md +1 -11
  4. data/docs/dsl/by_method/geometry/align.md +1 -0
  5. data/docs/dsl/by_method/geometry/align_bottom.md +40 -0
  6. data/docs/dsl/by_method/geometry/align_centre.md +40 -0
  7. data/docs/dsl/by_method/geometry/align_left.md +40 -0
  8. data/docs/dsl/by_method/geometry/align_middle.md +40 -0
  9. data/docs/dsl/by_method/geometry/align_right.md +40 -0
  10. data/docs/dsl/by_method/geometry/align_top.md +40 -0
  11. data/docs/dsl/by_method/geometry/columns.md +1 -0
  12. data/docs/dsl/by_method/geometry/height.md +0 -0
  13. data/docs/dsl/by_method/geometry/horizontal_alignment.md +1 -0
  14. data/docs/dsl/by_method/geometry/rows.md +1 -0
  15. data/docs/dsl/by_method/geometry/vertical_alignment.md +1 -0
  16. data/docs/dsl/by_method/geometry/width.md +0 -0
  17. data/docs/dsl/by_method/geometry/x.md +1 -0
  18. data/docs/dsl/by_method/geometry/xn.md +1 -0
  19. data/docs/dsl/by_method/geometry/y.md +1 -0
  20. data/docs/dsl/by_method/geometry/yn.md +1 -0
  21. data/docs/dsl/by_method/render.md +5 -1
  22. data/docs/dsl/by_method/renders.md +31 -1
  23. data/docs/dsl/by_method/view.md +26 -0
  24. data/docs/dsl/by_method/view/stream.md +18 -0
  25. data/docs/dsl/by_method/views.md +32 -1
  26. data/docs/events/by_name/set_border_caption.md +2 -4
  27. data/docs/events/by_name/set_border_title.md +2 -4
  28. data/examples/views/empty_template.rb +0 -4
  29. data/examples/views/full_screen.rb +30 -5
  30. data/examples/views/misc_view.rb +464 -0
  31. data/examples/views/wordwrap.rb +72 -0
  32. data/examples/views/wordwrap.txt +8 -0
  33. data/integrations/dsl_app_021.rb +127 -0
  34. data/integrations/dsl_app_022.rb +133 -0
  35. data/integrations/expected/342_streams.out +1 -1
  36. data/integrations/expected/dsl_app_001.out +1 -1
  37. data/integrations/expected/dsl_app_002.out +1 -1
  38. data/integrations/expected/dsl_app_003.out +1 -1
  39. data/integrations/expected/dsl_app_004.out +1 -1
  40. data/integrations/expected/dsl_app_005.out +1 -1
  41. data/integrations/expected/dsl_app_006.out +1 -1
  42. data/integrations/expected/dsl_app_007.out +1 -1
  43. data/integrations/expected/dsl_app_008.out +1 -1
  44. data/integrations/expected/dsl_app_009.out +1 -1
  45. data/integrations/expected/dsl_app_010.out +1 -1
  46. data/integrations/expected/dsl_app_011.out +1 -1
  47. data/integrations/expected/dsl_app_012.out +1 -1
  48. data/integrations/expected/dsl_app_013.out +1 -1
  49. data/integrations/expected/dsl_app_014.out +1 -1
  50. data/integrations/expected/dsl_app_015.out +1 -1
  51. data/integrations/expected/dsl_app_016.out +1 -1
  52. data/integrations/expected/dsl_app_021.out +1 -0
  53. data/integrations/expected/dsl_app_022.out +1 -0
  54. data/integrations/support/test_interface_021.rb +7 -0
  55. data/integrations/support/test_interface_022.rb +15 -0
  56. data/lib/vedeu/all.rb +4 -2
  57. data/lib/vedeu/borders/border.rb +22 -6
  58. data/lib/vedeu/borders/repository.rb +4 -8
  59. data/lib/vedeu/buffers/buffer.rb +9 -6
  60. data/lib/vedeu/buffers/empty.rb +26 -23
  61. data/lib/vedeu/buffers/view.rb +44 -41
  62. data/lib/vedeu/cells/cursor.rb +0 -2
  63. data/lib/vedeu/cells/empty.rb +0 -1
  64. data/lib/vedeu/cells/escape.rb +0 -2
  65. data/lib/vedeu/coercers/alignment.rb +58 -8
  66. data/lib/vedeu/coercers/horizontal_alignment.rb +13 -9
  67. data/lib/vedeu/coercers/vertical_alignment.rb +13 -8
  68. data/lib/vedeu/common.rb +1 -1
  69. data/lib/vedeu/configuration/configuration.rb +41 -3
  70. data/lib/vedeu/cursors/coordinate.rb +1 -3
  71. data/lib/vedeu/cursors/cursor.rb +2 -6
  72. data/lib/vedeu/dsl/all.rb +1 -2
  73. data/lib/vedeu/dsl/border.rb +6 -6
  74. data/lib/vedeu/dsl/elements.rb +2 -2
  75. data/lib/vedeu/dsl/geometry.rb +7 -7
  76. data/lib/vedeu/dsl/{string → helpers}/align.rb +0 -0
  77. data/lib/vedeu/dsl/helpers/all.rb +17 -0
  78. data/lib/vedeu/dsl/{attributes.rb → helpers/attributes.rb} +0 -0
  79. data/lib/vedeu/dsl/{string → helpers}/text.rb +0 -0
  80. data/lib/vedeu/dsl/{string → helpers}/truncate.rb +0 -0
  81. data/lib/vedeu/dsl/{string → helpers}/wordwrap.rb +0 -0
  82. data/lib/vedeu/dsl/view.rb +11 -19
  83. data/lib/vedeu/dsl/views.rb +16 -106
  84. data/lib/vedeu/geometries/all.rb +0 -1
  85. data/lib/vedeu/geometries/area/area.rb +6 -12
  86. data/lib/vedeu/geometries/area/dimension.rb +21 -44
  87. data/lib/vedeu/geometries/dsl/all.rb +0 -1
  88. data/lib/vedeu/geometries/dsl/dsl.rb +22 -31
  89. data/lib/vedeu/geometries/geometry.rb +6 -0
  90. data/lib/vedeu/geometries/position.rb +6 -3
  91. data/lib/vedeu/geometries/repository.rb +1 -1
  92. data/lib/vedeu/input/mouse.rb +1 -0
  93. data/lib/vedeu/logging/log.rb +3 -6
  94. data/lib/vedeu/menus/dsl.rb +4 -5
  95. data/lib/vedeu/output/compressor.rb +11 -1
  96. data/lib/vedeu/output/viewport.rb +59 -59
  97. data/lib/vedeu/presentation/all.rb +1 -2
  98. data/lib/vedeu/presentation/colour.rb +75 -3
  99. data/lib/vedeu/{geometries/positionable.rb → presentation/position.rb} +4 -4
  100. data/lib/vedeu/presentation/presentation.rb +1 -3
  101. data/lib/vedeu/presentation/styles.rb +16 -1
  102. data/lib/vedeu/repositories/all.rb +0 -1
  103. data/lib/vedeu/sentence.rb +91 -0
  104. data/lib/vedeu/support/point.rb +72 -0
  105. data/lib/vedeu/terminal/terminal.rb +11 -53
  106. data/lib/vedeu/version.rb +1 -1
  107. data/lib/vedeu/views/composition.rb +11 -1
  108. data/lib/vedeu/views/default_attributes.rb +2 -0
  109. data/lib/vedeu/views/line.rb +16 -1
  110. data/lib/vedeu/views/stream.rb +16 -1
  111. data/lib/vedeu/views/view.rb +25 -17
  112. data/test/lib/vedeu/borders/border_test.rb +20 -2
  113. data/test/lib/vedeu/buffers/buffer_test.rb +15 -2
  114. data/test/lib/vedeu/buffers/empty_test.rb +51 -18
  115. data/test/lib/vedeu/buffers/view_test.rb +2 -2
  116. data/test/lib/vedeu/coercers/alignment_test.rb +32 -0
  117. data/test/lib/vedeu/coercers/horizontal_alignment_test.rb +16 -0
  118. data/test/lib/vedeu/coercers/vertical_alignment_test.rb +16 -0
  119. data/test/lib/vedeu/cursors/cursor_test.rb +4 -4
  120. data/test/lib/vedeu/cursors/dsl_test.rb +35 -21
  121. data/test/lib/vedeu/dsl/elements_test.rb +94 -2
  122. data/test/lib/vedeu/dsl/{string → helpers}/align_test.rb +0 -0
  123. data/test/lib/vedeu/dsl/{attributes_test.rb → helpers/attributes_test.rb} +0 -0
  124. data/test/lib/vedeu/dsl/{string → helpers}/text_test.rb +0 -0
  125. data/test/lib/vedeu/dsl/{string → helpers}/truncate_test.rb +0 -0
  126. data/test/lib/vedeu/dsl/{string → helpers}/wordwrap_test.rb +0 -0
  127. data/test/lib/vedeu/dsl/view_test.rb +22 -4
  128. data/test/lib/vedeu/dsl/views_test.rb +8 -5
  129. data/test/lib/vedeu/geometries/dsl/dsl_test.rb +2 -159
  130. data/test/lib/vedeu/geometries/position_test.rb +118 -60
  131. data/test/lib/vedeu/input/mouse_test.rb +1 -6
  132. data/test/lib/vedeu/logging/log_test.rb +14 -3
  133. data/test/lib/vedeu/presentation/colour_test.rb +77 -0
  134. data/test/lib/vedeu/{geometries/positionable_test.rb → presentation/position_test.rb} +4 -4
  135. data/test/lib/vedeu/sentence_test.rb +49 -0
  136. data/test/lib/vedeu/support/point_test.rb +139 -0
  137. data/test/lib/vedeu/terminal/terminal_test.rb +3 -44
  138. data/test/lib/vedeu/views/composition_test.rb +24 -4
  139. data/test/lib/vedeu/views/default_attributes_test.rb +10 -2
  140. data/test/lib/vedeu/views/view_test.rb +8 -15
  141. data/test/support/examples/material_colours_app.rb +0 -6
  142. data/vedeu.gemspec +1 -1
  143. metadata +58 -38
  144. data/examples/views/lines_line_stream.rb +0 -95
  145. data/examples/views/lines_line_streams.rb +0 -75
  146. data/examples/views/lines_line_streams_stream.rb +0 -78
  147. data/examples/views/lines_line_streams_stream_stream.rb +0 -50
  148. data/examples/views/lines_streams.rb +0 -93
  149. data/lib/vedeu/dsl/string/all.rb +0 -16
  150. data/lib/vedeu/geometries/dsl/validator.rb +0 -62
  151. data/lib/vedeu/presentation/background.rb +0 -54
  152. data/lib/vedeu/presentation/foreground.rb +0 -54
  153. data/lib/vedeu/repositories/parent.rb +0 -34
  154. data/test/lib/vedeu/geometries/dsl/validator_test.rb +0 -85
  155. data/test/lib/vedeu/presentation/background_test.rb +0 -74
  156. data/test/lib/vedeu/presentation/foreground_test.rb +0 -75
@@ -8,8 +8,16 @@ module Vedeu
8
8
  module Terminal
9
9
 
10
10
  include Vedeu::Terminal::Mode
11
+ extend Forwardable
11
12
  extend self
12
13
 
14
+ def_delegators Vedeu::Configuration,
15
+ :height,
16
+ :width
17
+
18
+ alias_method :tyn, :height
19
+ alias_method :txn, :width
20
+
13
21
  # Opens a terminal screen in either `raw` or `cooked` mode. On
14
22
  # exit, attempts to restore the screen. See
15
23
  # {Vedeu::Terminal#restore_screen}.
@@ -132,59 +140,15 @@ module Vedeu
132
140
  def origin
133
141
  1
134
142
  end
135
- alias_method :x, :origin
136
- alias_method :y, :origin
137
143
  alias_method :tx, :origin
138
144
  alias_method :ty, :origin
139
145
 
140
- # {include:file:docs/dsl/by_method/width.md}
141
- # @return [Fixnum]
142
- def width
143
- return Vedeu.config.drb_width if Vedeu.config.drb?
144
- return Vedeu.config.width if Vedeu.config.width
145
-
146
- size[-1]
147
- end
148
- alias_method :xn, :width
149
- alias_method :txn, :width
150
-
151
- # {include:file:docs/dsl/by_method/height.md}
152
- # @return [Fixnum]
153
- def height
154
- return Vedeu.config.drb_height if Vedeu.config.drb?
155
- return Vedeu.config.height if Vedeu.config.height
156
-
157
- size[0]
158
- end
159
- alias_method :yn, :height
160
- alias_method :tyn, :height
161
-
162
146
  # Returns a tuple containing the height and width of the current
163
147
  # terminal.
164
148
  #
165
- # @note
166
- # If the terminal is a odd number of characters in height or
167
- # width, then 1 is deducted from the dimension to make it even.
168
- # For example; the actual terminal is height: 37, width: 145,
169
- # then the reported size will be 36, 144 respectively.
170
- #
171
- # This is done to make it easier for client applications to
172
- # divide the terminal space up when defining interfaces or
173
- # views, leading to more consistent rendering.
174
- #
175
- # If the client application is using the
176
- # {Vedeu::Geometries::Grid#rows} or
177
- # {Vedeu::Geometries::Grid#columns} helpers, the dimensions are
178
- # made more consistent using this approach.
179
- #
180
- # @return [Array]
149
+ # @return [Array<Fixnum>]
181
150
  def size
182
- h, w = console.winsize
183
-
184
- h = (h.even? ? h : h - 1)
185
- w = (w.even? ? w : w - 1)
186
-
187
- [h, w]
151
+ console.winsize
188
152
  end
189
153
 
190
154
  # Provides our gateway into the wonderful rainbow-filled world of
@@ -197,16 +161,10 @@ module Vedeu
197
161
 
198
162
  end # Terminal
199
163
 
200
- # @!method height
201
- # @see Vedeu::Terminal#height
202
164
  # @!method resize
203
165
  # @see Vedeu::Terminal#resize
204
- # @!method width
205
- # @see Vedeu::Terminal#width
206
166
  def_delegators Vedeu::Terminal,
207
- :height,
208
- :resize,
209
- :width
167
+ :resize
210
168
 
211
169
  # :nocov:
212
170
 
data/lib/vedeu/version.rb CHANGED
@@ -3,6 +3,6 @@
3
3
  module Vedeu
4
4
 
5
5
  # The current version of Vedeu.
6
- VERSION = '0.8.4'
6
+ VERSION = '0.8.5'
7
7
 
8
8
  end
@@ -43,7 +43,7 @@ module Vedeu
43
43
  end
44
44
  alias_method :<<, :add
45
45
 
46
- # @return [Hash]
46
+ # @return [Hash<Symbol => void>]
47
47
  def attributes
48
48
  {
49
49
  client: client,
@@ -54,6 +54,16 @@ module Vedeu
54
54
  }
55
55
  end
56
56
 
57
+ # @param refresh [Boolean] Should the buffer(s) of the view(s)
58
+ # in this composition be refreshed once stored? Default:
59
+ # false.
60
+ # @return [Vedeu::Views::Composition]
61
+ def update_buffers(refresh = false)
62
+ views.each { |view| view.update_buffer(refresh) } if views?
63
+
64
+ self
65
+ end
66
+
57
67
  private
58
68
 
59
69
  # The default values for a new instance of this class.
@@ -23,6 +23,7 @@ module Vedeu
23
23
  # @!attribute [r] truncate
24
24
  # @return [Boolean]
25
25
  attr_reader :truncate
26
+ alias_method :truncate?, :truncate
26
27
 
27
28
  # @!attribute [r] width
28
29
  # @return [Fixnum|NilClass]
@@ -31,6 +32,7 @@ module Vedeu
31
32
  # @!attribute [r] wordwrap
32
33
  # @return [Boolean]
33
34
  attr_reader :wordwrap
35
+ alias_method :wordwrap?, :wordwrap
34
36
 
35
37
  # @return [Hash<Symbol => void>]
36
38
  def attributes
@@ -26,7 +26,6 @@ module Vedeu
26
26
  extend Forwardable
27
27
  include Vedeu::Views::DefaultAttributes
28
28
  include Vedeu::Repositories::Model
29
- include Vedeu::Repositories::Parent
30
29
  include Vedeu::Presentation
31
30
  include Vedeu::Views::Value
32
31
 
@@ -84,6 +83,22 @@ module Vedeu
84
83
  end
85
84
  alias_method :==, :eql?
86
85
 
86
+ # @return [NilClass|String|Symbol]
87
+ def name
88
+ if present?(@name)
89
+ @name
90
+
91
+ elsif parent && present?(parent.name)
92
+ parent.name
93
+
94
+ end
95
+ end
96
+
97
+ # @return [NilClass|void]
98
+ def parent
99
+ present?(@parent) ? @parent : nil
100
+ end
101
+
87
102
  # Returns the size of the content in characters without
88
103
  # formatting.
89
104
  #
@@ -27,7 +27,6 @@ module Vedeu
27
27
  extend Forwardable
28
28
  include Vedeu::Views::DefaultAttributes
29
29
  include Vedeu::Repositories::Model
30
- include Vedeu::Repositories::Parent
31
30
  include Vedeu::Presentation
32
31
 
33
32
  include Vedeu::Views::Value
@@ -88,6 +87,22 @@ module Vedeu
88
87
  end
89
88
  alias_method :==, :eql?
90
89
 
90
+ # @return [NilClass|String|Symbol]
91
+ def name
92
+ if present?(@name)
93
+ @name
94
+
95
+ elsif parent && present?(parent.name)
96
+ parent.name
97
+
98
+ end
99
+ end
100
+
101
+ # @return [NilClass|void]
102
+ def parent
103
+ present?(@parent) ? @parent : nil
104
+ end
105
+
91
106
  end # Stream
92
107
 
93
108
  end # Views
@@ -28,7 +28,6 @@ module Vedeu
28
28
 
29
29
  extend Forwardable
30
30
  include Vedeu::Repositories::Model
31
- include Vedeu::Repositories::Parent
32
31
  include Vedeu::Presentation
33
32
  include Vedeu::Views::Value
34
33
 
@@ -94,29 +93,38 @@ module Vedeu
94
93
  }
95
94
  end
96
95
 
97
- # Store the view and immediately refresh it; causing to be
98
- # pushed to the Terminal. Called by {Vedeu::DSL::Views.renders}.
99
- #
100
- # @return [Vedeu::Views::View]
101
- def store_immediate
102
- store_deferred
96
+ # @return [NilClass|String|Symbol]
97
+ def name
98
+ if present?(@name)
99
+ @name
103
100
 
104
- Vedeu.trigger(:_refresh_view_, name)
101
+ elsif parent && present?(parent.name)
102
+ parent.name
105
103
 
106
- self
104
+ end
107
105
  end
108
106
 
109
- # When a name is given, the view is stored with this name. This
110
- # view will be shown next time a refresh event is triggered with
111
- # this name. Called by {Vedeu::DSL::Views.views}.
107
+ # @return [NilClass|void]
108
+ def parent
109
+ present?(@parent) ? @parent : nil
110
+ end
111
+
112
+ # Store the view in its respective buffer.
112
113
  #
113
- # @raise [Vedeu::Error::InvalidSyntax] The name is not defined.
114
+ # @param refresh [Boolean] Should the buffer of the view be
115
+ # refreshed once stored? Default: false.
116
+ # @raise [Vedeu::Error::MissingRequired] When the name of the
117
+ # view is not defined.
114
118
  # @return [Vedeu::Views::View]
115
- def store_deferred
116
- fail Vedeu::Error::InvalidSyntax,
117
- 'Cannot store an interface without a name.' unless present?(name)
119
+ def update_buffer(refresh = false)
120
+ if present?(name)
121
+ buffer.add(self, refresh)
118
122
 
119
- buffer.add(self)
123
+ else
124
+ fail Vedeu::Error::MissingRequired,
125
+ 'Cannot store a view without a name.'
126
+
127
+ end
120
128
 
121
129
  self
122
130
  end
@@ -83,7 +83,16 @@ module Vedeu
83
83
  end
84
84
 
85
85
  describe '#caption=' do
86
- it { instance.must_respond_to(:caption=) }
86
+ let(:_value) { 'some caption' }
87
+
88
+ subject { instance.caption=(_value) }
89
+
90
+ it {
91
+ instance.caption.must_equal('')
92
+ instance.expects(:store)
93
+ subject
94
+ instance.caption.must_equal(_value)
95
+ }
87
96
  end
88
97
 
89
98
  describe '#horizontal' do
@@ -147,7 +156,16 @@ module Vedeu
147
156
  end
148
157
 
149
158
  describe '#title=' do
150
- it { instance.must_respond_to(:title=) }
159
+ let(:_value) { 'some title' }
160
+
161
+ subject { instance.title=(_value) }
162
+
163
+ it {
164
+ instance.title.must_equal('')
165
+ instance.expects(:store)
166
+ subject
167
+ instance.title.must_equal(_value)
168
+ }
151
169
  end
152
170
 
153
171
  describe '#top_horizontal=' do
@@ -64,13 +64,26 @@ module Vedeu
64
64
  end
65
65
 
66
66
  describe '#add' do
67
+ let(:refresh) { false }
67
68
  let(:content) {
68
- Vedeu::Views::View.new(value: [Vedeu::Views::Line.new])
69
+ Vedeu::Views::View.new(name: :vedeu_buffers_buffer,
70
+ value: [Vedeu::Views::Line.new])
69
71
  }
70
72
 
71
- subject { instance.add(content) }
73
+ subject { instance.add(content, refresh) }
72
74
 
73
75
  it { subject.must_equal(true) }
76
+
77
+ context 'when refresh is true' do
78
+ let(:refresh) { true }
79
+
80
+ before { Vedeu.stubs(:trigger) }
81
+
82
+ it do
83
+ Vedeu.expects(:trigger).with(:_refresh_view_, :vedeu_buffers_buffer)
84
+ subject
85
+ end
86
+ end
74
87
  end
75
88
 
76
89
  describe '#back?' do
@@ -15,49 +15,74 @@ module Vedeu
15
15
  height: height,
16
16
  name: _name,
17
17
  width: width,
18
+ x: x,
19
+ y: y,
18
20
  }
19
21
  }
20
- let(:height) { 3 }
21
- let(:_name) {}
22
+ let(:height) { 4 }
23
+ let(:_name) { :vedeu_buffers_empty }
22
24
  let(:width) { 9 }
25
+ let(:x) { 3 }
26
+ let(:y) { 2 }
27
+
28
+ let(:term_height) { 8 }
29
+ let(:term_width) { 15 }
23
30
 
24
31
  before do
25
- Vedeu.stubs(:height).returns(4)
26
- Vedeu.stubs(:width).returns(12)
32
+ Vedeu.stubs(:height).returns(term_height)
33
+ Vedeu.stubs(:width).returns(term_width)
27
34
  end
28
35
 
29
36
  describe '#initialize' do
30
37
  it { instance.must_be_instance_of(described) }
31
38
 
32
39
  context 'when the height is given' do
33
- it { instance.instance_variable_get('@height').must_equal(3) }
40
+ it { instance.instance_variable_get('@height').must_equal(height) }
34
41
  end
35
42
 
36
43
  context 'when the height not is given' do
37
44
  let(:height) {}
38
45
 
39
- it { instance.instance_variable_get('@height').must_equal(4) }
46
+ it do
47
+ instance.instance_variable_get('@height').must_equal(term_height)
48
+ end
40
49
  end
41
50
 
42
51
  it { instance.instance_variable_get('@name').must_equal(_name) }
43
52
 
44
53
  context 'when the width is given' do
45
- it { instance.instance_variable_get('@width').must_equal(9) }
54
+ it { instance.instance_variable_get('@width').must_equal(width) }
46
55
  end
47
56
 
48
57
  context 'when the width not is given' do
49
58
  let(:width) {}
50
59
 
51
- it { instance.instance_variable_get('@width').must_equal(12) }
60
+ it { instance.instance_variable_get('@width').must_equal(term_width) }
52
61
  end
53
- end
54
62
 
55
- describe '#name' do
56
- it { instance.must_respond_to(:name) }
63
+ context 'when x is given' do
64
+ it { instance.instance_variable_get('@x').must_equal(x) }
65
+ end
66
+
67
+ context 'when x not is given' do
68
+ let(:x) {}
69
+
70
+ it { instance.instance_variable_get('@x').must_equal(1) }
71
+ end
72
+
73
+ context 'when y is given' do
74
+ it { instance.instance_variable_get('@y').must_equal(y) }
75
+ end
76
+
77
+ context 'when y not is given' do
78
+ let(:y) {}
79
+
80
+ it { instance.instance_variable_get('@y').must_equal(1) }
81
+ end
57
82
  end
58
83
 
59
84
  describe '#buffer' do
60
- let(:position) { Vedeu::Geometries::Position.new(1, 1) }
85
+ let(:position) { Vedeu::Geometries::Position.new(y, x) }
61
86
 
62
87
  subject { instance.buffer }
63
88
 
@@ -65,21 +90,29 @@ module Vedeu
65
90
  it { subject.first.must_be_instance_of(Array) }
66
91
  it { subject.first.first.must_be_instance_of(Vedeu::Cells::Empty) }
67
92
 
68
- it { subject.size.must_equal(3) }
69
- it { subject.first.size.must_equal(9) }
93
+ it { subject.size.must_equal(height) }
94
+ it { subject.first.size.must_equal(width) }
70
95
  it { subject.first.first.position.must_equal(position) }
71
96
  end
72
97
 
73
98
  describe '#height' do
74
- subject { instance.height }
99
+ it { instance.must_respond_to(:height) }
100
+ end
75
101
 
76
- it { subject.must_equal(height + 1) }
102
+ describe '#name' do
103
+ it { instance.must_respond_to(:name) }
77
104
  end
78
105
 
79
106
  describe '#width' do
80
- subject { instance.width }
107
+ it { instance.must_respond_to(:width) }
108
+ end
109
+
110
+ describe '#x' do
111
+ it { instance.must_respond_to(:x) }
112
+ end
81
113
 
82
- it { subject.must_equal(width + 1) }
114
+ describe '#y' do
115
+ it { instance.must_respond_to(:y) }
83
116
  end
84
117
 
85
118
  end # Empty