vedeu 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (164) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/Rakefile +6 -0
  4. data/bin/vedeu_drb_client +8 -3
  5. data/bin/vedeu_drb_server +113 -0
  6. data/bin/vedeu_test +1 -1
  7. data/docs/events.md +0 -127
  8. data/examples/borders_app.rb +17 -7
  9. data/examples/configuration_app.rb +1 -1
  10. data/examples/cursor_app.rb +4 -2
  11. data/examples/drb_app.rb +113 -0
  12. data/examples/focus_app.rb +1 -1
  13. data/examples/geometry_app.rb +1 -1
  14. data/examples/hello_world.rb +1 -1
  15. data/examples/lines_app.rb +1 -1
  16. data/features/start_stop.feature +1 -1
  17. data/inch.yml +5 -0
  18. data/lib/vedeu/all.rb +2 -0
  19. data/lib/vedeu/api.rb +1 -0
  20. data/lib/vedeu/application.rb +17 -36
  21. data/lib/vedeu/bindings.rb +134 -27
  22. data/lib/vedeu/buffers/display_buffer.rb +1 -4
  23. data/lib/vedeu/configuration/api.rb +15 -14
  24. data/lib/vedeu/configuration/cli.rb +17 -16
  25. data/lib/vedeu/configuration/configuration.rb +3 -1
  26. data/lib/vedeu/cursor/cursor.rb +6 -8
  27. data/lib/vedeu/cursor/move_cursor.rb +1 -0
  28. data/lib/vedeu/cursor/toggle_cursor.rb +1 -0
  29. data/lib/vedeu/debug.rb +23 -0
  30. data/lib/vedeu/distributed/all.rb +1 -1
  31. data/lib/vedeu/distributed/client.rb +55 -13
  32. data/lib/vedeu/distributed/server.rb +207 -0
  33. data/lib/vedeu/distributed/subprocess.rb +22 -21
  34. data/lib/vedeu/distributed/templates/default_application.vedeu +3 -1
  35. data/lib/vedeu/distributed/test_application.rb +2 -1
  36. data/lib/vedeu/distributed/uri.rb +1 -0
  37. data/lib/vedeu/dsl/all.rb +4 -2
  38. data/lib/vedeu/dsl/components/border.rb +11 -10
  39. data/lib/vedeu/dsl/components/geometry.rb +1 -0
  40. data/lib/vedeu/dsl/components/keymap.rb +1 -0
  41. data/lib/vedeu/dsl/components/menu.rb +1 -0
  42. data/lib/vedeu/dsl/interface.rb +1 -0
  43. data/lib/vedeu/dsl/line.rb +3 -1
  44. data/lib/vedeu/dsl/shared/colour.rb +1 -0
  45. data/lib/vedeu/dsl/shared/style.rb +1 -0
  46. data/lib/vedeu/dsl/shared/text.rb +2 -0
  47. data/lib/vedeu/dsl/shared/use.rb +3 -0
  48. data/lib/vedeu/dsl/stream.rb +3 -1
  49. data/lib/vedeu/dsl/view.rb +1 -0
  50. data/lib/vedeu/events/event.rb +9 -6
  51. data/lib/vedeu/events/trigger.rb +18 -7
  52. data/lib/vedeu/exceptions.rb +4 -1
  53. data/lib/vedeu/input/input.rb +1 -0
  54. data/lib/vedeu/input/key.rb +0 -1
  55. data/lib/vedeu/input/keymap.rb +5 -3
  56. data/lib/vedeu/input/keys.rb +1 -0
  57. data/lib/vedeu/input/mapper.rb +1 -0
  58. data/lib/vedeu/launcher.rb +35 -12
  59. data/lib/vedeu/main_loop.rb +53 -0
  60. data/lib/vedeu/models/collection.rb +11 -3
  61. data/lib/vedeu/models/focus.rb +3 -3
  62. data/lib/vedeu/models/geometry.rb +8 -16
  63. data/lib/vedeu/models/group.rb +1 -0
  64. data/lib/vedeu/models/menu.rb +2 -1
  65. data/lib/vedeu/models/model.rb +7 -1
  66. data/lib/vedeu/models/view/char.rb +52 -44
  67. data/lib/vedeu/models/view/chars.rb +1 -0
  68. data/lib/vedeu/models/view/composition.rb +2 -1
  69. data/lib/vedeu/models/view/interface.rb +5 -3
  70. data/lib/vedeu/models/view/interfaces.rb +1 -0
  71. data/lib/vedeu/models/view/line.rb +2 -1
  72. data/lib/vedeu/models/view/stream.rb +2 -1
  73. data/lib/vedeu/models/view/streams.rb +1 -0
  74. data/lib/vedeu/output/all.rb +4 -0
  75. data/lib/vedeu/output/border.rb +75 -206
  76. data/lib/vedeu/output/compositor.rb +1 -0
  77. data/lib/vedeu/output/html_char.rb +119 -0
  78. data/lib/vedeu/output/html_renderer.rb +89 -0
  79. data/lib/vedeu/output/output.rb +48 -44
  80. data/lib/vedeu/output/position_index.rb +12 -1
  81. data/lib/vedeu/output/renderer.rb +28 -0
  82. data/lib/vedeu/output/viewport.rb +14 -14
  83. data/lib/vedeu/output/virtual_buffer.rb +56 -0
  84. data/lib/vedeu/output/virtual_terminal.rb +42 -34
  85. data/lib/vedeu/output/wordwrap.rb +3 -0
  86. data/lib/vedeu/output/writer.rb +13 -1
  87. data/lib/vedeu/presentation/background.rb +1 -0
  88. data/lib/vedeu/presentation/colour.rb +8 -7
  89. data/lib/vedeu/presentation/foreground.rb +1 -0
  90. data/lib/vedeu/presentation/presentation.rb +43 -7
  91. data/lib/vedeu/presentation/translator.rb +12 -0
  92. data/lib/vedeu/repositories/repository.rb +8 -8
  93. data/lib/vedeu/support/bounding_area.rb +2 -0
  94. data/lib/vedeu/support/coercions.rb +2 -1
  95. data/lib/vedeu/support/common.rb +1 -0
  96. data/lib/vedeu/support/console.rb +17 -23
  97. data/lib/vedeu/support/content_geometry.rb +2 -0
  98. data/lib/vedeu/support/coordinate.rb +1 -0
  99. data/lib/vedeu/support/esc.rb +58 -29
  100. data/lib/vedeu/support/grid.rb +1 -0
  101. data/lib/vedeu/support/limit.rb +9 -0
  102. data/lib/vedeu/support/log.rb +31 -9
  103. data/lib/vedeu/support/node.rb +8 -18
  104. data/lib/vedeu/support/position.rb +13 -34
  105. data/lib/vedeu/support/position_validator.rb +3 -0
  106. data/lib/vedeu/support/read.rb +1 -0
  107. data/lib/vedeu/support/refresh.rb +3 -2
  108. data/lib/vedeu/support/terminal.rb +11 -5
  109. data/lib/vedeu/support/trace.rb +16 -1
  110. data/lib/vedeu/support/visible.rb +2 -0
  111. data/lib/vedeu/support/write.rb +1 -0
  112. data/lib/vedeu/traps.rb +1 -0
  113. data/lib/vedeu.rb +2 -0
  114. data/test/integration/distributed_test.rb +10 -8
  115. data/test/lib/vedeu/api_test.rb +3 -7
  116. data/test/lib/vedeu/application_test.rb +2 -5
  117. data/test/lib/vedeu/configuration/api_test.rb +12 -0
  118. data/test/lib/vedeu/cursor/cursor_test.rb +2 -0
  119. data/test/lib/vedeu/distributed/client_test.rb +17 -7
  120. data/test/lib/vedeu/distributed/server_test.rb +56 -0
  121. data/test/lib/vedeu/distributed/test_application_test.rb +7 -3
  122. data/test/lib/vedeu/dsl/components/border_test.rb +10 -2
  123. data/test/lib/vedeu/dsl/interface_test.rb +6 -0
  124. data/test/lib/vedeu/dsl/line_test.rb +19 -0
  125. data/test/lib/vedeu/dsl/shared/colour_test.rb +4 -26
  126. data/test/lib/vedeu/dsl/shared/text_test.rb +8 -1
  127. data/test/lib/vedeu/dsl/stream_test.rb +13 -1
  128. data/test/lib/vedeu/input/input_test.rb +1 -1
  129. data/test/lib/vedeu/input/key_test.rb +3 -16
  130. data/test/lib/vedeu/launcher_test.rb +11 -1
  131. data/test/lib/vedeu/main_loop_test.rb +41 -0
  132. data/test/lib/vedeu/models/geometry_test.rb +15 -34
  133. data/test/lib/vedeu/models/view/char_test.rb +44 -45
  134. data/test/lib/vedeu/models/view/interface_test.rb +6 -0
  135. data/test/lib/vedeu/models/view/line_test.rb +1 -1
  136. data/test/lib/vedeu/models/view/stream_test.rb +1 -1
  137. data/test/lib/vedeu/output/border_test.rb +6 -5
  138. data/test/lib/vedeu/output/compositor_test.rb +2 -20
  139. data/test/lib/vedeu/output/html_char_test.rb +85 -0
  140. data/test/lib/vedeu/output/html_renderer_test.rb +37 -0
  141. data/test/lib/vedeu/output/position_index_test.rb +2 -10
  142. data/test/lib/vedeu/output/renderer_test.rb +24 -0
  143. data/test/lib/vedeu/output/virtual_buffer_test.rb +53 -0
  144. data/test/lib/vedeu/output/virtual_terminal_test.rb +32 -2
  145. data/test/lib/vedeu/presentation/background_test.rb +41 -1
  146. data/test/lib/vedeu/presentation/colour_test.rb +10 -6
  147. data/test/lib/vedeu/presentation/foreground_test.rb +46 -6
  148. data/test/lib/vedeu/presentation/presentation_test.rb +44 -1
  149. data/test/lib/vedeu/presentation/translator_test.rb +34 -0
  150. data/test/lib/vedeu/repositories/repository_test.rb +1 -1
  151. data/test/lib/vedeu/support/bounding_area_test.rb +4 -12
  152. data/test/lib/vedeu/support/console_test.rb +9 -50
  153. data/test/lib/vedeu/support/esc_test.rb +7 -7
  154. data/test/lib/vedeu/support/position_test.rb +42 -0
  155. data/test/lib/vedeu/support/terminal_test.rb +5 -20
  156. data/test/lib/vedeu/support/write_test.rb +42 -18
  157. data/test/support/helpers/all.rb +0 -1
  158. data/test/support/helpers/repository_test_module.rb +1 -0
  159. data/test/test_helper.rb +5 -2
  160. data/vedeu.gemspec +7 -5
  161. metadata +60 -14
  162. data/lib/vedeu/distributed/application.rb +0 -91
  163. data/test/lib/vedeu/distributed/application_test.rb +0 -24
  164. data/test/support/helpers/presentation.rb +0 -16
