vedeu 0.0.19 → 0.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fb683143c7b17b1af0dfa7bed0e800cfa7f0c6c9
4
- data.tar.gz: 6b58626d636f27909b8786cdde59d4617cf9f200
3
+ metadata.gz: 66de5c561798d7f28dc0aa984dd6e3017bf724ca
4
+ data.tar.gz: 5b1c164ab6fb207d0443b7d309563654c99132e8
5
5
  SHA512:
6
- metadata.gz: 22d4512e7ccbd63da7d11fc08b072458ed4f0622eba0ec69d33a0d75e43b217337b264f353ba97e16a2d270ddc9b963a39ccaade556837ceeff56d7642746561
7
- data.tar.gz: b8149ebaf7937cc9af8fb7f33b1825e10c71d73318ae74c611fa5af7e6081f36be540c87aa49a32f8b4c9cefe4cc93dd3639f800c89be8f142d64298acd8a4d2
6
+ metadata.gz: 018e9a0652410c0f0fb70e35ee06ba1d4a76557270fd3407a95b90bb4635658d7c739fe62a09950f4b955297b0eb804dc70a60619c8a2772885774925613e892
7
+ data.tar.gz: 601298baf82a2205887b9e78dcb997270ca502697768c96d7b975cbc607ac703984c0323949156fecf048678a0a24d8df3a9a940de83f098048c861a5f2e9a35
@@ -40,6 +40,7 @@ require_relative 'vedeu/launcher'
40
40
  require_relative 'vedeu/version'
41
41
 
42
42
  module Vedeu
43
+ # :nocov:
43
44
  def self.logger
44
45
  @logger ||= Logger.new(root_path + '/logs/vedeu.log').tap do |log|
45
46
  log.formatter = proc do |_, time, _, msg|
@@ -47,10 +48,13 @@ module Vedeu
47
48
  end
48
49
  end
49
50
  end
51
+ # :nocov:
50
52
 
51
53
  private
52
54
 
55
+ # :nocov:
53
56
  def self.root_path
54
57
  File.expand_path('../..', __FILE__)
55
58
  end
59
+ # :nocov:
56
60
  end
@@ -3,20 +3,17 @@ module Vedeu
3
3
 
4
4
  class Compositor
5
5
  class << self
6
- def arrange(output = [], interface = 'dummy')
7
- return if output.nil? || output.empty?
8
-
9
- if output.is_a?(Array)
10
- new(output, interface).arrange
11
- elsif output.is_a?(Hash)
12
- output.map { |i, o| new(o, i).arrange }
6
+ def arrange(output = {})
7
+ output.map do |interface, stream|
8
+ new({ interface: interface, stream: stream }).arrange
13
9
  end
14
10
  end
15
11
  end
16
12
 
17
- def initialize(output = [], interface = 'dummy')
18
- @output = output || []
19
- @interface = interface
13
+ def initialize(attributes = {})
14
+ @attributes = attributes || {}
15
+ @interface = attributes[:interface]
16
+ @stream = attributes[:stream]
20
17
  end
21
18
 
22
19
  def arrange
@@ -25,21 +22,24 @@ module Vedeu
25
22
 
26
23
  private
27
24
 
25
+ attr_reader :attributes, :stream
26
+
28
27
  def composition
29
28
  container = []
30
29
  streams = []
31
30
 
32
31
  container << colour.set
33
32
 
34
- output.map do |lines|
35
- if lines.size < height
36
- remaining = height - lines.size
37
- remaining.times { |i| lines << '' }
38
- end
33
+ if stream.size < height
34
+ remaining = height - stream.size
35
+ remaining.times { |i| stream << [''] }
36
+ end
39
37
 
40
- lines.each_with_index do |stream, index|
41
- streams << clear(index)
42
- streams << Directive.enact(interface, stream)
38
+ stream.each_with_index do |lines, index|
39
+ streams << clear(index)
40
+
41
+ lines.each do |data|
42
+ streams << Directive.enact(interface, data)
43
43
  end
44
44
 
45
45
  container << streams.join
@@ -80,11 +80,6 @@ module Vedeu
80
80
  interface.cursor
81
81
  end
82
82
 
