vedeu 0.1.15 → 0.1.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +2 -0
  3. data/README.md +116 -98
  4. data/lib/vedeu.rb +24 -11
  5. data/lib/vedeu/api/api.rb +174 -33
  6. data/lib/vedeu/api/composition.rb +2 -13
  7. data/lib/vedeu/api/helpers.rb +41 -0
  8. data/lib/vedeu/api/interface.rb +147 -34
  9. data/lib/vedeu/api/line.rb +47 -0
  10. data/lib/vedeu/api/stream.rb +41 -0
  11. data/lib/vedeu/application.rb +9 -2
  12. data/lib/vedeu/configuration.rb +66 -8
  13. data/lib/vedeu/launcher.rb +11 -0
  14. data/lib/vedeu/models/attributes/background.rb +29 -0
  15. data/lib/vedeu/models/attributes/coercions.rb +30 -0
  16. data/lib/vedeu/models/attributes/colour_translator.rb +106 -16
  17. data/lib/vedeu/models/attributes/foreground.rb +29 -0
  18. data/lib/vedeu/models/attributes/presentation.rb +15 -0
  19. data/lib/vedeu/models/colour.rb +12 -7
  20. data/lib/vedeu/models/composition.rb +23 -5
  21. data/lib/vedeu/models/geometry.rb +101 -16
  22. data/lib/vedeu/models/interface.rb +36 -28
  23. data/lib/vedeu/models/line.rb +16 -14
  24. data/lib/vedeu/models/stream.rb +17 -25
  25. data/lib/vedeu/models/style.rb +29 -0
  26. data/lib/vedeu/support/buffer.rb +36 -21
  27. data/lib/vedeu/support/buffers.rb +88 -0
  28. data/lib/vedeu/{output → support}/clear.rb +9 -2
  29. data/lib/vedeu/support/esc.rb +16 -2
  30. data/lib/vedeu/support/event.rb +104 -0
  31. data/lib/vedeu/support/events.rb +61 -0
  32. data/lib/vedeu/support/focus.rb +69 -0
  33. data/lib/vedeu/{api → support}/grid.rb +29 -25
  34. data/lib/vedeu/support/groups.rb +51 -0
  35. data/lib/vedeu/support/input.rb +5 -0
  36. data/lib/vedeu/support/log.rb +105 -0
  37. data/lib/vedeu/support/menu.rb +19 -0
  38. data/lib/vedeu/support/position.rb +7 -0
  39. data/lib/vedeu/{output → support}/render.rb +12 -6
  40. data/lib/vedeu/support/terminal.rb +21 -0
  41. data/lib/vedeu/support/trace.rb +54 -0
  42. data/lib/vedeu/{output → support}/view.rb +15 -10
  43. data/test/lib/vedeu/api/api_test.rb +55 -29
  44. data/test/lib/vedeu/api/interface_test.rb +3 -49
  45. data/test/lib/vedeu/api/line_test.rb +71 -0
  46. data/test/lib/vedeu/api/stream_test.rb +25 -0
  47. data/test/lib/vedeu/models/attributes/background_test.rb +83 -0
  48. data/test/lib/vedeu/models/attributes/coercer_test.rb +52 -0
  49. data/test/lib/vedeu/models/attributes/foreground_test.rb +83 -0
  50. data/test/lib/vedeu/models/attributes/presentation_test.rb +30 -0
  51. data/test/lib/vedeu/models/composition_test.rb +6 -6
  52. data/test/lib/vedeu/models/geometry_test.rb +34 -0
  53. data/test/lib/vedeu/models/interface_test.rb +0 -12
  54. data/test/lib/vedeu/models/line_test.rb +1 -13
  55. data/test/lib/vedeu/models/stream_test.rb +4 -50
  56. data/test/lib/vedeu/models/style_test.rb +39 -0
  57. data/test/lib/vedeu/support/buffer_test.rb +7 -3
  58. data/test/lib/vedeu/support/buffers_test.rb +15 -0
  59. data/test/lib/vedeu/{output → support}/clear_test.rb +8 -1
  60. data/test/lib/vedeu/support/esc_test.rb +2 -2
  61. data/test/lib/vedeu/support/event_test.rb +41 -0
  62. data/test/lib/vedeu/support/events_test.rb +70 -0
  63. data/test/lib/vedeu/support/focus_test.rb +114 -0
  64. data/test/lib/vedeu/support/grid_test.rb +31 -0
  65. data/test/lib/vedeu/support/groups_test.rb +65 -0
  66. data/test/lib/vedeu/{output → support}/render_test.rb +8 -1
  67. data/test/lib/vedeu/{output → support}/view_test.rb +1 -1
  68. data/test/test_helper.rb +3 -1
  69. data/vedeu.gemspec +3 -2
  70. metadata +67 -31
  71. data/lib/vedeu/api/events.rb +0 -46
  72. data/lib/vedeu/api/log.rb +0 -84
  73. data/lib/vedeu/models/attributes/attributes.rb +0 -25
  74. data/lib/vedeu/models/store.rb +0 -29
  75. data/lib/vedeu/output/buffers.rb +0 -65
  76. data/test/lib/vedeu/api/events_test.rb +0 -36
  77. data/test/lib/vedeu/api/grid_test.rb +0 -33
  78. data/test/lib/vedeu/models/attributes/attributes_test.rb +0 -39
  79. data/test/lib/vedeu/models/attributes/colour_translator_test.rb +0 -78
  80. data/test/lib/vedeu/models/store_test.rb +0 -57
  81. data/test/lib/vedeu/output/buffers_test.rb +0 -35