@@ -3,6 +3,7 @@ module Vedeu
3
3
  # Change coordinates into an escape sequence to set the cursor position.
4
4
  #
5
5
  # @api private
6
+ #
6
7
  class Position
7
8
 
8
9
  attr_reader :y,
@@ -11,6 +12,8 @@ module Vedeu
11
12
  alias_method :first, :y
12
13
  alias_method :last, :x
13
14
 
15
+ # @param value [Array<Fixnum>|Vedeu::Position]
16
+ # @return [void]
14
17
  def self.coerce(value)
15
18
  if value.is_a?(self)
16
19
  value
@@ -26,32 +29,34 @@ module Vedeu
26
29
 
27
30
  # Initializes a new instance of Position.
28
31
  #
29
- # @param y [Fixnum]
30
- # @param x [Fixnum]
32
+ # @param y [Fixnum] The row/line position.
33
+ # @param x [Fixnum] The column/character position.
31
34
  # @return [Position]
32
35
  def initialize(y = 1, x = 1)
33
- @y = y
34
- @x = x
36
+ @y = (y.nil? || y < 1) ? 1 : y
37
+ @x = (x.nil? || x < 1) ? 1 : x
35
38
  end
36
39
 
40
+ # @return [String]
37
41
  def inspect
38
42
  "<#{self.class.name} (y:#{@y} x:#{@x})>"
