vedeu 0.0.39 → 0.0.40
Sign up to get free protection for your applications and to get access to all the features.
- 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
|