vedeu 0.2.11 → 0.2.12

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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/examples/borders_app.rb +171 -0
  3. data/lib/vedeu.rb +1 -1
  4. data/lib/vedeu/api/interface.rb +12 -0
  5. data/lib/vedeu/api/menu.rb +1 -1
  6. data/lib/vedeu/colours/colour.rb +1 -1
  7. data/lib/vedeu/models/border.rb +238 -0
  8. data/lib/vedeu/models/char.rb +1 -1
  9. data/lib/vedeu/models/composition.rb +1 -1
  10. data/lib/vedeu/models/geometry.rb +1 -1
  11. data/lib/vedeu/models/line.rb +1 -1
  12. data/lib/vedeu/models/stream.rb +1 -1
  13. data/lib/vedeu/output/output.rb +1 -1
  14. data/lib/vedeu/output/viewport.rb +34 -3
  15. data/lib/vedeu/repositories/models/cursor.rb +34 -7
  16. data/lib/vedeu/repositories/models/event.rb +1 -1
  17. data/lib/vedeu/repositories/models/group.rb +1 -1
  18. data/lib/vedeu/repositories/models/interface.rb +14 -6
  19. data/lib/vedeu/repositories/models/keymap.rb +1 -1
  20. data/lib/vedeu/repositories/models/offset.rb +1 -1
  21. data/lib/vedeu/support/trace.rb +1 -1
  22. data/test/integration/views/basic_view_test.rb +19 -0
  23. data/test/lib/vedeu/api/api_test.rb +6 -5
  24. data/test/lib/vedeu/api/helpers_test.rb +2 -6
  25. data/test/lib/vedeu/api/interface_test.rb +53 -45
  26. data/test/lib/vedeu/api/menu_test.rb +6 -0
  27. data/test/lib/vedeu/api/stream_test.rb +1 -3
  28. data/test/lib/vedeu/application_test.rb +6 -12
  29. data/test/lib/vedeu/colours/colour_test.rb +16 -5
  30. data/test/lib/vedeu/colours/translator_test.rb +7 -2
  31. data/test/lib/vedeu/configuration/cli_test.rb +9 -0
  32. data/test/lib/vedeu/input/input_test.rb +5 -5
  33. data/test/lib/vedeu/launcher_test.rb +9 -3
  34. data/test/lib/vedeu/models/border_test.rb +197 -0
  35. data/test/lib/vedeu/models/char_test.rb +18 -15
  36. data/test/lib/vedeu/models/composition_test.rb +6 -7
  37. data/test/lib/vedeu/models/geometry_test.rb +43 -49
  38. data/test/lib/vedeu/models/key_test.rb +7 -5
  39. data/test/lib/vedeu/models/line_test.rb +12 -16
  40. data/test/lib/vedeu/models/stream_test.rb +20 -10
  41. data/test/lib/vedeu/models/style_test.rb +9 -10
  42. data/test/lib/vedeu/output/compositor_test.rb +7 -22
  43. data/test/lib/vedeu/output/output_test.rb +34 -33
  44. data/test/lib/vedeu/output/viewport_test.rb +6 -6
  45. data/test/lib/vedeu/repositories/models/buffer_test.rb +13 -18
  46. data/test/lib/vedeu/repositories/models/cursor_test.rb +21 -21
  47. data/test/lib/vedeu/repositories/models/event_test.rb +10 -4
  48. data/test/lib/vedeu/{models → repositories/models}/group_test.rb +8 -9
  49. data/test/lib/vedeu/repositories/models/interface_test.rb +37 -17
  50. data/test/lib/vedeu/repositories/models/keymap_test.rb +6 -6
  51. data/test/lib/vedeu/repositories/models/menu_test.rb +6 -3
  52. data/test/lib/vedeu/repositories/models/offset_test.rb +6 -3
  53. data/test/lib/vedeu/support/bounding_area_test.rb +28 -36
  54. data/test/lib/vedeu/support/grid_test.rb +8 -0
  55. data/test/lib/vedeu/support/keymap_validator_test.rb +5 -8
  56. data/test/lib/vedeu/support/position_test.rb +3 -3
  57. data/test/lib/vedeu/support/registrar_test.rb +13 -7
  58. data/test/lib/vedeu/support/sentence_test.rb +9 -2
  59. data/test/lib/vedeu/support/trace_test.rb +5 -3
  60. data/test/test_helper.rb +12 -0
  61. data/vedeu.gemspec +1 -1
  62. metadata +8 -7
  63. data/lib/vedeu/output/view.rb +0 -64
  64. data/test/lib/vedeu/output/view_test.rb +0 -21