39
43
  end
40
44
 
41
- # @param other []
45
+ # @param other [Vedeu::Position]
42
46
  # @return [Boolean]
43
47
  def ==(other)
44
48
  eql?(other)
45
49
  end
46
50
 
47
- # @param other []
51
+ # @param other [Vedeu::Position]
48
52
  # @return [Boolean]
49
53
  def eql?(other)
50
54
  self.class == other.class && (x == other.x && y == other.y)
51
55
  end
52
56
 
53
- # Returns an escape sequence to position the cursor. When passed a block,
54
- # will position the cursor, yield and return the original position.
57
+ # Return the escape sequence required to position the cursor at a particular
58
+ # point on the screen. When passed a block, will do the aforementioned,
59
+ # call the block and then reposition to this location.
55
60
  #
56
61
  # @param block [Proc]
57
62
  # @return [String]
@@ -75,32 +80,6 @@ module Vedeu
75
80
  ["\e[", y, ';', x, 'H'].join
76
81
  end
77
82
 
78
- # Returns the y coordinate.
79
- #
80
- # @return [Fixnum]
81
- def y
82
- if @y < 1 || @y.nil?
83
- 1
84
-
85
- else
86
- @y
87
-
88
- end
89
- end
90
-
91
- # Returns the x coordinate.
92
- #
93
- # @return [Fixnum]
94
- def x
95
- if @x < 1 || @x.nil?
96
- 1
97
-
98
- else
99
- @x
100
-
101
- end
102
- end
103
-
104
83
  end # Position
