vedeu 0.0.39 → 0.0.40

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -30
  3. data/Rakefile +8 -9
  4. data/bin/log +13 -0
  5. data/deps.md +11 -95
  6. data/lib/vedeu.rb +14 -46
  7. data/lib/vedeu/application.rb +4 -8
  8. data/lib/vedeu/instrumentation.rb +111 -0
  9. data/lib/vedeu/launcher.rb +2 -2
  10. data/lib/vedeu/models/attributes/interface_collection.rb +2 -2
  11. data/lib/vedeu/models/attributes/line_collection.rb +2 -2
  12. data/lib/vedeu/models/attributes/stream_collection.rb +2 -2
  13. data/lib/vedeu/models/colour.rb +1 -1
  14. data/lib/vedeu/models/composition.rb +1 -1
  15. data/lib/vedeu/models/interface.rb +18 -10
  16. data/lib/vedeu/models/line.rb +3 -3
  17. data/lib/vedeu/models/presentation.rb +1 -1
  18. data/lib/vedeu/models/stream.rb +2 -2
  19. data/lib/vedeu/models/style.rb +1 -1
  20. data/lib/vedeu/output/render_interface.rb +1 -1
  21. data/lib/vedeu/{support → parsing}/compositor.rb +1 -1
  22. data/lib/vedeu/parsing/hash_parser.rb +1 -1
  23. data/lib/vedeu/parsing/parser.rb +6 -10
  24. data/lib/vedeu/{models/builders → support}/builder.rb +19 -9
  25. data/lib/vedeu/support/esc.rb +1 -1
  26. data/lib/vedeu/support/events.rb +15 -19
  27. data/lib/vedeu/support/geometry.rb +3 -3
  28. data/lib/vedeu/{input → support}/input.rb +6 -9
  29. data/lib/vedeu/support/menu.rb +3 -3
  30. data/lib/vedeu/support/persistence.rb +41 -0
  31. data/lib/vedeu/support/terminal.rb +1 -1
  32. data/test/example_app/lib/app.rb +85 -5
  33. data/test/lib/vedeu/application_test.rb +2 -2
  34. data/test/lib/vedeu/configuration_test.rb +2 -2
  35. data/test/lib/vedeu/launcher_test.rb +2 -2
  36. data/test/lib/vedeu/models/attributes/collection_test.rb +2 -2
  37. data/test/lib/vedeu/models/attributes/interface_collection_test.rb +4 -4
  38. data/test/lib/vedeu/models/attributes/line_collection_test.rb +3 -3
  39. data/test/lib/vedeu/models/attributes/stream_collection_test.rb +3 -3
  40. data/test/lib/vedeu/models/colour_test.rb +2 -2
  41. data/test/lib/vedeu/models/composition_test.rb +19 -19
  42. data/test/lib/vedeu/models/interface_test.rb +46 -34
  43. data/test/lib/vedeu/models/line_test.rb +2 -2
  44. data/test/lib/vedeu/models/presentation_test.rb +2 -2
  45. data/test/lib/vedeu/models/stream_test.rb +2 -2
  46. data/test/lib/vedeu/models/style_test.rb +31 -31
  47. data/test/lib/vedeu/output/clear_interface_test.rb +5 -5
  48. data/test/lib/vedeu/output/render_interface_test.rb +5 -6
  49. data/test/lib/vedeu/output/template.rb +2 -1
  50. data/test/lib/vedeu/{support → parsing}/compositor_test.rb +6 -4
  51. data/test/lib/vedeu/parsing/hash_parser_test.rb +2 -2
  52. data/test/lib/vedeu/parsing/json_parser_test.rb +2 -2
  53. data/test/lib/vedeu/parsing/parser_test.rb +6 -5
  54. data/test/lib/vedeu/parsing/text_adaptor_test.rb +2 -2
  55. data/test/lib/vedeu/{models/builders/interface_builder_test.rb → support/builder_test.rb} +10 -10
  56. data/test/lib/vedeu/support/esc_test.rb +2 -2
  57. data/test/lib/vedeu/support/events_test.rb +2 -2
  58. data/test/lib/vedeu/support/geometry_test.rb +2 -2
  59. data/test/lib/vedeu/{input → support}/input_test.rb +6 -7
  60. data/test/lib/vedeu/support/menu_test.rb +2 -2
  61. data/test/lib/vedeu/support/persistence_test.rb +55 -0
  62. data/test/lib/vedeu/support/queue_test.rb +2 -2
  63. data/test/lib/vedeu/support/terminal_test.rb +2 -2
  64. data/test/lib/vedeu/support/translator_test.rb +2 -2
  65. data/test/lib/vedeu/support/wordwrap_test.rb +2 -2
  66. data/test/lib/vedeu_test.rb +17 -2
  67. data/test/support/bench.rb +34 -0
  68. data/test/test_helper.rb +3 -11
  69. data/vedeu.gemspec +2 -2
  70. metadata +20 -44
  71. data/lib/vedeu/models/builders/command_builder.rb +0 -10
  72. data/lib/vedeu/models/builders/interface_builder.rb +0 -32
  73. data/lib/vedeu/models/command.rb +0 -23
  74. data/lib/vedeu/output/output.rb +0 -14
  75. data/lib/vedeu/process/process.rb +0 -51
  76. data/lib/vedeu/repository/command_repository.rb +0 -31
  77. data/lib/vedeu/repository/interface_repository.rb +0 -31
  78. data/lib/vedeu/repository/repository.rb +0 -41
  79. data/lib/vedeu/repository/storage.rb +0 -40
  80. data/lib/vedeu/support/exit.rb +0 -9
  81. data/test/lib/vedeu/models/builders/builder_test.rb +0 -11
  82. data/test/lib/vedeu/models/builders/command_builder_test.rb +0 -16
  83. data/test/lib/vedeu/models/command_test.rb +0 -40
  84. data/test/lib/vedeu/output/output_test.rb +0 -19
  85. data/test/lib/vedeu/process/process_test.rb +0 -71
  86. data/test/lib/vedeu/repository/command_repository_test.rb +0 -55
  87. data/test/lib/vedeu/repository/interface_repository_test.rb +0 -67
  88. data/test/lib/vedeu/repository/repository_test.rb +0 -81
  89. data/test/lib/vedeu/repository/storage_test.rb +0 -70
  90. data/test/lib/vedeu/support/exit_test.rb +0 -12
  91. data/test/support/dummy_command.rb +0 -9
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/models/line'
1
+ require 'test_helper'
2
+ require 'vedeu/models/line'
3
3
 