83
- def output
84
- return @output.split if @output.is_a?(String)
85
- @output
86
- end
87
-
88
83
  def interface
89
84
  @_interface ||= InterfaceRepository.find_by_name(@interface)
90
85
  end
@@ -6,11 +6,19 @@ module Vedeu
6
6
  [esc, '5m'].join
7
7
  end
8
8
 
9
+ def blink_off
10
+ [esc, '25m'].join
11
+ end
12
+
9
13
  def bold
10
14
  [esc, '1m'].join
11
15
  end
12
16
  alias_method :bright, :bold
13
17
 
18
+ def bold_off
19
+ [esc, '21m'].join
20
+ end
21
+
14
22
  def clear
15
23
  [esc, '2J'].join
16
24
  end
@@ -23,10 +31,15 @@ module Vedeu
23
31
  [27.chr, '['].join
24
32
  end
25
33
 
26
- def inverse
34
+ def negative
27
35
  [esc, '7m'].join
28
36
  end
29
- alias_method :reverse, :inverse
37
+ alias_method :reverse, :negative
38
+ alias_method :inverse, :negative
39
+
40
+ def positive
41
+ [esc, '27m'].join
42
+ end
30
43
 
31
44
  def normal
32
45
  [esc, '2m'].join
@@ -40,5 +53,9 @@ module Vedeu
40
53
  def underline
41
54
  [esc, '4m'].join
42
55
  end
56
+
57
+ def underline_off
58
+ [esc, '24m'].join
59
+ end
43
60
  end
44
61
  end
@@ -10,7 +10,7 @@ module Vedeu
10
10
 
11
11
  def render
12
12
  InterfaceRepository.update.map do |interface|
13
- interface.map { |stream| Terminal.output(stream) unless stream.nil? }
13
+ interface.map { |stream| Terminal.output(stream) if stream }
14
14
  end
15
15
  end
16
16
  end
@@ -12,14 +12,20 @@ module Vedeu
12
12
 
13
13
  def set
14
14
  case style
15
+ when :blink then Esc.blink
16
+ when :blink_off then Esc.blink_off
15
17
  when :bold then Esc.bold
18
+ when :bold_off then Esc.bold_off
16
19
  when :clear then Esc.clear
17
20
  when :hide_cursor then Cursor.hide
18
21
  when :inverse then Esc.inverse
22
+ when :negative then Esc.negative
23
+ when :positive then Esc.positive
19
24
  when :reset then Esc.reset
20
25
  when :normal then Esc.reset
21
26
  when :show_cursor then Cursor.show
22
27
  when :underline then Esc.underline
28
+ when :underline_off then Esc.underline_off
23
29
  else
24
30
  ''
25
31
  end
@@ -30,6 +30,7 @@ module Vedeu
30
30
  end
31
31
  end
32
32
 
33
+ # :nocov:
33
34
  module ClassMethods
34
35
  def command(name, klass, options = {})
35
36
  command_name = name.is_a?(Symbol) ? name.to_s : name
@@ -41,4 +42,5 @@ module Vedeu
41
42
  def self.included(receiver)
42
43
  receiver.extend(ClassMethods)
43
44
  end
45
+ # :nocov:
44
46
  end
@@ -22,13 +22,15 @@ module Vedeu
22
22
  def create
23
23
  InterfaceRepository.create(self)
24
24
 
25
- Compositor.arrange(initial_state)
26
-
27
25
  self
28
26
  end
29
27
 
30
28
  def update
31
29
  if enqueued?
30
+ @current = dequeue
31
+ elsif @current.empty?
32
+ Compositor.arrange(initial_state)
33
+
32
34
  @current = dequeue
33
35
  else
34
36
  @current
@@ -50,7 +52,7 @@ module Vedeu
50
52
  private
51
53
 
52
54
  def initial_state
53
- { name => [Array.new(geometry.height) { '' }] }
55
+ { name => Array.new(geometry.height) { [""] } }
54
56
  end
55
57
 
56
58
  def foreground
@@ -62,6 +64,7 @@ module Vedeu
62
64
  end
63
65
  end
64
66
 
67
+ # :nocov:
65
68
  module ClassMethods