105
84
 
106
85
  end # Vedeu
@@ -1,5 +1,8 @@
1
1
  module Vedeu
2
2
 
3
+ # Validates that the provided coordinates are within the terminal and
4
+ # interface (with or without a border).
5
+ #
3
6
  class PositionValidator
4
7
 
5
8
  extend Forwardable
@@ -1,6 +1,7 @@
1
1
  module Vedeu
2
2
 
3
3
  # The basis of a fake input device.
4
+ #
4
5
  class Read
5
6
 
6
7
  # @param console []
@@ -3,6 +3,7 @@ module Vedeu
3
3
  # Refreshes the terminal.
4
4
  #
5
5
  # @api private
6
+ #
6
7
  module Refresh
7
8
 
8
9
  extend self
@@ -27,7 +28,7 @@ module Vedeu
27
28
  # @return [Array|ModelNotFound] A collection of the names of interfaces
28
29
  # refreshed, or an exception if the group was not found.
29
30
  def by_group(group_name)
30
- Vedeu.log("Refreshing group: '#{group_name}'")
31
+ Vedeu.log(type: :info, message: "Refreshing group: '#{group_name}'")
31
32
 
32
33
  Vedeu.groups.find(group_name).members.each { |name| by_name(name) }
33
34
  end
@@ -38,7 +39,7 @@ module Vedeu
38
39
  # named buffer.
39
40
  # @return [Array|ModelNotFound]
40
41
  def by_name(name)
41
- Vedeu.log("Refreshing interface: '#{name}'")
42
+ Vedeu.log(type: :info, message: "Refreshing interface: '#{name}'")
42
43
 
43
44
  Vedeu::Compositor.compose(name)
44
45
  end
@@ -8,6 +8,7 @@ module Vedeu
8
8
  # console, via Ruby's IO core library.
9
9
  #
10
10
  # @api private
11
+ #
11
12
  module Terminal
12
13
 
13
14
  extend self
@@ -22,12 +23,12 @@ module Vedeu
22
23
  fail InvalidSyntax, 'block not given' unless block_given?
23
24
 
24
25
  if raw_mode?
25
- Vedeu.log("Terminal entering 'raw' mode")
26
+ Vedeu.log(type: :info, message: "Terminal entering 'raw' mode")
26
27
 
27
28
  console.raw { initialize_screen { yield } }
28
29
 
29
30
  else
30
- Vedeu.log("Terminal entering 'cooked' mode")
31
+ Vedeu.log(type: :info, message: "Terminal entering 'cooked' mode")
31
32
 
32
33
  console.cooked { initialize_screen { yield } }
33
34
 
@@ -88,7 +89,7 @@ module Vedeu
88
89
  end
89
90
 
90
91
  # @param block [Proc]
91
- # @return []
92
+ # @return [void]
92
93
  def initialize_screen(&block)
93
94
  output(Esc.string('screen_init'))
94
95
 
@@ -132,7 +133,7 @@ module Vedeu
132
133
  #
133
134
  # @return [Symbol]