@@ -0,0 +1,25 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+ module API
5
+ describe Stream do
6
+ describe '#align' do
7
+ it 'returns the value assigned' do
8
+ Stream.new.align(:left).must_equal(:left)
9
+ end
10
+ end
11
+
12
+ describe '#text' do
13
+ it 'returns the value assigned' do
14
+ Stream.new.text('Some text...').must_equal('Some text...')
15
+ end
16
+ end
17
+
18
+ describe '#width' do
19
+ it 'returns the value assigned' do
20
+ Stream.new.text(30).must_equal(30)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,83 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+ describe Background do
5
+ describe '.escape_sequence' do
6
+ describe 'when the colour is empty' do
7
+ it 'returns an empty String' do
8
+ Background.escape_sequence('').must_equal('')
9
+ end
10
+ end
11
+
12
+ describe 'when the colour is named (3-bit / 8 colours)' do
13
+ {
14
+ red: "\e[41m",
15
+ yellow: "\e[43m",
16
+ magenta: "\e[45m",
17
+ white: "\e[47m",
18
+ default: "\e[49m",
19
+ unknown: "",
20
+ }.map do |colour, result|
21
+ it "returns the correct escape sequence for #{colour}" do
22
+ Background.escape_sequence(colour).must_equal(result)
23
+ end
24
+ end
25
+ end
26
+
27
+ describe 'when the colour is numbered (8-bit / 256 colours)' do
28
+ {
29
+ 24 => "\e[48;5;24m",
30
+ 56 => "\e[48;5;56m",
31
+ 82 => "\e[48;5;82m",
32
+ 118 => "\e[48;5;118m",
33
+ 143 => "\e[48;5;143m",
34
+ 219 => "\e[48;5;219m",
35
+ -2 => "",
36
+ 442 => ""
37
+ }.map do |colour, result|
38
+ it "returns the correct escape sequence for #{colour}" do
39
+ Background.escape_sequence(colour).must_equal(result)
40
+ end
41
+ end
42
+ end
43
+
44
+ describe 'when the colour is a CSS value (8-bit / 256 colours)' do
45
+ before { Terminal.stubs(:colour_mode).returns(8) }
46
+
47
+ {
48
+ '#5f0000' => "\e[48;5;52m",
49
+ '#008700' => "\e[48;5;28m",
50
+ '#0000d7' => "\e[48;5;20m",
51
+ '#afafaf' => "\e[48;5;145m",
52
+ '#afd700' => "\e[48;5;148m",
53
+ '#af005f' => "\e[48;5;125m",
54
+ '999999' => '',
55
+ '#12121' => '',
56
+ '#h11111' => '',
57
+ }.map do |colour, result|
58
+ it "returns the correct escape sequence for #{colour}" do
59
+ Background.escape_sequence(colour).must_equal(result)
60
+ end
61
+ end
62
+ end
63
+
64
+ describe 'when the colour is a CSS value (24-bit / 16.8mil colours)' do
65
+ {
66
+ '#5f0000' => "\e[48;2;95;0;0m",
67
+ '#008700' => "\e[48;2;0;135;0m",
68
+ '#0000d7' => "\e[48;2;0;0;215m",
69
+ '#afafaf' => "\e[48;2;175;175;175m",
70
+ '#afd700' => "\e[48;2;175;215;0m",
71
+ '#af005f' => "\e[48;2;175;0;95m",
72
+ '999999' => '',
73
+ '#12121' => '',
74
+ '#h11111' => '',
75
+ }.map do |colour, result|
76
+ it "returns the correct escape sequence for #{colour}" do
77
+ Background.escape_sequence(colour).must_equal(result)
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,52 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+ class TestClass
5
+ include Coercions
6
+
7
+ def initialize(attributes = {})
8
+ @attributes = attributes
9
+ @name = attributes[:name]
10
+ end
11
+ end
12
+
13
+ describe Coercions do
14
+ describe '.coercer' do
15
+ let(:klass) { mock('TestClass') }
16
+
17
+ before do
18
+ TestClass.stubs(:new).returns(klass)
19
+ end
20
+
21
+ [nil, [], {}].each do |empty_value|
22
+ it 'returns an empty collection when nil or empty' do
23
+ TestClass.coercer(empty_value).must_equal([])
24
+ end
25
+ end
26
+
27
+ it 'returns when an object' do
28
+ TestClass.coercer([klass]).must_equal([klass])
29
+ end
30
+
31
+ it 'returns a collection of models when a single hash' do
32
+ coerced = TestClass.coercer({ :name => 'test1' })
33
+ coerced.size.must_equal(1)
34
+ coerced.must_equal([klass])
35
+ end
36
+
37
+ it 'returns a collection of models when multiple hashes' do
38
+ coerced = TestClass.coercer([
39
+ { :name => 'test1' }, { :name => 'test2' }
40
+ ])
41
+ coerced.size.must_equal(2)
42
+ coerced.must_equal([klass, klass])
43
+ end
44
+
45
+ it 'returns a collection of models when a single array' do
46
+ coerced = TestClass.coercer([{ :name => 'test3' }])
47
+ coerced.size.must_equal(1)
48
+ coerced.must_equal([klass])
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,83 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+ describe Foreground do
5
+ describe '.escape_sequence' do
6
+ describe 'when the colour is empty' do
7
+ it 'returns an empty String' do
8
+ Foreground.escape_sequence('').must_equal('')
9
+ end
10
+ end
11
+
12
+ describe 'when the colour is named (3-bit / 8 colours)' do
13
+ {
14
+ red: "\e[31m",
15
+ yellow: "\e[33m",
16
+ magenta: "\e[35m",
17
+ white: "\e[37m",
18
+ default: "\e[39m",
19
+ unknown: "",
20
+ }.map do |colour, result|
21
+ it "returns the correct escape sequence for #{colour}" do
22
+ Foreground.escape_sequence(colour).must_equal(result)
23
+ end
24
+ end
25
+ end
26
+
27
+ describe 'when the colour is numbered (8-bit / 256 colours)' do
28
+ {
29
+ 24 => "\e[38;5;24m",
30
+ 56 => "\e[38;5;56m",
31
+ 82 => "\e[38;5;82m",
32
+ 118 => "\e[38;5;118m",
33
+ 143 => "\e[38;5;143m",
34
+ 219 => "\e[38;5;219m",
35
+ -2 => "",
36
+ 442 => ""
37
+ }.map do |colour, result|
38
+ it "returns the correct escape sequence for #{colour}" do
39
+ Foreground.escape_sequence(colour).must_equal(result)
40
+ end
41
+ end
42
+ end
43
+
44
+ describe 'when the colour is a CSS value (8-bit / 256 colours)' do
45
+ before { Terminal.stubs(:colour_mode).returns(8) }
46
+
47
+ {
48
+ '#5f0000' => "\e[38;5;52m",
49
+ '#008700' => "\e[38;5;28m",
50
+ '#0000d7' => "\e[38;5;20m",
51
+ '#afafaf' => "\e[38;5;145m",
52
+ '#afd700' => "\e[38;5;148m",
53
+ '#af005f' => "\e[38;5;125m",
54
+ '999999' => '',
55
+ '#12121' => '',
56
+ '#h11111' => '',
57
+ }.map do |colour, result|
58
+ it "returns the correct escape sequence for #{colour}" do
59
+ Foreground.escape_sequence(colour).must_equal(result)
60
+ end
61
+ end
62
+ end
63
+
64
+ describe 'when the colour is a CSS value (24-bit / 16.8mil colours)' do
65
+ {
66
+ '#5f0000' => "\e[38;2;95;0;0m",
67
+ '#008700' => "\e[38;2;0;135;0m",
68
+ '#0000d7' => "\e[38;2;0;0;215m",
69
+ '#afafaf' => "\e[38;2;175;175;175m",
70
+ '#afd700' => "\e[38;2;175;215;0m",
71
+ '#af005f' => "\e[38;2;175;0;95m",
72
+ '999999' => '',
73
+ '#12121' => '',
74
+ '#h11111' => '',
75
+ }.map do |colour, result|
76
+ it "returns the correct escape sequence for #{colour}" do
77
+ Foreground.escape_sequence(colour).must_equal(result)
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,30 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+ class PresentationTestClass
5
+ include Presentation
6
+
7
+ def attributes
8
+ {
9
+ colour: { background: '#000033', foreground: '#aadd00' },
10
+ style: ['bold']
11
+ }
12
+ end
13
+ end
14
+
15
+ describe Presentation do
16
+ let(:receiver) { PresentationTestClass.new }
17
+
18
+ describe '#colour' do
19
+ it 'returns a Colour instance' do
20
+ receiver.colour.must_be_instance_of(Colour)
21
+ end
22
+ end
23
+
24
+ describe '#style' do
25
+ it 'returns a Style instance' do
26
+ receiver.style.must_be_instance_of(Style)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -7,7 +7,7 @@ module Vedeu
7
7
  let(:json) { File.read('test/support/model_test_data.json') }