@@ -7,9 +7,7 @@ module Vedeu
7
7
  describe Helpers do
8
8
 
9
9
  describe '#background' do
10
- it 'returns a Hash' do
11
- HelpersTestClass.new.background('#00ff00').must_be_instance_of(Hash)
12
- end
10
+ it { return_type_for(HelpersTestClass.new.background('#00ff00'), Hash) }
13
11
 
14
12
  it 'returns the value assigned' do
15
13
  HelpersTestClass.new.background('#00ff00').must_equal({ background: '#00ff00' })
@@ -21,9 +19,7 @@ module Vedeu
21
19
  end
22
20
 
23
21
  describe '#foreground' do
24
- it 'returns a Hash' do
25
- HelpersTestClass.new.foreground('#00ff00').must_be_instance_of(Hash)
26
- end
22
+ it { return_type_for(HelpersTestClass.new.foreground('#00ff00'), Hash) }
27
23
 
28
24
  it 'returns the value assigned' do
29
25
  HelpersTestClass.new.foreground('#00ff00').must_equal({ foreground: '#00ff00' })
@@ -20,18 +20,19 @@ module Vedeu
20
20
  colour foreground: '#aadd00', background: '#222222'
21
21
  end.must_equal(
22
22
  {
23
- name: '',
24
- cursor: :hide,
25
- group: '',
26
- lines: [],
23
+ border: {},
27
24
  colour: {
28
25
  foreground: '#aadd00',
29
26
  background: '#222222'
30
27
  },
31
- style: '',
32
- geometry: {},
28
+ cursor: :hide,
33
29
  delay: 0.0,
30
+ geometry: {},
31
+ group: '',
32
+ lines: [],
33
+ name: '',
34
34
  parent: nil,
35
+ style: '',
35
36
  }
36
37
  )
37
38
  end
@@ -41,15 +42,16 @@ module Vedeu
41
42
  style 'underline'
42
43
  end.must_equal(
43
44
  {
44
- name: '',
45
+ border: {},
46
+ colour: {},
45
47
  cursor: :hide,
48
+ delay: 0.0,
49
+ geometry: {},
46
50
  group: '',
47
51
  lines: [],
48
- colour: {},
49
- style: "underline",
50
- geometry: {},
51
- delay: 0.0,
52
+ name: '',
52
53
  parent: nil,
54
+ style: "underline",
53
55
  }
54
56
  )
55
57
  end
@@ -66,17 +68,18 @@ module Vedeu
66
68
  name 'my_other_interface'
67
69
  y use('my_interface').south
68
70
  end.must_equal({
69
- name: "my_other_interface",
70
- cursor: :hide,
71
- group: '',
72
- lines: [],
71
+ border: {},
73
72
  colour: {},
74
- style: '',
73
+ cursor: :hide,
74
+ delay: 0.0,
75
75
  geometry: {
76
76
  y: 11
77
77
  },
78
- delay: 0.0,
78
+ group: '',
79
+ lines: [],
80
+ name: "my_other_interface",
79
81
  parent: nil,
82
+ style: '',
80
83
  })
81
84
  end
82
85
  end
@@ -87,15 +90,16 @@ module Vedeu
87
90
  delay 1.0
88
91
  end.must_equal(
89
92
  {
90
- name: '',
93
+ border: {},
94
+ colour: {},
91
95
  cursor: :hide,
96
+ delay: 1.0,
97
+ geometry: {},
92
98
  group: '',
93
99
  lines: [],
94
- colour: {},
95
- style: '',
96
- geometry: {},
97
- delay: 1.0,
100
+ name: '',
98
101
  parent: nil,
102
+ style: '',
99
103
  })
100
104
  end
101
105
 
@@ -105,15 +109,16 @@ module Vedeu
105
109
  group 'my_group'
106
110
  end.must_equal(
107
111
  {
108
- name: '',
112
+ border: {},
113
+ colour: {},
109
114
  cursor: :hide,
115
+ delay: 0.0,
116
+ geometry: {},
110
117
  group: "my_group",
111
118
  lines: [],
112
- colour: {},
113
- style: '',
114
- geometry: {},
115
- delay: 0.0,
119
+ name: '',
116
120
  parent: nil,
121
+ style: '',
117
122
  }
118
123
  )