134
135
  def cooked_mode!
135
- Vedeu.log("Terminal switching to 'cooked' mode")
136
+ Vedeu.log(type: :info, message: "Terminal switching to 'cooked' mode")
136
137
 
137
138
  @_mode = :cooked
138
139
  end
@@ -149,7 +150,7 @@ module Vedeu
149
150
  #
150
151
  # @return [Symbol]
151
152
  def raw_mode!
152
- Vedeu.log("Terminal switching to 'raw' mode")
153
+ Vedeu.log(type: :info, message: "Terminal switching to 'raw' mode")
153
154
 
154
155
  @_mode = :raw
155
156
  end
@@ -258,6 +259,11 @@ module Vedeu
258
259
  IO.console
259
260
  end
260
261
 
262
+ # @return [VirtualTerminal]
263
+ def virtual
264
+ @virtual ||= VirtualTerminal.new(height, width)
265
+ end
266
+
261
267
  end # Terminal
262
268
 
263
269
  end # Vedeu
@@ -10,10 +10,25 @@ module Vedeu
10
10
  # excruciatingly slow to run.
11
11
  #
12
12
  # @api private
13
+ #
13
14
  class Trace
14
15
 
16
+ # @todo
17
+ # Replace this class with this:
18
+ #
19
+ # def self.trace
20
+ # trace = TracePoint.new(:call) do |tp|
21
+ # if tp.defined_class.to_s.match(/Troo/)
22
+ # Vedeu.log(type: :debug, message: [tp.defined_class.to_s, tp.method_id.to_s].join(' '))
23
+ # end
24
+ # end
25
+ # trace.enable
26
+ # end
27
+
15
28
  # @param options [Hash]
16
- # @return []
29
+ # @option option event [Symbol]
30
+ # @option option trace [Boolean]
31
+ # @return [void]
17
32
  def self.call(options = {})
18
33
  new(options).trace
19
34
  end
@@ -2,6 +2,8 @@ require 'vedeu/support/esc'
2
2
 
3
3
  module Vedeu
4
4
 
5
+ # Represents the concept of a visible or invisible attribute.
6
+ #
5
7
  class Visible
6
8
 
7
9
  # @return [Visible]
@@ -1,6 +1,7 @@
1
1
  module Vedeu
2
2
 
3
3
  # The basis of a fake output device.
4
+ #
4
5
  class Write
5
6
 
6
7
  # @see Vedeu::Write#write
data/lib/vedeu/traps.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  module Vedeu
2
2
 
3
3
  # Vedeu can respond to various signals which are handled here.
4
+ #
4
5
  module Traps
5
6
 
6
7
  Signal.trap('INT') { exit! }
data/lib/vedeu.rb CHANGED
@@ -34,6 +34,8 @@ module Vedeu
34
34
  # include Vedeu
35
35
  # ...
36
36
  #
37
+ # @param receiver []
38
+ # @return [void]
37
39
  def included(receiver)
38
40
  receiver.send(:include, API)
39
41
  receiver.extend(API)
@@ -2,13 +2,15 @@ require 'test_helper'
2
2
 
3
3
  describe 'Running a distributed app' do
4
4
 
5
- # it 'runs a simple app and exits' do
6
- # app = Vedeu::TestApplication.build
7
- # client = Vedeu::Distributed::Client.new("druby://localhost:21420")
8
- # server = Vedeu::Subprocess.execute!(app)
9
- # client.input('q')
10
- # client.output.must_equal('')
11
- # client.stop
12
- # end
5
+ it 'runs a simple app and exits' do
6
+ skip
7
+ app = Vedeu::TestApplication.build
8
+ server = Vedeu::Subprocess.execute!(app)
9
+
10
+ client = Vedeu::Distributed::Client.connect("druby://localhost:21420")
11
+ client.input('q')
12
+ client.output.must_equal('')
13
+ client.shutdown
14
+ end
13
15
 
14
16
  end
@@ -4,10 +4,6 @@ module Vedeu
4
4
 
5
5
  describe API do
6
6
 
7
- let(:event) { mock('Event') }
8
-
9
- before { Event.stubs(:new).returns(event) }
10
-
11
7
  # describe '.focus' do
12
8
  # it 'sets the named interface to be focussed' do
13
9
  # Interface.build({ name: 'plutonium' }).store