4
4
  module Vedeu
5
5
  describe Line do
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/models/presentation'
1
+ require 'test_helper'
2
+ require 'vedeu/models/presentation'
3
3
 
4
4
  module Vedeu
5
5
  class TestPresentation
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/models/stream'
1
+ require 'test_helper'
2
+ require 'vedeu/models/stream'
3
3
 
4
4
  module Vedeu
5
5
  describe Stream do
@@ -1,6 +1,6 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/models/presentation'
3
- require_relative '../../../../lib/vedeu/models/style'
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
- test_style = TestStyle.new(style: 'normal')
15
- test_style.style.must_equal("\e[24m\e[21m\e[27m")
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
- test_style = TestStyle.new(style: ['normal', 'underline'])
20
- test_style.style.must_equal("\e[24m\e[21m\e[27m\e[4m")
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
- test_style = TestStyle.new(style: 'unknown')
25
- test_style.style.must_equal('')
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
- test_style = TestStyle.new(style: ['normal'])
30
- test_style.style.must_equal("\e[24m\e[21m\e[27m")
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
- test_style = TestStyle.new(style: '')
35
- test_style.style.must_equal('')
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
- test_style = TestStyle.new(style: nil)
40
- test_style.style.must_equal('')
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
- test_style = TestStyle.new(style: [])
45
- test_style.style.must_equal('')
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
- test_style = TestStyle.new(style: 'normal')
52
- test_style.style_original.must_equal(['normal'])
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
- test_style = TestStyle.new(style: ['normal', 'underline'])
57
- test_style.style_original.must_equal(['normal', 'underline'])
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
- test_style = TestStyle.new(style: 'unknown')
62
- test_style.style_original.must_equal(['unknown'])
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
- test_style = TestStyle.new(style: ['normal'])
67
- test_style.style_original.must_equal(['normal'])
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
- test_style = TestStyle.new(style: '')
72
- test_style.style_original.must_equal([''])
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
- test_style = TestStyle.new(style: nil)
77
- test_style.style_original.must_equal('')
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
- test_style = TestStyle.new(style: [])
82
- test_style.style_original.must_equal('')
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
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/repository/interface_repository'
3
- require_relative '../../../../lib/vedeu/output/clear_interface'
4
- require_relative '../../../../lib/vedeu/models/interface'
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 { InterfaceRepository.reset }
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
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/repository/interface_repository'
3
- require_relative '../../../../lib/vedeu/output/clear_interface'
4
- require_relative '../../../../lib/vedeu/output/render_interface'
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 { InterfaceRepository.reset }
8
+ before { Persistence.reset }
10
9
 