66
69
  def interface(name, options = {})
67
70
  interface_name = name.is_a?(Symbol) ? name.to_s : name
@@ -73,4 +76,5 @@ module Vedeu
73
76
  def self.included(receiver)
74
77
  receiver.extend(ClassMethods)
75
78
  end
79
+ # :nocov:
76
80
  end
@@ -1,3 +1,3 @@
1
1
  module Vedeu
2
- VERSION = '0.0.19'
2
+ VERSION = '0.0.20'
3
3
  end
@@ -3,15 +3,14 @@ require_relative '../../../test_helper'
3
3
  module Vedeu
4
4
  describe Compositor do
5
5
  let(:described_class) { Compositor }
6
- let(:described_instance) { described_class.new(output, interface) }
6
+ let(:described_instance) { described_class.new(attributes) }
7
7
  let(:subject) { described_instance }
8
- let(:output) { [[]] }
9
- let(:stream) { [] }
10
- let(:interface) { 'dummy' }
8
+ let(:attributes) { { interface: 'dummy', stream: stream } }
9
+ let(:stream) { [[]] }
10
+ let(:composition) {}
11
11
 
12
12
  before do
13
13
  Interface.create({ name: 'dummy', width: 15, height: 2 })
14
- Interface.create({ name: 'test_interface', width: 15, height: 2 })
15
14
  end
16
15
 
17
16
  after do
@@ -23,34 +22,37 @@ module Vedeu
23
22
  end
24
23
 
25
24
  it 'sets an instance variable' do
26
- subject.instance_variable_get('@output').must_equal([[]])
25
+ subject.instance_variable_get('@attributes').must_equal(attributes)
27
26
  end
28
27
 
29
28
  it 'sets an instance variable' do
30
- subject.instance_variable_get('@interface').must_equal('dummy')
29
+ subject.instance_variable_get('@interface').must_equal(attributes[:interface])
31
30
  end
32
31
 
33
- describe '.arrange' do
34
- let(:subject) { described_class.arrange(output, interface) }
32
+ it 'sets an instance variable' do
33
+ subject.instance_variable_get('@stream').must_equal(attributes[:stream])
34
+ end
35
35
 
36
- context 'when empty' do
37
- let(:output) { [] }
36
+ describe '#arrange' do
37
+ let(:subject) { described_class.new(attributes).arrange }
38
38
 
39
- it 'returns a NilClass' do
40
- subject.must_be_instance_of(NilClass)
39
+ context 'when empty' do
40
+ let(:stream) { [[]] }
41
+ let(:composition) {
42
+ [
43
+ [
44
+ "\e[38;2;39m\e[48;2;49m",
45
+ "\e[1;1H \e[1;1H",
46
+ "\e[2;1H \e[2;1H",
47
+ "\e[38;2;39m\e[48;2;49m",
48
+ "\e[?25h"
49
+ ]
50
+ ]
51
+ }
52
+
53
+ it 'returns the initial state of the interface' do
54
+ subject.must_equal(composition)
41
55
  end
42
- end
43
-
44
- context 'when an array (single interface)' do
45
- let(:output) { [[]] }
46
-
47
- it 'returns an Array' do
48
- subject.must_be_instance_of(Array)
49
- end
50
- end
51
-
52
- context 'when a hash (multiple interfaces)' do
53
- let(:output) { { 'test_interface' => [] } }
54
56
 
55
57
  it 'returns an Array' do
56
58
  subject.must_be_instance_of(Array)
@@ -59,31 +61,45 @@ module Vedeu
59
61
 
60
62
  context 'when unstyled' do
61
63
  context 'and a single line' do