@@ -68,20 +64,20 @@ module Vedeu
68
64
  describe '.log' do
69
65
  it 'writes the message to the log file when debugging is enabled' do
70
66
  Configuration.stub(:debug?, true) do
71
- Vedeu.log('Testing debugging to log').must_equal(true)
67
+ Vedeu.log(type: :test, message: 'Testing debugging to log').must_equal(true)
72
68
  end
73
69
  end
74
70
 
75
71
  it 'returns nil when debugging is disabled' do
76
72
  Configuration.stub(:debug?, false) do
77
- Vedeu.log('some message not logged...').must_equal(nil)
73
+ Vedeu.log(type: :test, message: 'some message not logged...').must_equal(nil)
78
74
  end
79
75
  end
80
76
 
81
77
  it 'write the message to the log file when the `force` argument ' \
82
78
  'evaluates to true' do
83
79
  Configuration.stub(:debug?, false) do
84
- Vedeu.log('Testing forced debugging to log', true).must_equal(true)
80
+ Vedeu.log(type: :test, message: 'Testing forced debugging to log', force: true).must_equal(true)
85
81
  end
86
82
  end
87
83
  end
@@ -6,7 +6,7 @@ module Vedeu
6
6
 
7
7
  let(:described) { Vedeu::Application }
8
8
  let(:instance) { described.new(configuration) }
9
- let(:configuration) { mock('Vedeu::Configuration') }
9
+ let(:configuration) { test_configuration }
10
10
 
11
11
  before do
12
12
  configuration.stubs(:drb?).returns(false)
@@ -23,15 +23,12 @@ module Vedeu
23
23
 
24
24
  it { subject.must_be_instance_of(Array) }
25
25
 
26
- context 'alias method: .restart' do
27
- it { subject.must_be_instance_of(Array) }
28
- end
26
+ it { described.must_respond_to(:restart) }
29
27
  end
30
28
 
31
29
  describe '.stop' do
32
30
  subject { described.stop }
33
31
 
34
- it { proc { subject }.must_raise(StopIteration) }
35
32
  end
36
33
 
37
34
  describe '#start' do
@@ -37,6 +37,8 @@ module Vedeu
37
37
  configuration = Vedeu.configure { interactive }
38
38
  configuration.interactive?.must_equal(true)
39
39
  end
40
+
41
+ # it { configuration.must_respond_to(:interactive) }
40
42
  end
41
43
 
42
44
  describe '#standalone!' do
@@ -59,6 +61,8 @@ module Vedeu
59
61
  configuration = Vedeu.configure { standalone }
60
62
  configuration.interactive?.must_equal(false)
61
63
  end
64
+
65
+ # it { configuration.must_respond_to(:standalone) }
62
66
  end
63
67
 
64
68
  describe '#run_once!' do
@@ -81,6 +85,8 @@ module Vedeu
81
85
  configuration = Vedeu.configure { run_once }
82
86
  configuration.once.must_equal(true)
83
87
  end
88
+
89
+ # it { configuration.must_respond_to(:run_once) }
84
90
  end
85
91
 
86
92
  describe '#drb!' do
@@ -103,6 +109,8 @@ module Vedeu
103
109
  configuration = Vedeu.configure { drb }
104
110
  configuration.drb.must_equal(true)
105
111
  end
112
+
113
+ # it { configuration.must_respond_to(:drb) }
106
114
  end
107
115
 
108
116
  describe '#drb_host' do
@@ -138,6 +146,8 @@ module Vedeu
138
146
  configuration = Vedeu.configure { cooked! }
139
147
  configuration.terminal_mode.must_equal(:cooked)
140
148
  end
149
+
150
+ # it { configuration.must_respond_to(:cooked) }
141
151
  end
142
152
 
143
153
  describe '#raw!' do
@@ -145,6 +155,8 @@ module Vedeu
145
155
  configuration = Vedeu.configure { raw! }
146
156
  configuration.terminal_mode.must_equal(:raw)
147
157
  end
158
+
159
+ # it { configuration.must_respond_to(:raw) }
148
160
  end
149
161
 
150
162
  describe '#debug!' do
@@ -37,6 +37,8 @@ module Vedeu
37
37
  it { instance.instance_variable_get('@state').must_be_instance_of(Vedeu::Visible) }