119
124
  end
@@ -246,24 +251,25 @@ module Vedeu
246
251
  interface.must_be_instance_of(API::Interface)
247
252
  interface.attributes.must_equal(
248
253
  {
249
- name: 'carbon',
254
+ border: {},
255
+ colour: {},
250
256
  cursor: :hide,
257
+ delay: 0.0,
258
+ geometry: {},
251
259
  group: '',
252
260
  lines: [
253
261
  {
254
262
  colour: {},
263
+ parent: interface.view_attributes,
255
264
  streams: {
256
265
  text: ''
257
266
  },
258
267
  style: [],
259
- parent: interface.view_attributes,
260
268
  }
261
269
  ],
262
- colour: {},
263
- style: '',
264
- geometry: {},
265
- delay: 0.0,
270
+ name: 'carbon',
266
271
  parent: nil,
272
+ style: '',
267
273
  }
268
274
  )
269
275
  end
@@ -275,24 +281,25 @@ module Vedeu
275
281
  interface.must_be_instance_of(API::Interface)
276
282
  interface.attributes.must_equal(
277
283
  {
278
- name: 'carbon',
284
+ border: {},
285
+ colour: {},
279
286
  cursor: :hide,
287
+ delay: 0.0,
288
+ geometry: {},
280
289
  group: '',
281
290
  lines: [
282
291
  {
283
292
  colour: {},
293
+ parent: interface.view_attributes,
284
294
  streams: {
285
295
  text: "This is some text..."
286
296
  },
287
297
  style: [],
288
- parent: interface.view_attributes,
289
298
  }
290
299
  ],
291
- colour: {},
292
- style: '',
293
- geometry: {},
294
- delay: 0.0,
300
+ name: 'carbon',
295
301
  parent: nil,
302
+ style: '',
296
303
  }
297
304
  )
298
305
  end
@@ -306,26 +313,27 @@ module Vedeu
306
313
  interface.must_be_instance_of(API::Interface)
307
314
  interface.attributes.must_equal(
308
315
  {
309
- name: "silicon",
316
+ border: {},
317
+ colour: {},
310
318
  cursor: :hide,
319
+ delay: 0.0,
320
+ geometry: {},
311
321
  group: '',
312
322
  lines: [
313
323
  {
314
324
  colour: {},
325
+ parent: interface.view_attributes,
315
326
  streams: [
316
327
  {
317
328
  text: "This is different text..."
318
329
  }
319
330
  ],
320
331
  style: [],
321
- parent: interface.view_attributes,
322
332
  }
323
333
  ],
324
- colour: {},
334
+ name: "silicon",
335
+ parent: nil,
325
336
  style: '',
326
- geometry: {},
327
- delay: 0.0,
328
- parent: nil
329
337
  }
330
338
  )
331
339
  end
@@ -37,6 +37,12 @@ module Vedeu
37
37
  it 'returns an instance of itself' do
38
38
  Menu.new.must_be_instance_of(Menu)
39
39
  end
40
+
41
+ it 'assigns the attributes' do
42
+ attributes = { name: '', items: [] }
43
+ subject = Menu.new(attributes)
44
+ assigns(subject, '@attributes', attributes)
45
+ end
40
46
  end
41
47
 
42
48
  describe '#items' do
@@ -7,9 +7,7 @@ module Vedeu
7
7
  describe Stream do
8
8
 
9
9
  describe '#align' do
10
- it 'returns a Symbol' do
11
- Stream.new.align(:left).must_be_instance_of(Symbol)
12
- end
10
+ it { return_type_for(Stream.new.align(:left), Symbol) }
13
11
 
14
12
  it 'returns the value assigned' do
15
13
  Stream.new.align(:left).must_equal(:left)
@@ -4,17 +4,15 @@ module Vedeu
4
4
 
5
5
  describe Application do
6
6
 
7
+ let(:described) { Application.new }
8
+
7
9
  before { Terminal.stubs(:open).returns(['']) }
8
10
 
9
11
  describe '.start' do
10
- it 'returns an Array' do
11
- Application.start.must_be_instance_of(Array)
12
- end
12
+ it { return_type_for(Application.start, Array) }
13
13
 
14
14
  context 'alias method: .restart' do