8
8
  let(:attributes) { JSON.load(json, nil, symbolize_names: true) }
9
9
 
10
- before { Store.reset }
10
+ before { Buffers.reset }
11
11
 
12
12
  describe '#interfaces' do
13
13
  it 'returns a collection of interfaces' do
@@ -107,7 +107,7 @@ module Vedeu
107
107
  "\e[3;3H \e[3;3H" \
108
108
  "\e[4;3H \e[4;3H" \
109
109
  "\e[5;3H \e[5;3H" \
110
- "\e[3;3H\e[38;2;0;0;0m\e[48;2;0;0;255m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;2;255;255;0m\e[48;2;0;255;0m\e[24m\e[21m\e[27m \e[38;2;255;255;255m\e[48;2;255;0;255m\e[1mmore text...\e[?25h"
110
+ "\e[3;3H\e[38;2;0;0;0m\e[48;2;0;0;255m\e[24m\e[22m\e[27m\e[4mSome text...\e[38;2;255;255;0m\e[48;2;0;255;0m\e[24m\e[22m\e[27m \e[38;2;255;255;255m\e[48;2;255;0;255m\e[1mmore text...\e[?25h"
111
111
  )
112
112
  end
113
113
 
@@ -237,13 +237,13 @@ module Vedeu
237
237
  "\e[3;3H \e[3;3H" \