38
38
  it { instance.instance_variable_get('@x').must_equal(19) }
39
39
  it { instance.instance_variable_get('@y').must_equal(8) }
40
+
41
+ it { instance.instance_variable_get('@position').must_be_instance_of(Vedeu::Position) }
40
42
  end
41
43
 
42
44
  describe '#inspect' do
@@ -8,25 +8,35 @@ module Vedeu
8
8
 
9
9
  let(:described) { Vedeu::Distributed::Client }
10
10
  let(:instance) { described.new(uri) }
11
- let(:uri) {}
11
+ let(:uri) { 'druby://localhost:21420' }
12
12
 
13
13
  describe '#initialize' do
14
- subject { instance }
14
+ it { instance.must_be_instance_of(described) }
15
+ it { instance.instance_variable_get('@uri').must_equal('druby://localhost:21420') }
16
+ end
17
+
18
+ describe '.connect' do
19
+ subject { described.connect(uri) }
15
20
 
16
- it { subject.must_be_instance_of(described) }
17
- it { subject.instance_variable_get('@uri').must_equal('') }
21
+ # it { subject.must_be_instance_of(Symbol) }
18
22
  end
19
23
 
20
24
  describe '#input' do
25
+ let(:data) {}
26
+
27
+ subject { instance.input(data) }
28
+
29
+ it { instance.must_respond_to(:read) }
21
30
  end
22
31
 
23
32
  describe '#output' do
24
- end
33
+ subject { instance.output }
25
34
 
26
- describe '#start' do
35
+ it { instance.must_respond_to(:write) }
27
36
  end
28
37
 
29
- describe '#stop' do
38
+ describe '#shutdown' do
39
+ subject { instance.shutdown }
30
40
  end
31
41
 
32
42
  end # Client
@@ -0,0 +1,56 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ module Distributed
6
+
7
+ describe Server do
8
+
9
+ let(:described) { Vedeu::Distributed::Server }
10
+ let(:instance) { described.instance }
11
+ let(:configuration) {}
12
+
13
+ describe '.input' do
14
+ let(:data) {}
15
+
16
+ subject { described.input(data) }
17
+ end
18
+
19
+ describe '.output' do
20
+ subject { described.output }
21
+ end
22
+
23
+ describe '#pid' do
24
+ before { Process.stubs(:pid).returns(9876) }
25
+
26
+ subject { instance.pid }
27
+
28
+ it { subject.must_be_instance_of(Fixnum) }
29
+ it { subject.must_equal(9876) }
30
+ end
31
+
32
+ describe '.restart' do
33
+ subject { described.restart }
34
+ end
35
+
36
+ describe '.shutdown' do
37
+ subject { described.shutdown }
38
+ end
39
+
40
+ describe '.start' do
41
+ subject { described.start }
42
+ end
43
+
44
+ describe '.status' do
45
+ subject { described.status }
46
+ end
47
+
48
+ describe '.stop' do
49
+ subject { described.stop }
50
+ end
51
+
52
+ end # Server
53
+
54
+ end # Distributed
55
+
56
+ end # Vedeu
@@ -9,12 +9,16 @@ module Vedeu
9
9
  let(:attributes) { {} }
10
10
 
11
11
  describe '#initialize' do
12
- subject { instance }
13
-
14
- it { subject.must_be_instance_of(Vedeu::TestApplication) }
12
+ it { instance.must_be_instance_of(Vedeu::TestApplication) }
15
13
  # it { subject.instance_variable_get('@attributes').must_equal(attributes) }
16
14
  end
17
15
 
16
+ describe '.build' do
17
+ subject { described.build(attributes) { } }
18
+
19
+ it { subject.must_be_instance_of(String) }
20
+ end
21
+
18
22
  describe '#lib_dir' do
19
23
  subject { instance.lib_dir }
20
24
 
@@ -179,6 +179,8 @@ module Vedeu
179
179
  )
180
180
  end
181
181
  end
182
+
183
+ it { instance.must_respond_to(:bottom) }
182
184
  end
183
185
 
184
186
  describe '#hide_bottom!' do
@@ -198,6 +200,8 @@ module Vedeu
198
200
 
199
201
  it { subject.must_be_instance_of(TrueClass) }
200
202
 
