vedeu 0.0.39 → 0.0.40
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 +4 -4
- data/README.md +0 -30
- data/Rakefile +8 -9
- data/bin/log +13 -0
- data/deps.md +11 -95
- data/lib/vedeu.rb +14 -46
- data/lib/vedeu/application.rb +4 -8
- data/lib/vedeu/instrumentation.rb +111 -0
- data/lib/vedeu/launcher.rb +2 -2
- data/lib/vedeu/models/attributes/interface_collection.rb +2 -2
- data/lib/vedeu/models/attributes/line_collection.rb +2 -2
- data/lib/vedeu/models/attributes/stream_collection.rb +2 -2
- data/lib/vedeu/models/colour.rb +1 -1
- data/lib/vedeu/models/composition.rb +1 -1
- data/lib/vedeu/models/interface.rb +18 -10
- data/lib/vedeu/models/line.rb +3 -3
- data/lib/vedeu/models/presentation.rb +1 -1
- data/lib/vedeu/models/stream.rb +2 -2
- data/lib/vedeu/models/style.rb +1 -1
- data/lib/vedeu/output/render_interface.rb +1 -1
- data/lib/vedeu/{support → parsing}/compositor.rb +1 -1
- data/lib/vedeu/parsing/hash_parser.rb +1 -1
- data/lib/vedeu/parsing/parser.rb +6 -10
- data/lib/vedeu/{models/builders → support}/builder.rb +19 -9
- data/lib/vedeu/support/esc.rb +1 -1
- data/lib/vedeu/support/events.rb +15 -19
- data/lib/vedeu/support/geometry.rb +3 -3
- data/lib/vedeu/{input → support}/input.rb +6 -9
- data/lib/vedeu/support/menu.rb +3 -3
- data/lib/vedeu/support/persistence.rb +41 -0
- data/lib/vedeu/support/terminal.rb +1 -1
- data/test/example_app/lib/app.rb +85 -5
- data/test/lib/vedeu/application_test.rb +2 -2
- data/test/lib/vedeu/configuration_test.rb +2 -2
- data/test/lib/vedeu/launcher_test.rb +2 -2
- data/test/lib/vedeu/models/attributes/collection_test.rb +2 -2
- data/test/lib/vedeu/models/attributes/interface_collection_test.rb +4 -4
- data/test/lib/vedeu/models/attributes/line_collection_test.rb +3 -3
- data/test/lib/vedeu/models/attributes/stream_collection_test.rb +3 -3
- data/test/lib/vedeu/models/colour_test.rb +2 -2
- data/test/lib/vedeu/models/composition_test.rb +19 -19
- data/test/lib/vedeu/models/interface_test.rb +46 -34
- data/test/lib/vedeu/models/line_test.rb +2 -2
- data/test/lib/vedeu/models/presentation_test.rb +2 -2
- data/test/lib/vedeu/models/stream_test.rb +2 -2
- data/test/lib/vedeu/models/style_test.rb +31 -31
- data/test/lib/vedeu/output/clear_interface_test.rb +5 -5
- data/test/lib/vedeu/output/render_interface_test.rb +5 -6
- data/test/lib/vedeu/output/template.rb +2 -1
- data/test/lib/vedeu/{support → parsing}/compositor_test.rb +6 -4
- data/test/lib/vedeu/parsing/hash_parser_test.rb +2 -2
- data/test/lib/vedeu/parsing/json_parser_test.rb +2 -2
- data/test/lib/vedeu/parsing/parser_test.rb +6 -5
- data/test/lib/vedeu/parsing/text_adaptor_test.rb +2 -2
- data/test/lib/vedeu/{models/builders/interface_builder_test.rb → support/builder_test.rb} +10 -10
- data/test/lib/vedeu/support/esc_test.rb +2 -2
- data/test/lib/vedeu/support/events_test.rb +2 -2
- data/test/lib/vedeu/support/geometry_test.rb +2 -2
- data/test/lib/vedeu/{input → support}/input_test.rb +6 -7
- data/test/lib/vedeu/support/menu_test.rb +2 -2
- data/test/lib/vedeu/support/persistence_test.rb +55 -0
- data/test/lib/vedeu/support/queue_test.rb +2 -2
- data/test/lib/vedeu/support/terminal_test.rb +2 -2
- data/test/lib/vedeu/support/translator_test.rb +2 -2
- data/test/lib/vedeu/support/wordwrap_test.rb +2 -2
- data/test/lib/vedeu_test.rb +17 -2
- data/test/support/bench.rb +34 -0
- data/test/test_helper.rb +3 -11
- data/vedeu.gemspec +2 -2
- metadata +20 -44
- data/lib/vedeu/models/builders/command_builder.rb +0 -10
- data/lib/vedeu/models/builders/interface_builder.rb +0 -32
- data/lib/vedeu/models/command.rb +0 -23
- data/lib/vedeu/output/output.rb +0 -14
- data/lib/vedeu/process/process.rb +0 -51
- data/lib/vedeu/repository/command_repository.rb +0 -31
- data/lib/vedeu/repository/interface_repository.rb +0 -31
- data/lib/vedeu/repository/repository.rb +0 -41
- data/lib/vedeu/repository/storage.rb +0 -40
- data/lib/vedeu/support/exit.rb +0 -9
- data/test/lib/vedeu/models/builders/builder_test.rb +0 -11
- data/test/lib/vedeu/models/builders/command_builder_test.rb +0 -16
- data/test/lib/vedeu/models/command_test.rb +0 -40
- data/test/lib/vedeu/output/output_test.rb +0 -19
- data/test/lib/vedeu/process/process_test.rb +0 -71
- data/test/lib/vedeu/repository/command_repository_test.rb +0 -55
- data/test/lib/vedeu/repository/interface_repository_test.rb +0 -67
- data/test/lib/vedeu/repository/repository_test.rb +0 -81
- data/test/lib/vedeu/repository/storage_test.rb +0 -70
- data/test/lib/vedeu/support/exit_test.rb +0 -12
- data/test/support/dummy_command.rb +0 -9
@@ -1,6 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require 'test_helper'
|
2
|
+
require 'vedeu/models/presentation'
|
3
|
+
require 'vedeu/models/style'
|
4
4
|
|
5
5
|
module Vedeu
|
6
6
|
class TestStyle
|
@@ -11,75 +11,75 @@ module Vedeu
|
|
11
11
|
describe Style do
|
12
12
|
describe '#style' do
|
13
13
|
it 'returns an escape sequence for a single style' do
|
14
|
-
|
15
|
-
|
14
|
+
model = TestStyle.new(style: 'normal')
|
15
|
+
model.style.must_equal("\e[24m\e[21m\e[27m")
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'returns an escape sequence for multiple styles' do
|
19
|
-
|
20
|
-
|
19
|
+
model = TestStyle.new(style: ['normal', 'underline'])
|
20
|
+
model.style.must_equal("\e[24m\e[21m\e[27m\e[4m")
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'returns an empty string for an unknown style' do
|
24
|
-
|
25
|
-
|
24
|
+
model = TestStyle.new(style: 'unknown')
|
25
|
+
model.style.must_equal('')
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'has a style attribute' do
|
29
|
-
|
30
|
-
|
29
|
+
model = TestStyle.new(style: ['normal'])
|
30
|
+
model.style.must_equal("\e[24m\e[21m\e[27m")
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'returns an empty string for empty or nil' do
|
34
|
-
|
35
|
-
|
34
|
+
model = TestStyle.new(style: '')
|
35
|
+
model.style.must_equal('')
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'returns an empty string for empty or nil' do
|
39
|
-
|
40
|
-
|
39
|
+
model = TestStyle.new(style: nil)
|
40
|
+
model.style.must_equal('')
|
41
41
|
end
|
42
42
|
|
43
43
|
it 'returns an empty string for empty or nil' do
|
44
|
-
|
45
|
-
|
44
|
+
model = TestStyle.new(style: [])
|
45
|
+
model.style.must_equal('')
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
49
|
describe '#style_original' do
|
50
50
|
it 'returns an escape sequence for a single style' do
|
51
|
-
|
52
|
-
|
51
|
+
model = TestStyle.new(style: 'normal')
|
52
|
+
model.style_original.must_equal(['normal'])
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'returns an escape sequence for multiple styles' do
|
56
|
-
|
57
|
-
|
56
|
+
model = TestStyle.new(style: ['normal', 'underline'])
|
57
|
+
model.style_original.must_equal(['normal', 'underline'])
|
58
58
|
end
|
59
59
|
|
60
60
|
it 'returns an empty string for an unknown style' do
|
61
|
-
|
62
|
-
|
61
|
+
model = TestStyle.new(style: 'unknown')
|
62
|
+
model.style_original.must_equal(['unknown'])
|
63
63
|
end
|
64
64
|
|
65
65
|
it 'has a style attribute' do
|
66
|
-
|
67
|
-
|
66
|
+
model = TestStyle.new(style: ['normal'])
|
67
|
+
model.style_original.must_equal(['normal'])
|
68
68
|
end
|
69
69
|
|
70
70
|
it 'returns an empty string for empty or nil' do
|
71
|
-
|
72
|
-
|
71
|
+
model = TestStyle.new(style: '')
|
72
|
+
model.style_original.must_equal([''])
|
73
73
|
end
|
74
74
|
|
75
75
|
it 'returns an empty string for empty or nil' do
|
76
|
-
|
77
|
-
|
76
|
+
model = TestStyle.new(style: nil)
|
77
|
+
model.style_original.must_equal('')
|
78
78
|
end
|
79
79
|
|
80
80
|
it 'returns an empty string for empty or nil' do
|
81
|
-
|
82
|
-
|
81
|
+
model = TestStyle.new(style: [])
|
82
|
+
model.style_original.must_equal('')
|
83
83
|
end
|
84
84
|
end
|
85
85
|
end
|
@@ -1,11 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
require 'test_helper'
|
2
|
+
require 'vedeu/output/clear_interface'
|
3
|
+
require 'vedeu/models/interface'
|
4
|
+
require 'vedeu/support/persistence'
|
5
5
|
|
6
6
|
module Vedeu
|
7
7
|
describe ClearInterface do
|
8
|
-
before {
|
8
|
+
before { Persistence.reset }
|
9
9
|
|
10
10
|
describe '.call' do
|
11
11
|
it 'returns the escape sequence to clear the whole interface' do
|
@@ -1,12 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
require_relative '../../../../lib/vedeu/models/interface'
|
1
|
+
require 'test_helper'
|
2
|
+
require 'vedeu/output/render_interface'
|
3
|
+
require 'vedeu/models/interface'
|
4
|
+
require 'vedeu/support/persistence'
|
6
5
|
|
7
6
|
module Vedeu
|
8
7
|
describe RenderInterface do
|
9
|
-
before {
|
8
|
+
before { Persistence.reset }
|
10
9
|
|
11
10
|
describe '.call' do
|
12
11
|
it 'returns the content for the interface' do
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require 'test_helper'
|
2
|
+
require 'vedeu/parsing/compositor'
|
3
3
|
|
4
4
|
module Vedeu
|
5
5
|
describe Compositor do
|
@@ -30,9 +30,11 @@ module Vedeu
|
|
30
30
|
}
|
31
31
|
|
32
32
|
Compositor.enqueue(attributes)
|
33
|
-
|
33
|
+
Persistence
|
34
|
+
.query('Compositor.enqueue_1').dequeue
|
34
35
|
.must_match(/bd459118e6175689e4394e242debc2ae/)
|
35
|
-
|
36
|
+
Persistence
|
37
|
+
.query('Compositor.enqueue_2').dequeue
|
36
38
|
.must_match(/837acb2cb2ea3ef359257851142a7830/)
|
37
39
|
end
|
38
40
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require 'test_helper'
|
2
|
+
require 'vedeu/parsing/parser'
|
3
3
|
|
4
4
|
module Vedeu
|
5
5
|
describe Parser do
|
@@ -9,10 +9,11 @@ module Vedeu
|
|
9
9
|
end
|
10
10
|
|
11
11
|
it 'returns a Composition when the output is JSON' do
|
12
|
-
|
12
|
+
file = File.read('test/support/json/int1_lin1_str1.json')
|
13
|
+
parser = Parser.parse(file)
|
13
14
|
|
14
|
-
|
15
|
-
|
15
|
+
parser.must_be_instance_of(Array)
|
16
|
+
parser.size.must_equal(1)
|
16
17
|
end
|
17
18
|
|
18
19
|
it 'returns a collection of interfaces when the output is a Hash' do
|
@@ -1,10 +1,10 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require 'test_helper'
|
2
|
+
require 'vedeu/support/builder'
|
3
3
|
|
4
4
|
module Vedeu
|
5
|
-
describe
|
5
|
+
describe Builder do
|
6
6
|
it 'creates and stores a new interface' do
|
7
|
-
interface =
|
7
|
+
interface = Builder.build('widget') do
|
8
8
|
colour foreground: '#ff0000', background: '#5f0000'
|
9
9
|
cursor false
|
10
10
|
width 10
|
@@ -16,7 +16,7 @@ module Vedeu
|
|
16
16
|
|
17
17
|
it 'overrides x and y when centred is true' do
|
18
18
|
IO.console.stub :winsize, [10, 40] do
|
19
|
-
interface =
|
19
|
+
interface = Builder.build('widget') do
|
20
20
|
colour foreground: '#ff0000', background: '#5f0000'
|
21
21
|
cursor false
|
22
22
|
centred true
|
@@ -25,13 +25,13 @@ module Vedeu
|
|
25
25
|
x 5
|
26
26
|
y 5
|
27
27
|
end
|
28
|
-
|
29
|
-
|
28
|
+
interface.x.must_equal(15)
|
29
|
+
interface.y.must_equal(4)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'uses x and y when centred is false' do
|
34
|
-
interface =
|
34
|
+
interface = Builder.build('widget') do
|
35
35
|
colour foreground: '#ff0000', background: '#5f0000'
|
36
36
|
cursor false
|
37
37
|
centred false
|
@@ -46,14 +46,14 @@ module Vedeu
|
|
46
46
|
|
47
47
|
it 'allows interfaces to share behaviour' do
|
48
48
|
IO.console.stub :winsize, [10, 40] do
|
49
|
-
main =
|
49
|
+
main = Builder.build('main') do
|
50
50
|
colour foreground: '#ff0000', background: '#000000'
|
51
51
|
cursor false
|
52
52
|
centred true
|
53
53
|
width 10
|
54
54
|
height 2
|
55
55
|
end
|
56
|
-
status =
|
56
|
+
status = Builder.build('status') do
|
57
57
|
colour foreground: 'aadd00', background: '#4040cc'
|
58
58
|
cursor true
|
59
59
|
centred true
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require 'test_helper'
|
2
|
+
require 'vedeu/support/input'
|
3
3
|
|
4
4
|
module Vedeu
|
5
5
|
describe Input do
|
@@ -37,17 +37,16 @@ module Vedeu
|
|
37
37
|
}
|
38
38
|
|
39
39
|
keypresses.each do |keypress, value|
|
40
|
-
it '
|
41
|
-
Queue.reset
|
40
|
+
it 'triggers a :key event with the key pressed' do
|
42
41
|
Terminal.stub :input, keypress do
|
43
|
-
|
44
|
-
|
42
|
+
Vedeu.stub :trigger, value do
|
43
|
+
Input.capture.must_equal(value)
|
44
|
+
end
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
49
|
it 'switches the terminal mode when escape is pressed' do
|
50
|
-
Queue.reset
|
51
50
|
Terminal.stub :input, "\e" do
|
52
51
|
proc { Input.capture }.must_raise(ModeSwitch)
|
53
52
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'vedeu/support/persistence'
|
3
|
+
|
4
|
+
module Vedeu
|
5
|
+
describe Persistence do
|
6
|
+
before { Persistence.reset }
|
7
|
+
|
8
|
+
describe '.update' do
|
9
|
+
it 'returns an Interface' do
|
10
|
+
Persistence.update('dummy', { name: 'dumber' })
|
11
|
+
.must_be_instance_of(Interface)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'updates and returns the existing interface when the interface exists' do
|
15
|
+
Persistence.update('dummy', { name: 'dumber' }).name
|
16
|
+
.must_equal('dumber')
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'returns a new interface when the interface does not exist' do
|
20
|
+
Persistence.update('dummy', { name: 'dumber' }).name
|
21
|
+
.must_equal('dumber')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#create' do
|
26
|
+
it 'creates and returns the stored record' do
|
27
|
+
Persistence.create({ name: 'dummy' })
|
28
|
+
.must_be_instance_of(Interface)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#query' do
|
33
|
+
it 'returns false if the value is not provided' do
|
34
|
+
Persistence.query(nil).must_equal(false)
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'returns the record if found' do
|
38
|
+
Persistence.create({ name: 'hydrogen' })
|
39
|
+
|
40
|
+
Persistence.query('hydrogen').name.must_equal('hydrogen')
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'raises an exception when the record cannot be found' do
|
44
|
+
proc { Persistence.query('dummy') }.must_raise(EntityNotFound)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '#reset' do
|
49
|
+
it 'deletes all records stored' do
|
50
|
+
Persistence.create({ name: 'dumb' })
|
51
|
+
Persistence.reset.must_equal({})
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|