238
238
  "\e[4;3H \e[4;3H" \
239
239
  "\e[5;3H \e[5;3H" \
240
- "\e[3;3H\e[38;2;0;0;0m\e[48;2;0;0;255m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;2;255;255;0m\e[48;2;0;255;0m\e[24m\e[21m\e[27m \e[38;2;255;255;255m\e[48;2;255;0;255m\e[1mmore text..." \
241
- "\e[4;3H\e[38;2;0;0;0m\e[48;2;0;0;255m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;2;255;255;0m\e[48;2;0;255;0m\e[24m\e[21m\e[27m \e[38;2;255;255;255m\e[48;2;255;0;255m\e[1mmore text...\e[?25h" \
240
+ "\e[3;3H\e[38;2;0;0;0m\e[48;2;0;0;255m\e[24m\e[22m\e[27m\e[4mSome text...\e[38;2;255;255;0m\e[48;2;0;255;0m\e[24m\e[22m\e[27m \e[38;2;255;255;255m\e[48;2;255;0;255m\e[1mmore text..." \
241
+ "\e[4;3H\e[38;2;0;0;0m\e[48;2;0;0;255m\e[24m\e[22m\e[27m\e[4mSome text...\e[38;2;255;255;0m\e[48;2;0;255;0m\e[24m\e[22m\e[27m \e[38;2;255;255;255m\e[48;2;255;0;255m\e[1mmore text...\e[?25h" \
242
242
  "\e[6;6H \e[6;6H" \