15
- it 'returns an Array' do
16
- Application.restart.must_be_instance_of(Array)
17
- end
15
+ it { return_type_for(Application.restart, Array) }
18
16
  end
19
17
  end
20
18
 
@@ -25,15 +23,11 @@ module Vedeu
25
23
  end
26
24
 
27
25
  describe '#initialize' do
28
- it 'returns an Application' do
29
- Application.new.must_be_instance_of(Application)
30
- end
26
+ it { return_type_for(described, Application) }
31
27
  end
32
28
 
33
29
  describe '#start' do
34
- it 'returns an Array' do
35
- Application.new.start.must_be_instance_of(Array)
36
- end
30
+ it { return_type_for(described.start, Array) }
37
31
  end
38
32
 
39
33
  end # Application
@@ -4,15 +4,22 @@ module Vedeu
4
4
 
5
5
  describe Colour do
6
6
 
7
- describe '#initialize' do
8
- it 'returns an instance of itself' do
9
- attributes = {}
7
+ let(:described) { Colour.new(attributes) }
8
+ let(:attributes) {
9
+ {
10
+ background: '',
11
+ foreground: ''
12
+ }
13
+ }
10
14
 
11
- Colour.new(attributes).must_be_instance_of(Colour)
12
- end
15
+ describe '#initialize' do
16
+ it { return_type_for(described, Colour) }
17
+ it { assigns(described, '@attributes', attributes) }
13
18
  end
14
19
 
15
20
  describe '#background' do
21
+ it { return_type_for(described.background, String) }
22
+
16
23
  it 'returns an escape sequence' do