62
- let(:output) { { 'dummy' => [['Some text...']] } }
63
- let(:stream) {
64
- [[["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1HSome text...\e[2;1H \e[2;1H", "\e[38;2;39m\e[48;2;49m", "\e[?25h"], ["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1H\e[2;1H \e[2;1H", "\e[38;2;39m\e[48;2;49m", "\e[?25h"]]]
64
+ let(:stream) { [['Some text...']] }
65
+ let(:composition) {
66
+ [
67
+ [
68
+ "\e[38;2;39m\e[48;2;49m",
69
+ "\e[1;1H \e[1;1HSome text...",
70
+ "\e[2;1H \e[2;1H",
71
+ "\e[38;2;39m\e[48;2;49m",
72
+ "\e[?25h"
73
+ ]
74
+ ]
65
75
  }
66
76
 
67
- it 'returns the enqueue composition' do
68
- subject.must_equal(stream)
77
+ it 'returns the enqueued composition' do
78
+ subject.must_equal(composition)
69
79
  end
70
80
  end
71
81
 
72
82
  context 'and multi-line' do
73
- let(:output) {
74
- {
75
- 'dummy' => [
76
- ['Some text...'],
77
- ['Some more text...']
78
- ]
79
- }
80
- }
81
83
  let(:stream) {
82
- [[["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1HSome text...\e[2;1H \e[2;1H", "\e[1;1H \e[1;1HSome more tex...\e[0m\e[2;1H \e[2;1H", "\e[38;2;39m\e[48;2;49m", "\e[?25h"], ["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1H\e[2;1H \e[2;1H", "\e[38;2;39m\e[48;2;49m", "\e[?25h"]]]
84
+ [
85
+ ['Some text...'],
86
+ ['Some more text...']
87
+ ]
88
+ }
89
+ let(:composition) {
90
+ [
91
+ [
92
+ "\e[38;2;39m\e[48;2;49m",
93
+ "\e[1;1H \e[1;1HSome text...",
94
+ "\e[2;1H \e[2;1HSome more tex...\e[0m",
95
+ "\e[38;2;39m\e[48;2;49m",
96
+ "\e[?25h"
97
+ ]
98
+ ]
83
99
  }
84
100
 
85
- it 'returns a String' do
86
- subject.must_equal(stream)
101
+ it 'returns the enqueued composition' do
102
+ subject.must_equal(composition)
87
103
  end
88
104
  end
89
105
  end
@@ -91,92 +107,114 @@ module Vedeu
91
107
  context 'when styled' do
92
108
  context 'with colour pair' do
93
109
  context 'and a single line' do
94
- let(:output) {
95
- {
96
- 'dummy' => [
97
- [{ colour: [:red, :white] }, 'Some text...']
98
- ]
99
- }
100
- }
101
110
  let(:stream) {
102
- [[["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1H\e[38;2;31m\e[48;2;47m\e[2;1H \e[2;1HSome text...", "\e[38;2;39m\e[48;2;49m", "\e[?25h"], ["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1H\e[2;1H \e[2;1H", "\e[38;2;39m\e[48;2;49m", "\e[?25h"]]]
111
+ [
112
+ [{ colour: [:red, :white] }, 'Some text...', { colour: :default }]
113
+ ]
114
+ }
115
+ let(:composition) {
116
+ [
117
+ [
118
+ "\e[38;2;39m\e[48;2;49m",
119
+ "\e[1;1H \e[1;1H\e[38;2;31m\e[48;2;47mSome text...\e[38;5;39m\e[48;5;49m",
120
+ "\e[2;1H \e[2;1H",
121
+ "\e[38;2;39m\e[48;2;49m",
122
+ "\e[?25h"
123
+ ]
124
+ ]
103
125
  }
104
126
 
105
- it 'returns a String' do
106
- subject.must_equal(stream)
127
+ it 'returns the enqueued composition' do
128
+ subject.must_equal(composition)
107
129
  end
108
130
  end
109
131
 
110
132
  context 'and multi-line' do
111
- let(:output) {
112
- {
113
- 'dummy' => [
114
- [{ colour: [:red, :white] }, 'Some text...'],
115
- [{ colour: [:blue, :yellow] }, 'Some more text...']
116
- ]
117
- }
118
- }
119
133
  let(:stream) {
120
- [[["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1H\e[38;2;31m\e[48;2;47m\e[2;1H \e[2;1HSome text...", "\e[1;1H \e[1;1H\e[38;2;34m\e[48;2;43m\e[2;1H \e[2;1HSome more tex...\e[0m", "\e[38;2;39m\e[48;2;49m", "\e[?25h"], ["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1H\e[2;1H \e[2;1H", "\e[38;2;39m\e[48;2;49m", "\e[?25h"]]]
134
+ [
135
+ [{ colour: [:red, :white] }, 'Some text...'],
136
+ [{ colour: [:blue, :yellow] }, 'Some more text...']
137
+ ]
138
+ }
139
+ let(:composition) {
140
+ [
141
+ [
142
+ "\e[38;2;39m\e[48;2;49m",
143
+ "\e[1;1H \e[1;1H\e[38;2;31m\e[48;2;47mSome text...",
144
+ "\e[2;1H \e[2;1H\e[38;2;34m\e[48;2;43mSome more tex...\e[0m",
145
+ "\e[38;2;39m\e[48;2;49m",
146
+ "\e[?25h"
147
+ ]
148
+ ]
121
149
  }
122
150
 
123
- it 'returns a String' do
124
- subject.must_equal(stream)
151
+ it 'returns the enqueued composition' do
152
+ subject.must_equal(composition)
125
153
  end
126
154
  end
127
155
  end
128
156
 
129
157
  context 'with a style' do
130
158
  context 'and a single line' do
131
- let(:output) {
132
- {
133
- 'dummy' => [
134
- [{ style: :bold }, 'Some text...']
159
+ let(:stream) { [[{ style: :bold }, 'Some text...', { style: :bold_off }]] }
160
+ let(:composition) {
161
+ [
162
+ [
163
+ "\e[38;2;39m\e[48;2;49m",
164
+ "\e[1;1H \e[1;1H\e[1mSome text...\e[21m",
165
+ "\e[2;1H \e[2;1H",
166
+ "\e[38;2;39m\e[48;2;49m",
167
+ "\e[?25h"
135
168
  ]
136
- }
137
- }
138
- let(:stream) {
139
- [[["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1H\e[1m\e[2;1H \e[2;1HSome text...", "\e[38;2;39m\e[48;2;49m", "\e[?25h"], ["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1H\e[2;1H \e[2;1H", "\e[38;2;39m\e[48;2;49m", "\e[?25h"]]]
169
+ ]
140
170
  }
141
171
 
142
- it 'returns a String' do
143
- subject.must_equal(stream)
172
+ it 'returns the enqueued composition' do
173
+ subject.must_equal(composition)
144
174
  end
145
175
  end
146
176
 
147
177
  context 'and multi-line' do
148
- let(:output) {
149
- {
150
- 'dummy' => [
178
+ let(:stream) {
179
+ [
151
180
  [{ style: :inverse }, 'Some text...'],
152
181
  [{ style: :underline }, 'Some more text...']
153
182
  ]
154
- }
155
183
  }
156
- let(:stream) {
157
- [[["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1H\e[7m\e[2;1H \e[2;1HSome text...", "\e[1;1H \e[1;1H\e[4m\e[2;1H \e[2;1HSome more tex...\e[0m", "\e[38;2;39m\e[48;2;49m", "\e[?25h"], ["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1H\e[2;1H \e[2;1H", "\e[38;2;39m\e[48;2;49m", "\e[?25h"]]]
184
+ let(:composition) {
185
+ [
186
+ [
187
+ "\e[38;2;39m\e[48;2;49m",
188
+ "\e[1;1H \e[1;1H\e[7mSome text...",
189
+ "\e[2;1H \e[2;1H\e[4mSome more tex...\e[0m",
190
+ "\e[38;2;39m\e[48;2;49m",
191
+ "\e[?25h"
192
+ ]
193
+ ]
158
194
  }
159
195
 
160
- it 'returns a String' do
161
- subject.must_equal(stream)
196
+ it 'returns the enqueued composition' do
197
+ subject.must_equal(composition)
162
198
  end
163
199
  end
164
200
  end
165
201
 
166
202
  context 'with an unknown style' do
167
- let(:output) {
168
- {
169
- 'dummy' => [
170
- [{ style: :unknown }, 'Some text...']
203
+ let(:stream) { [[{ style: :unknown }, 'Some text...']] }
204
+ let(:composition) {
205
+ [
206
+ [
207
+ "\e[38;2;39m\e[48;2;49m",
208
+ "\e[1;1H \e[1;1HSome text...",
209
+ "\e[2;1H \e[2;1H",
210
+ "\e[38;2;39m\e[48;2;49m",
211
+ "\e[?25h"
171
212
  ]
172
- }
173
- }
174
- let(:stream) {
175
- [[["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1H\e[2;1H \e[2;1HSome text...", "\e[38;2;39m\e[48;2;49m", "\e[?25h"], ["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1H\e[2;1H \e[2;1H", "\e[38;2;39m\e[48;2;49m", "\e[?25h"]]]
213
+ ]
176
214
  }
177
215
 
178
- it 'renders in the default style' do
179
- subject.must_equal(stream)
216
+ it 'returns the enqueued composition' do
217
+ subject.must_equal(composition)
180
218
  end
181
219
  end
182
220
  end
@@ -16,6 +16,18 @@ module Vedeu
16
16
  end
17
17
  end
18
18
 
19
+ describe '.blink_off' do
20
+ let(:subject) { described_class.blink_off }
21
+
22
+ it 'returns a String' do
23
+ subject.must_be_instance_of(String)
24
+ end
25
+
26
+ it 'returns an escape sequence' do
27
+ subject.must_equal("\e[25m")
28
+ end
29
+ end
30
+
19
31
  describe '.bold' do
20
32
  let(:subject) { described_class.bold }
21
33
 
@@ -28,6 +40,18 @@ module Vedeu
28
40
  end
29
41
  end
30
42
 
43
+ describe '.bold_off' do
44
+ let(:subject) { described_class.bold_off }
45
+
46
+ it 'returns a String' do
47
+ subject.must_be_instance_of(String)
48
+ end
49
+
50
+ it 'returns an escape sequence' do
51
+ subject.must_equal("\e[21m")
52
+ end
53
+ end
54
+
31
55
  describe '.clear' do
32
56
  let(:subject) { described_class.clear }
33
57
 
@@ -76,6 +100,18 @@ module Vedeu
76
100
  end
77
101
  end
78
102
 
103
+ describe '.positive' do
104
+ let(:subject) { described_class.positive }
105
+
106
+ it 'returns a String' do
107
+ subject.must_be_instance_of(String)
108
+ end
109
+
110
+ it 'returns an escape sequence' do
111
+ subject.must_equal("\e[27m")
112
+ end
113
+ end
114
+
79
115
  describe '.normal' do
80
116
  let(:subject) { described_class.normal }
81
117
 
@@ -111,5 +147,17 @@ module Vedeu
111
147
  subject.must_equal("\e[4m")
112
148
  end
113
149
  end
150
+
151
+ describe '.underline_off' do
152
+ let(:subject) { described_class.underline_off }
153
+
154
+ it 'returns a String' do
155
+ subject.must_be_instance_of(String)
156
+ end
157
+
158
+ it 'returns an escape sequence' do
159
+ subject.must_equal("\e[24m")
160
+ end
161
+ end
114
162
  end
115
163
  end
@@ -4,16 +4,12 @@ module Vedeu
4
4
  describe Output do
5
5
  let(:described_class) { Output }
6
6
  let(:subject) { described_class.new }
7
- let(:result) {}
8
- let(:queued_result) { { 'dummy' => [['queued...']] } }
9
7
 
10
8
  before do
11
9
  Interface.create({ name: 'dummy', width: 10, height: 2, cursor: true })
12
10
  end
13
11
 
14
- after do
15
- InterfaceRepository.reset
16
- end
12
+ after { InterfaceRepository.reset }
17
13
 
18
14
  it 'returns an Output instance' do
19
15
  subject.must_be_instance_of(Output)
@@ -16,6 +16,22 @@ module Vedeu
16
16
  subject.must_equal('')
17
17
  end
18
18
 
19
+ context 'when the style is blink' do
20
+ let(:style) { :blink }
21
+
22
+ it 'returns an escape sequence' do
23
+ subject.must_equal("\e[5m")
24
+ end
25
+ end
26
+
27
+ context 'when the style is blink off' do
28
+ let(:style) { :blink_off }
29
+
30
+ it 'returns an escape sequence' do
31
+ subject.must_equal("\e[25m")
32
+ end
33
+ end
34
+
19
35
  context 'when the style is bold' do
20
36
  let(:style) { :bold }
21
37
 
@@ -24,6 +40,14 @@ module Vedeu
24
40
  end
25
41
  end
26
42
 
43
+ context 'when the style is bold off' do
44
+ let(:style) { :bold_off }
45
+
46
+ it 'returns an escape sequence' do
47
+ subject.must_equal("\e[21m")
48
+ end
49
+ end
50
+
27
51
  context 'when the style is clear' do
28
52
  let(:style) { :clear }
29
53
 
@@ -48,6 +72,14 @@ module Vedeu
48
72
  end
49
73
  end
50
74
 
75
+ context 'when the style is positive' do
76
+ let(:style) { :positive }
77
+
78
+ it 'returns an escape sequence' do
79
+ subject.must_equal("\e[27m")
80
+ end
81
+ end
82
+
51
83
  context 'when the style is reset' do
52
84
  let(:style) { :reset }
53
85
 
@@ -79,6 +111,14 @@ module Vedeu
79
111
  subject.must_equal("\e[4m")
80
112
  end
81
113
  end
114
+
115
+ context 'when the style is underline off' do
116
+ let(:style) { :underline_off }
117
+
118
+ it 'returns an escape sequence' do
119
+ subject.must_equal("\e[24m")
120
+ end
121
+ end
82
122
  end
83
123
  end
84
124
  end
@@ -3,15 +3,14 @@ require_relative '../../../test_helper'
3
3
  module Vedeu
4
4
  describe InterfaceRepository do
5
5
  let(:described_class) { InterfaceRepository }
6
- let(:interface) { 'dummy' }
7
- let(:value) { 'dummy' }
8
6
 
9
7
  before { Interface.create({ name: 'dummy' }) }
10
8
 
11
- after { InterfaceRepository.reset }
9
+ after { InterfaceRepository.reset }
12
10
 
13
11
  describe '.activate' do
14
- let(:subject) { described_class.activate(interface) }
12
+ let(:subject) { described_class.activate(interface) }
13
+ let(:interface) { 'dummy' }
15
14
 
16
15
  it 'returns an Array' do
17
16
  subject.must_be_instance_of(Array)
@@ -36,6 +35,7 @@ module Vedeu
36
35
 
37
36
  describe '.find_by_name' do
38
37
  let(:subject) { described_class.find_by_name(value) }
38
+ let(:value) { 'dummy' }
39
39
 
40
40
  it 'returns an Interface' do
41
41
  subject.must_be_instance_of(Interface)
@@ -8,7 +8,7 @@ module Vedeu
8
8
  let(:attributes) {
9
9
  {
10
10
  name: 'dummy',
11
- width: 40,
11
+ width: 10,
12
12
  height: 5,
13
13
  x: 1,
14
14
  y: 1,
@@ -19,7 +19,8 @@ module Vedeu
19
19
  }
20
20
  let(:result) {}
21
21
 
22
- after { InterfaceRepository.reset }
22
+ before { Interface.create(attributes) }
23
+ after { InterfaceRepository.reset }
23
24
 
24
25
  it 'returns an Interface instance' do
25
26
  subject.must_be_instance_of(Interface)
@@ -48,9 +49,9 @@ module Vedeu
48
49
  describe '#update' do
49
50
  let(:subject) { described_instance.update }
50
51
 
51
- it 'returns a Array' do
52
- subject.must_be_instance_of(Array)
53
- end
52
+ # it 'returns a Array' do
53
+ # subject.must_be_instance_of(Array)
54
+ # end
54
55
  end
55
56
 
56
57
  describe '#geometry' do
@@ -26,7 +26,8 @@ module Vedeu
26
26
  describe '.enqueue' do
27
27
  let(:subject) { described_class.enqueue(:result) }
28
28
 
29
- after { described_class.clear }
29
+ before { described_class.clear }
30
+ after { described_class.clear }
30
31
 
31
32
  it 'returns an Array' do
32
33
  subject.must_be_instance_of(Array)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vedeu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.19
4
+ version: 0.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Laking
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-18 00:00:00.000000000 Z
11
+ date: 2014-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aruba