243
243
  "\e[7;6H \e[7;6H" \
244
244
  "\e[8;6H \e[8;6H" \
245
- "\e[6;6H\e[38;2;0;0;0m\e[48;2;0;0;255m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;2;255;255;0m\e[48;2;0;255;0m\e[24m\e[21m\e[27m \e[38;2;255;255;255m\e[48;2;255;0;255m\e[1mmore text..." \
246
- "\e[7;6H\e[38;2;0;0;0m\e[48;2;0;0;255m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;2;255;255;0m\e[48;2;0;255;0m\e[24m\e[21m\e[27m \e[38;2;255;255;255m\e[48;2;255;0;255m\e[1mmore text...\e[?25h"
245
+ "\e[6;6H\e[38;2;0;0;0m\e[48;2;0;0;255m\e[24m\e[22m\e[27m\e[4mSome text...\e[38;2;255;255;0m\e[48;2;0;255;0m\e[24m\e[22m\e[27m \e[38;2;255;255;255m\e[48;2;255;0;255m\e[1mmore text..." \
246
+ "\e[7;6H\e[38;2;0;0;0m\e[48;2;0;0;255m\e[24m\e[22m\e[27m\e[4mSome text...\e[38;2;255;255;0m\e[48;2;0;255;0m\e[24m\e[22m\e[27m \e[38;2;255;255;255m\e[48;2;255;0;255m\e[1mmore text...\e[?25h"
247
247
  )
248
248
  end
249
249
  end
@@ -2,6 +2,40 @@ require 'test_helper'
2
2
 
3
3
  module Vedeu
4
4
  describe Geometry do
5
+ describe '#viewport_width' do
6
+ it 'returns the viewport width when the interface fits the terminal' do
7
+ IO.console.stub(:winsize, [25, 80]) do
8
+ geometry = Geometry.new({ width: 60, height: 1, x: 5, y: 1 })
9
+ geometry.viewport_width.must_equal(60)
10
+ end
11
+ end
12
+
13
+ it 'returns the viewport width when the interface does not fit the ' \
14
+ 'terminal' do
15
+ IO.console.stub(:winsize, [25, 60]) do
16
+ geometry = Geometry.new({ width: 60, height: 1, x: 5, y: 1 })
17
+ geometry.viewport_width.must_equal(55)
18
+ end
19
+ end
20
+ end
21
+
22
+ describe '#viewport_height' do
23
+ it 'returns the viewport height when the interface fits the terminal' do
24
+ IO.console.stub(:winsize, [25, 80]) do
25
+ geometry = Geometry.new({ width: 5, height: 20, x: 1, y: 5 })
26
+ geometry.viewport_height.must_equal(20)
27
+ end
28
+ end
29
+
30
+ it 'returns the viewport height when the interface does not fit the ' \
31
+ 'terminal' do
32
+ IO.console.stub(:winsize, [15, 80]) do
33
+ geometry = Geometry.new({ width: 5, height: 20, x: 1, y: 5 })
34
+ geometry.viewport_height.must_equal(10)
35
+ end
36
+ end
37
+ end
38
+
5
39
  describe '#origin' do
6
40
  it 'returns the origin for the interface' do
7
41
  geometry = Geometry.new({ width: 5, height: 5 })
@@ -63,18 +63,6 @@ module Vedeu
63
63
  end
64
64
  end
65
65
 
66
- describe '#colour' do
67
- it 'returns the value' do
68
- interface.colour.must_be_instance_of(Colour)
69
- end
70
- end
71
-
72
- describe '#style' do
73
- it 'returns the value' do
74
- interface.style.must_equal('')
75
- end
76
- end
77
-
78
66
  describe '#geometry' do
79
67
  it 'returns the value' do
80
68
  interface.geometry.must_be_instance_of(Geometry)
@@ -20,29 +20,17 @@ module Vedeu
20
20
  end
21
21
  end
22
22
 
23
- describe '#colour' do
24
- it 'has a colour attribute' do
25
- line.colour.must_be_instance_of(Colour)
26
- end
27
- end
28
-
29
23
  describe '#streams' do