203
+ it { instance.must_respond_to(:left) }
204
+
201
205
  context 'when false' do
202
206
  let(:boolean) { false }
203
207
 
@@ -208,7 +212,7 @@ module Vedeu
208
212
  subject {
209
213
  Vedeu.interface 'borders' do
210
214
  border do
211
- show_left ''
215
+ show_left!
212
216
  end
213
217
  geometry do
214
218
  height 3
@@ -249,6 +253,8 @@ module Vedeu
249
253
 
250
254
  it { subject.must_be_instance_of(TrueClass) }
251
255
 
256
+ it { instance.must_respond_to(:right) }
257
+
252
258
  context 'when false' do
253
259
  let(:boolean) { false }
254
260
 
@@ -259,7 +265,7 @@ module Vedeu
259
265
  subject {
260
266
  Vedeu.interface 'borders' do
261
267
  border do
262
- show_right ''
268
+ show_right!
263
269
  end
264
270
  geometry do
265
271
  height 3
@@ -300,6 +306,8 @@ module Vedeu
300
306
 
301
307
  it { subject.must_be_instance_of(TrueClass) }
302
308
 
309
+ it { instance.must_respond_to(:top) }
310
+
303
311
  context 'when false' do
304
312
  let(:boolean) { false }
305
313
 
@@ -39,6 +39,12 @@ module Vedeu
39
39
  end
40
40
  end
41
41
 
42
+ describe '#border!' do
43
+ subject { instance.border! }
44
+
45
+ it { subject.must_be_instance_of(Vedeu::Border) }
46
+ end
47
+
42
48
  # describe '#define' do
43
49
  # interface = Interface.new({ name: 'widget' })
44
50
 
@@ -40,6 +40,23 @@ module Vedeu
40
40
 
41
41
  it { subject.must_be_instance_of(Vedeu::Lines) }
42
42
  it { subject.first.must_be_instance_of(Vedeu::Line) }
43
+
44
+ context 'when the block is given' do
45
+ end
46
+
47
+ context 'when the block is not given' do
48
+ context 'when the value is given' do
49
+ subject { instance.line(value) }
50
+ end
51
+
52
+ context 'when the value is not given' do
53
+ let(:value) {}
54
+
55
+ subject { instance.line(value) }
56
+
57
+ it { proc { subject }.must_raise(InvalidSyntax) }
58
+ end
59
+ end
43
60
  end
44
61
 
45
62
  describe '#streams' do
@@ -57,6 +74,8 @@ module Vedeu
57
74
  context 'when the block is not given' do
58
75
  it { proc { instance.streams }.must_raise(InvalidSyntax) }
59
76
  end
77
+
78
+ it { instance.must_respond_to(:stream) }
60
79
  end
61
80
 
62
81
  end # Line
@@ -24,19 +24,8 @@ module Vedeu
24
24
  )
25
25
  end
26
26
 
27
- context 'alias method #bg' do
28
- subject { dsl_klass.bg(background) }
29
-
30
- it { subject.attributes.
31
- must_equal({ background: '#00ff00', foreground: '' }) }
32
- end
33
-
34
- context 'alias method #bgcolor' do
35
- subject { dsl_klass.bgcolor(background) }
36
-
37
- it { subject.attributes.
38
- must_equal({ background: '#00ff00', foreground: '' }) }
39
- end
27
+ it { dsl_klass.must_respond_to(:bg) }
28
+ it { dsl_klass.must_respond_to(:bgcolor) }
40
29
  end
41
30
 
42
31
  describe '#foreground' do
@@ -50,19 +39,8 @@ module Vedeu
50
39
  )
51
40
  end
52
41
 
53
- context 'alias method #fg' do
54
- subject { dsl_klass.fg(foreground) }
55
-
56
- it { subject.attributes.
57
- must_equal({ background: '', foreground: '#ff00ff' }) }
58
- end
59
-
60
- context 'alias method #fgcolor' do
61
- subject { dsl_klass.fgcolor(foreground) }
62
-
63
- it { subject.attributes.
64
- must_equal({ background: '', foreground: '#ff00ff' }) }
65
- end
42
+ it { dsl_klass.must_respond_to(:fg) }
43
+ it { dsl_klass.must_respond_to(:fgcolor) }
66
44
  end
67
45
 
68
46
  describe '#colour' do