17
24
  Colour.new({
18
25
  background: '#000000'
@@ -25,6 +32,8 @@ module Vedeu
25
32
  end
26
33
 
27
34
  describe '#foreground' do
35
+ it { return_type_for(described.foreground, String) }
36
+
28
37
  it 'returns an escape sequence' do
29
38
  Colour.new({
30
39
  foreground: '#ff0000'
@@ -37,6 +46,8 @@ module Vedeu
37
46
  end
38
47
 
39
48
  describe '#to_s' do
49
+ it { return_type_for(described.to_s, String) }
50
+
40
51
  it 'returns an escape sequence' do
41
52
  Colour.new({
42
53
  foreground: '#ff0000',
@@ -4,11 +4,16 @@ module Vedeu
4
4
 
5
5
  describe Translator do
6
6
 
7
+ colour = '#ff0000'
8
+ described = Translator.new(colour)
9
+
7
10
  describe '#initialize' do
8
11
  it 'returns an instance of itself' do
9
- colour = ''
12
+ described.must_be_instance_of(Translator)
13
+ end
10
14
 
11
- Translator.new(colour).must_be_instance_of(Translator)
15
+ it 'assigns the colour' do
16
+ assigns(described, '@colour', colour)
12
17
  end
13
18
  end
14
19
 
@@ -6,9 +6,18 @@ module Vedeu
6
6
 
7
7
  describe CLI do
8
8
 
9
+ let(:described) { CLI.new(args) }
10
+ let(:args) { [] }
11
+
9
12
  before { Configuration.reset! }
10
13
  after { test_configuration }
11
14
 
15
+ describe '#initialize' do
16
+ it { return_type_for(described, CLI) }
17
+ it { assigns(described, '@args', args) }
18
+ it { assigns(described, '@options', {}) }
19
+ end
20
+
12
21
  describe '#colour_mode' do
13
22
  it '--colour-mode' do
14
23
  Configuration.configure(['--colour-mode', '16777216'])
@@ -3,15 +3,15 @@ require 'test_helper'
3
3
  module Vedeu
4
4
 
5
5
  describe Input do
6
- let(:reader) { mock }
7
- let(:keypress) { 'a' }
6
+ let(:reader) { mock }
7
+ let(:keypress) { 'a' }
8
+ let(:described) { Input.new(reader) }
8
9
 
9
10
  before { reader.stubs(:read).returns(keypress) }
10
11
 
11
12
  describe '#initialize' do
12
- it 'returns an instance of itself' do
13
- Input.new(reader).must_be_instance_of(Input)
14
- end
13
+ it { return_type_for(described, Input) }
14
+ it { assigns(described, '@reader', reader) }
15
15
  end
16
16
 
17
17
  describe '.capture' do
@@ -3,6 +3,8 @@ require 'test_helper'
3
3
  module Vedeu
4
4
 
5
5
  describe Launcher do
6
+ let(:described) { Launcher.new }
7
+
6
8
  before do
7
9
  Configuration.stubs(:configure)
8
10
  Application.stubs(:start)
@@ -15,9 +17,13 @@ module Vedeu
15
17
  end
16
18
 
17
19
  describe '#initialize' do
18
- it 'returns an instance of itself' do
19
- Launcher.new.must_be_instance_of(Launcher)
20
- end
20
+ it { return_type_for(described, Launcher) }
21
+ it { assigns(described, '@argv', []) }
22
+ it { assigns(described, '@stdin', STDIN) }
23
+ it { assigns(described, '@stdout', STDOUT) }
24
+ it { assigns(described, '@stderr', STDERR) }
25
+ it { assigns(described, '@kernel', Kernel) }
26
+ it { assigns(described, '@exit_code', 1) }
21
27
  end
22
28
 
23
29
  describe '#execute!' do
@@ -0,0 +1,197 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ describe Border do
6
+
7
+ let(:described) { Border.new(interface, attributes) }
8
+ let(:interface) { Interface.new({
9
+ geometry: {
10
+ width: 8,
11
+ height: 5
12
+ },
13
+ lines: [
14
+ { streams: [{ text: 'Beryllium' }] },
15
+ { streams: [{ text: 'Magnesium' }] },
16
+ { streams: [{ text: 'Plutonium' }] },
17
+ { streams: [{ text: 'Potassium' }] },
18
+ { streams: [{ text: 'Lanthanum' }] },
19
+ { streams: [{ text: 'Stront­ium' }] },
20
+ ]
21
+ })
22
+ }
23
+ let(:attributes) { { } }
24
+ let(:options) { { } }
25
+
26
+ describe '#initialize' do
27
+ it { return_type_for(described, Border) }
28
+ it { assigns(described, '@interface', interface) }
29
+ it { assigns(described, '@attributes', {
30
+ enabled: false,
31
+ show_bottom: true,
32
+ show_left: true,
33
+ show_right: true,
34
+ show_top: true,
35
+ bottom_right: 'j',
36
+ top_right: 'k',
37
+ top_left: 'l',
38
+ bottom_left: 'm',
39
+ horizontal: 'q',
40
+ colour: {},
41
+ style: [],
42
+ vertical: 'x'
43
+ })
44
+ }
45
+ end
46
+
47
+ describe '#bottom?' do
48
+ it { return_type_for(described.bottom?, TrueClass) }
49
+ end
50
+
51
+ describe '#left?' do
52
+ it { return_type_for(described.left?, TrueClass) }
53
+ end
54
+
55
+ describe '#right?' do
56
+ it { return_type_for(described.right?, TrueClass) }
57
+ end
58
+
59
+ describe '#top?' do
60
+ it { return_type_for(described.top?, TrueClass) }
61
+ end
62
+
63
+ describe '#to_s' do
64
+ context 'when all borders should be shown' do
65
+ it 'returns the escape sequences to draw a border' do
66
+ Border.new(interface, { enabled: true }).to_s.must_equal(
67
+ "\e(0l\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0k\e(B\n" \
68
+ "\e(0x\e(BBeryll\e(0x\e(B\n" \
69
+ "\e(0x\e(BMagnes\e(0x\e(B\n" \
70
+ "\e(0x\e(BPluton\e(0x\e(B\n" \
71
+ "\e(0m\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0j\e(B"
72
+ )
73
+ end
74
+ end
75
+
76
+ context 'when no borders are shown' do
77
+ it 'returns the escape sequences to draw a border' do
78
+ Border.new(interface, { enabled: true,
79
+ show_bottom: false,
80
+ show_left: false,
81
+ show_right: false,
82
+ show_top: false }).to_s.must_equal(
83
+ "Berylliu\n" \
84
+ "Magnesiu\n" \
85
+ "Plutoniu\n" \
86
+ "Potassiu\n" \
87
+ "Lanthanu"
88
+ )
89
+ end
90
+ end
91
+
92
+ context 'when the left and right border is not shown' do
93
+ it 'returns the escape sequences to draw a border' do
94
+ Border.new(interface, { enabled: true,
95
+ show_left: false,
96
+ show_right: false }).to_s.must_equal(
97
+ "\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\n" \
98
+ "Berylliu\n" \
99
+ "Magnesiu\n" \
100
+ "Plutoniu\n" \
101
+ "\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B"
102
+ )
103
+ end
104
+ end
105
+
106
+ context 'when the top and bottom border is not shown' do
107
+ it 'returns the escape sequences to draw a border' do
108
+ Border.new(interface, { enabled: true,
109
+ show_bottom: false,
110
+ show_top: false }).to_s.must_equal(
111
+ "\e(0x\e(BBeryll\e(0x\e(B\n" \
112
+ "\e(0x\e(BMagnes\e(0x\e(B\n" \
113
+ "\e(0x\e(BPluton\e(0x\e(B\n" \
114
+ "\e(0x\e(BPotass\e(0x\e(B\n" \
115
+ "\e(0x\e(BLantha\e(0x\e(B"
116
+ )
117
+ end
118
+ end
119
+
120
+ context 'when the left border is shown, all others not shown' do
121
+ it 'returns the escape sequences to draw a border' do
122
+ Border.new(interface, { enabled: true,
123
+ show_bottom: false,
124
+ show_right: false,
125
+ show_top: false }).to_s.must_equal(
126
+ "\e(0x\e(BBerylli\n" \
127
+ "\e(0x\e(BMagnesi\n" \
128
+ "\e(0x\e(BPlutoni\n" \
129
+ "\e(0x\e(BPotassi\n" \
130
+ "\e(0x\e(BLanthan"
131
+ )
132
+ end
133
+ end
134
+
135
+ context 'when the right border is shown, all others not shown' do
136
+ it 'returns the escape sequences to draw a border' do
137
+ Border.new(interface, { enabled: true,
138
+ show_bottom: false,
139
+ show_left: false,
140
+ show_top: false }).to_s.must_equal(
141
+ "Berylli\e(0x\e(B\n" \
142
+ "Magnesi\e(0x\e(B\n" \
143
+ "Plutoni\e(0x\e(B\n" \
144
+ "Potassi\e(0x\e(B\n" \
145
+ "Lanthan\e(0x\e(B" \
146
+ )
147
+ end
148
+ end
149
+
150
+ context 'when the top border is shown, all others not shown' do
151
+ it 'returns the escape sequences to draw a border' do
152
+ Border.new(interface, { enabled: true,
153
+ show_bottom: false,
154
+ show_left: false,
155
+ show_right: false }).to_s.must_equal(
156
+ "\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\n" \
157
+ "Berylliu\n" \
158
+ "Magnesiu\n" \
159
+ "Plutoniu\n" \
160
+ "Potassiu"
161
+ )
162
+ end
163
+ end
164
+
165
+ context 'when the bottom border is shown, all others not shown' do
166
+ it 'returns the escape sequences to draw a border' do
167
+ Border.new(interface, { enabled: true,
168
+ show_left: false,
169
+ show_right: false,
170
+ show_top: false }).to_s.must_equal(
171
+ "Berylliu\n" \
172
+ "Magnesiu\n" \
173
+ "Plutoniu\n" \
174
+ "Potassiu\n" \
175
+ "\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B\e(0q\e(B"
176
+ )
177
+ end
178
+ end
179
+ end
180
+
181
+ describe '#to_viewport' do
182
+ it 'returns a value like Viewport#show but with borders' do
183
+ Border.new(interface, { enabled: true }).to_viewport.must_equal(
184
+ [
185
+ ["\e(0l\e(B", "\e(0q\e(B", "\e(0q\e(B", "\e(0q\e(B", "\e(0q\e(B", "\e(0q\e(B", "\e(0q\e(B", "\e(0k\e(B"],
186
+ ["\e(0x\e(B", "B", "e", "r", "y", "l", "l", "\e(0x\e(B"],
187
+ ["\e(0x\e(B", "M", "a", "g", "n", "e", "s", "\e(0x\e(B"],
188
+ ["\e(0x\e(B", "P", "l", "u", "t", "o", "n", "\e(0x\e(B"],
189
+ ["\e(0m\e(B", "\e(0q\e(B", "\e(0q\e(B", "\e(0q\e(B", "\e(0q\e(B", "\e(0q\e(B", "\e(0q\e(B", "\e(0j\e(B"]
190
+ ]
191
+ )
192
+ end
193
+ end
194
+
195
+ end # Border
196
+
197
+ end # Vedeu