30
24
  it 'has a streams attribute' do
31
25
  line.streams.must_equal([])
32
26
  end
33
27
  end
34
28
 
35
- describe '#style' do
36
- it 'has a style attribute' do
37
- line.style.must_equal("\e[24m\e[21m\e[27m")
38
- end
39
- end
40
-
41
29
  describe '#to_s' do
42
30
  it 'returns a String' do
43
31
  line.to_s.must_equal(
44
32
  "\e[38;2;255;0;0m\e[48;2;0;0;0m" \
45
- "\e[24m\e[21m\e[27m"
33
+ "\e[24m\e[22m\e[27m"
46
34
  )
47
35
  end
48
36
  end
@@ -18,24 +18,12 @@ module Vedeu
18
18
  let(:align) { :left }
19
19
  let(:width) { 9 }
20
20
 
21
- describe '#colour' do
22
- it 'has a colour attribute' do
23
- stream.colour.must_be_instance_of(Colour)
24
- end
25
- end
26
-
27
21
  describe '#text' do
28
22
  it 'has a text attribute' do
29
23
  stream.text.must_equal('Some text')
30
24
  end
31
25
  end
32
26
 
33
- describe '#style' do
34
- it 'has a style attribute' do
35
- stream.style.must_equal("\e[24m\e[21m\e[27m")
36
- end
37
- end
38
-
39
27
  describe '#width' do
40
28
  it 'has a width attribute' do
41
29
  stream.width.must_equal(9)
@@ -48,40 +36,6 @@ module Vedeu
48
36
  end
49
37
  end
50
38
 
51
- describe '#style' do
52
- describe 'for a single style' do
53
- let(:style) { 'normal' }
54
-
55
- it 'returns an escape sequence' do
56
- stream.style.must_equal("\e[24m\e[21m\e[27m")
57
- end
58
- end
59
-
60
- describe 'for multiple styles' do
61
- let(:style) { ['normal', 'underline'] }
62
-
63
- it 'returns an escape sequence for multiple styles' do
64
- stream.style.must_equal("\e[24m\e[21m\e[27m\e[4m")
65
- end
66
- end
67
-
68
- describe 'for an unknown style' do
69
- let(:style) { 'unknown' }
70
-
71
- it 'returns an empty string for an unknown style' do
72
- stream.style.must_equal('')
73
- end
74
- end
75
-
76
- describe 'for an empty or nil' do
77
- let(:style) { '' }
78
-
79
- it 'returns an empty string for empty or nil' do
80
- stream.style.must_equal('')
81
- end
82
- end
83
- end
84
-
85
39
  describe '#to_s' do
86
40
  describe 'when a width is set and align is default' do
87
41
  let(:width) { 20 }
@@ -89,7 +43,7 @@ module Vedeu
89
43
  it 'returns a String' do
90
44
  stream.to_s.must_equal(
91
45
  "\e[38;2;255;0;0m\e[48;2;0;0;0m" \
92
- "\e[24m\e[21m\e[27m" \
46
+ "\e[24m\e[22m\e[27m" \
93
47
  "Some text "
94
48
  )
95
49
  end
@@ -100,7 +54,7 @@ module Vedeu
100
54
  it 'returns a String' do
101
55
  stream.to_s.must_equal(
102
56
  "\e[38;2;255;0;0m\e[48;2;0;0;0m" \
103
- "\e[24m\e[21m\e[27m" \
57
+ "\e[24m\e[22m\e[27m" \
104
58
  " Some text "
105
59
  )
106
60
  end
@@ -112,7 +66,7 @@ module Vedeu
112
66
  it 'returns a String' do
113
67
  stream.to_s.must_equal(
114
68
  "\e[38;2;255;0;0m\e[48;2;0;0;0m" \
115
- "\e[24m\e[21m\e[27m" \
69
+ "\e[24m\e[22m\e[27m" \
116
70
  " Some text"
117
71
  )
118
72
  end
@@ -123,7 +77,7 @@ module Vedeu
123
77
  it 'returns a String' do
124
78
  stream.to_s.must_equal(
125
79
  "\e[38;2;255;0;0m\e[48;2;0;0;0m" \
126
- "\e[24m\e[21m\e[27m" \
80
+ "\e[24m\e[22m\e[27m" \
127
81
  "Some text"
128
82
  )
129
83
  end