11
10
  describe '.call' do
12
11
  it 'returns the content for the interface' do
@@ -1,4 +1,5 @@
1
- require_relative '../../../test_helper'
1
+ require 'test_helper'
2
+ require 'vedeu/output/template'
2
3
 
3
4
  module Vedeu
4
5
  describe Template do
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/support/compositor'
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
- InterfaceRepository.query(:name, 'Compositor.enqueue_1').dequeue
33
+ Persistence
34
+ .query('Compositor.enqueue_1').dequeue
34
35
  .must_match(/bd459118e6175689e4394e242debc2ae/)
35
- InterfaceRepository.query(:name, 'Compositor.enqueue_2').dequeue
36
+ Persistence
37
+ .query('Compositor.enqueue_2').dequeue
36
38
  .must_match(/837acb2cb2ea3ef359257851142a7830/)
37
39
  end
38
40
  end
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/parsing/hash_parser'
1
+ require 'test_helper'
2
+ require 'vedeu/parsing/hash_parser'
3
3
 
4
4
  module Vedeu
5
5
  describe HashParser do
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/parsing/json_parser'
1
+ require 'test_helper'
2
+ require 'vedeu/parsing/json_parser'
3
3
 
4
4
  module Vedeu
5
5
  describe JSONParser do
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/parsing/parser'
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
- skip('This is not working as it should...')
12
+ file = File.read('test/support/json/int1_lin1_str1.json')
13
+ parser = Parser.parse(file)
13
14
 
14
- Parser.parse("{\"some\": \"JSON\"}")
15
- .must_be_instance_of(Composition)
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,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/parsing/text_adaptor'
1
+ require 'test_helper'
2
+ require 'vedeu/parsing/text_adaptor'
3
3
 
4
4
  module Vedeu
5
5
  describe TextAdaptor do
@@ -1,10 +1,10 @@
1
- require_relative '../../../../test_helper'
2
- require_relative '../../../../../lib/vedeu/models/builders/interface_builder'
1
+ require 'test_helper'
2
+ require 'vedeu/support/builder'
3
3
 
4
4
  module Vedeu
5
- describe InterfaceBuilder do
5
+ describe Builder do
6
6
  it 'creates and stores a new interface' do
7
- interface = InterfaceBuilder.build('widget') do
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 = InterfaceBuilder.build('widget') do
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
- interface.x.must_equal(15)
29
- interface.y.must_equal(4)
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 = InterfaceBuilder.build('widget') do
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 = InterfaceBuilder.build('main') do
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 = InterfaceBuilder.build('status') do
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
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/support/esc'
1
+ require 'test_helper'
2
+ require 'vedeu/support/esc'
3
3
 
4
4
  module Vedeu
5
5
  describe Esc do
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/support/events'
1
+ require 'test_helper'
2
+ require 'vedeu/support/events'
3
3
 
4
4
  module Vedeu
5
5
  describe Events do
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/support/geometry'
1
+ require 'test_helper'
2
+ require 'vedeu/support/geometry'
3
3
 
4
4
  module Vedeu
5
5
  describe Geometry do
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/input/input'
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 'enqueues the captured input from the terminal' do
41
- Queue.reset
40
+ it 'triggers a :key event with the key pressed' do
42
41
  Terminal.stub :input, keypress do
43
- Input.capture
44
- Queue.entries.must_equal([value])
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
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/support/menu'
1
+ require 'test_helper'
2
+ require 'vedeu/support/menu'
3
3
 
4
4
  module Vedeu
5
5
  describe Menu do
@@ -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
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/support/queue'
1
+ require 'test_helper'
2
+ require 'vedeu/support/queue'
3
3
 
4
4
  module Vedeu
5
5
  describe Queue do