vedeu 0.0.14 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/lib/vedeu.rb +0 -18
  3. data/lib/vedeu/output/colour.rb +18 -7
  4. data/lib/vedeu/output/compositor.rb +20 -8
  5. data/lib/vedeu/process/process.rb +1 -5
  6. data/lib/vedeu/repository/command.rb +12 -0
  7. data/lib/vedeu/repository/command_repository.rb +10 -2
  8. data/lib/vedeu/repository/dummy_command.rb +2 -0
  9. data/lib/vedeu/repository/dummy_interface.rb +3 -1
  10. data/lib/vedeu/repository/interface.rb +31 -4
  11. data/lib/vedeu/repository/interface_repository.rb +5 -1
  12. data/lib/vedeu/repository/storage.rb +1 -1
  13. data/lib/vedeu/support/terminal.rb +13 -3
  14. data/lib/vedeu/version.rb +1 -1
  15. data/test/lib/vedeu/application_test.rb +6 -2
  16. data/test/lib/vedeu/launcher_test.rb +3 -1
  17. data/test/lib/vedeu/output/background_test.rb +30 -10
  18. data/test/lib/vedeu/output/colour_test.rb +39 -2
  19. data/test/lib/vedeu/output/compositor_test.rb +48 -14
  20. data/test/lib/vedeu/output/directive_test.rb +24 -8
  21. data/test/lib/vedeu/output/esc_test.rb +48 -16
  22. data/test/lib/vedeu/output/foreground_test.rb +30 -10
  23. data/test/lib/vedeu/output/geometry_test.rb +78 -28
  24. data/test/lib/vedeu/output/position_test.rb +9 -3
  25. data/test/lib/vedeu/output/renderer_test.rb +15 -5
  26. data/test/lib/vedeu/output/style_test.rb +30 -10
  27. data/test/lib/vedeu/output/translator_test.rb +3 -1
  28. data/test/lib/vedeu/process/event_loop_test.rb +12 -4
  29. data/test/lib/vedeu/process/exit_test.rb +6 -2
  30. data/test/lib/vedeu/process/input_test.rb +9 -3
  31. data/test/lib/vedeu/process/output_test.rb +12 -4
  32. data/test/lib/vedeu/process/process_test.rb +24 -8
  33. data/test/lib/vedeu/process/queue_test.rb +32 -8
  34. data/test/lib/vedeu/repository/command_repository_test.rb +27 -9
  35. data/test/lib/vedeu/repository/command_test.rb +33 -9
  36. data/test/lib/vedeu/repository/dummy_command_test.rb +9 -3
  37. data/test/lib/vedeu/repository/interface_repository_test.rb +18 -6
  38. data/test/lib/vedeu/repository/interface_test.rb +39 -11
  39. data/test/lib/vedeu/repository/repository_test.rb +24 -8
  40. data/test/lib/vedeu/repository/storage_test.rb +39 -2
  41. data/test/lib/vedeu/support/terminal_test.rb +68 -16
  42. data/test/lib/vedeu/version_test.rb +3 -1
  43. data/test/test_helper.rb +3 -0
  44. data/vedeu.gemspec +13 -12
  45. metadata +45 -30
@@ -5,12 +5,16 @@ module Vedeu
5
5
  let(:described_class) { Position }
6
6
  let(:described_instance) { described_class.new }
7
7
 
8
- it { described_instance.must_be_instance_of(Position) }
8
+ it 'returns a Position instance' do
9
+ described_instance.must_be_instance_of(Position)
10
+ end
9
11
 
10
12
  describe '.set' do
11
13
  let(:subject) { described_class.set }
12
14
 
13
- it { subject.must_be_instance_of(String) }
15
+ it 'returns a String' do
16
+ subject.must_be_instance_of(String)
17
+ end
14
18
 
15
19
  context 'when no coordinates are provided' do
16
20
  it 'returns a position escape sequence' do
@@ -32,7 +36,9 @@ module Vedeu
32
36
  describe '.reset' do
33
37
  let(:subject) { described_class.reset }
34
38
 
35
- it { subject.must_be_instance_of(String) }
39
+ it 'returns a String' do
40
+ subject.must_be_instance_of(String)
41
+ end
36
42
 
37
43
  it 'returns a position escape sequence' do
38
44
  subject.must_equal("\e[1;1H")
@@ -6,21 +6,31 @@ module Vedeu
6
6
  let(:described_instance) { described_class.new(composition) }
7
7
  let(:composition) { [] }
8
8
 
9
- it { described_instance.must_be_instance_of(Renderer) }
9
+ it 'returns a Renderer instance' do
10
+ described_instance.must_be_instance_of(Renderer)
11
+ end
10
12
 
11
13
  describe '.write' do
12
14
  let(:subject) { described_class.write(composition) }
13
15
 
14
- it { subject.must_be_instance_of(Array) }
16
+ it 'returns an Array' do
17
+ subject.must_be_instance_of(Array)
18
+ end
15
19
 
16
- it { subject.must_equal([]) }
20
+ it 'returns an empty array' do
21
+ subject.must_equal([])
22
+ end
17
23
 
18
24
  context 'capturing i/o' do
19
25
  let(:captured) { capture_io { subject }.join }
20
26
 
21
- it { captured.must_be_instance_of(String) }
27
+ it 'returns a String' do
28
+ captured.must_be_instance_of(String)
29
+ end
22
30
 
23
- it { captured.must_equal("") }
31
+ it 'returns an empty string' do
32
+ captured.must_equal("")
33
+ end
24
34
  end
25
35
  end
26
36
  end
@@ -8,56 +8,76 @@ module Vedeu
8
8
  let(:subject) { described_class.set(style) }
9
9
  let(:style) {}
10
10
 
11
- it { subject.must_be_instance_of(String) }
11
+ it 'returns a String' do
12
+ subject.must_be_instance_of(String)
13
+ end
12
14
 
13
- it { subject.must_equal('') }
15
+ it 'returns an empty string' do
16
+ subject.must_equal('')
17
+ end
14
18
 
15
19
  context 'when the style is bold' do
16
20
  let(:style) { :bold }
17
21
 
18
- it { subject.must_equal("\e[1m") }
22
+ it 'returns an escape sequence' do
23
+ subject.must_equal("\e[1m")
24
+ end
19
25
  end
20
26
 
21
27
  context 'when the style is clear' do
22
28
  let(:style) { :clear }
23
29
 
24
- it { subject.must_equal("\e[2J") }
30
+ it 'returns an escape sequence' do
31
+ subject.must_equal("\e[2J")
32
+ end
25
33
  end
26
34
 
27
35
  context 'when the style is hide_cursor' do
28
36
  let(:style) { :hide_cursor }
29
37
 
30
- it { subject.must_equal("\e[?25l") }
38
+ it 'returns an escape sequence' do
39
+ subject.must_equal("\e[?25l")
40
+ end
31
41
  end
32
42
 
33
43
  context 'when the style is inverse' do
34
44
  let(:style) { :inverse }
35
45
 
36
- it { subject.must_equal("\e[7m") }
46
+ it 'returns an escape sequence' do
47
+ subject.must_equal("\e[7m")
48
+ end
37
49
  end
38
50
 
39
51
  context 'when the style is reset' do
40
52
  let(:style) { :reset }
41
53
 
42
- it { subject.must_equal("\e[0m") }
54
+ it 'returns an escape sequence' do
55
+ subject.must_equal("\e[0m")
56
+ end
43
57
  end
44
58
 
45
59
  context 'when the style is normal' do
46
60
  let(:style) { :normal }
47
61
 
48
- it { subject.must_equal("\e[0m") }
62
+ it 'returns an escape sequence' do
63
+ subject.must_equal("\e[0m")
64
+ end
49
65
  end
50
66
 
51
67
  context 'when the style is show_cursor' do
52
68
  let(:style) { :show_cursor }
53
69
 
54
- it { subject.must_equal("\e[?25h") }
70
+ it 'returns an escape sequence' do
71
+ subject.must_equal("\e[?25h")
72
+ end
55
73
  end
56
74
 
57
75
  context 'when the style is underline' do
58
76
  let(:style) { :underline }
59
77
 
60
- it { subject.must_equal("\e[4m") }
78
+ it 'returns an escape sequence' do
79
+ subject.must_equal("\e[4m")
80
+ end
61
81
  end
62
82
  end
63
83
  end
@@ -5,7 +5,9 @@ module Vedeu
5
5
  let(:described_class) { Translator }
6
6
  let(:html_colour) {}
7
7
 
8
- it { described_class.new(html_colour).must_be_instance_of(Translator) }
8
+ it 'returns a Translator instance' do
9
+ described_class.new(html_colour).must_be_instance_of(Translator)
10
+ end
9
11
 
10
12
  describe '#translate' do
11
13
  {
@@ -12,20 +12,28 @@ module Vedeu
12
12
  Output.stubs(:render)
13
13
  end
14
14
 
15
- it { subject.must_be_instance_of(EventLoop) }
15
+ it 'returns an EventLoop instance' do
16
+ subject.must_be_instance_of(EventLoop)
17
+ end
16
18
 
17
- it { subject.instance_variable_get("@running").must_equal(true) }
19
+ it 'sets an instance variable' do
20
+ subject.instance_variable_get("@running").must_equal(true)
21
+ end
18
22
 
19
23
  describe '.main_sequence' do
20
24
  let(:subject) { described_class.main_sequence }
21
25
 
22
- # it { subject.must_be_instance_of(FalseClass) }
26
+ it 'returns a FalseClass' do
27
+ subject.must_be_instance_of(FalseClass)
28
+ end
23
29
  end
24
30
 
25
31
  describe '#stop' do
26
32
  let(:subject) { described_class.new.stop }
27
33
 
28
- # it { subject.must_be_instance_of(FalseClass) }
34
+ it 'returns a FalseClass' do
35
+ subject.must_be_instance_of(FalseClass)
36
+ end
29
37
  end
30
38
  end
31
39
  end
@@ -7,9 +7,13 @@ module Vedeu
7
7
  describe '.dispatch' do
8
8
  let(:subject) { described_class.dispatch }
9
9
 
10
- it { subject.must_be_instance_of(Symbol) }
10
+ it 'returns a Symbol' do
11
+ subject.must_be_instance_of(Symbol)
12
+ end
11
13
 
12
- it { subject.must_equal(:stop) }
14
+ it 'returns the symbol :stop' do
15
+ subject.must_equal(:stop)
16
+ end
13
17
  end
14
18
  end
15
19
  end
@@ -8,14 +8,20 @@ module Vedeu
8
8
 
9
9
  before { Terminal.stubs(:input).returns(input) }
10
10
 
11
- it { subject.must_be_instance_of(Input) }
11
+ it 'return an Input instance' do
12
+ subject.must_be_instance_of(Input)
13
+ end
12
14
 
13
15
  describe '.capture' do
14
16
  let(:subject) { described_class.capture }
15
17
 
16
- it { subject.must_be_instance_of(Array) }
18
+ it 'returns an Array' do
19
+ subject.must_be_instance_of(Array)
20
+ end
17
21
 
18
- it { subject.wont_be_empty }
22
+ it 'returns the entered characters' do
23
+ subject.wont_be_empty
24
+ end
19
25
  end
20
26
  end
21
27
  end
@@ -12,21 +12,29 @@ module Vedeu
12
12
  Queue.stubs(:dequeue).returns(result)
13
13
  end
14
14
 
15
- it { subject.must_be_instance_of(Output) }
15
+ it 'returns an Output instance' do
16
+ subject.must_be_instance_of(Output)
17
+ end
16
18
 
17
19
  describe '.render' do
18
20
  let(:subject) { described_class.render }
19
21
 
20
- it { subject.must_be_instance_of(NilClass) }
22
+ it 'returns a NilClass' do
23
+ subject.must_be_instance_of(NilClass)
24
+ end
21
25
 
22
26
  context 'when the result is empty' do
23
- it { subject.must_be_instance_of(NilClass) }
27
+ it 'returns a NilClass' do
28
+ subject.must_be_instance_of(NilClass)
29
+ end
24
30
  end
25
31
 
26
32
  context 'when the result is not empty' do
27
33
  let(:result) { { 'dummy' => [['test...']] } }
28
34
 
29
- it { subject.must_be_instance_of(Array) }
35
+ it 'returns an Array' do
36
+ subject.must_be_instance_of(Array)
37
+ end
30
38
  end
31
39
  end
32
40
  end
@@ -7,7 +7,9 @@ module Vedeu
7
7
  let(:result) {}
8
8
  let(:subject) { described_class.new }
9
9
 
10
- it { subject.must_be_instance_of(Process) }
10
+ it 'returns a Process instance' do
11
+ subject.must_be_instance_of(Process)
12
+ end
11
13
 
12
14
  describe '.evaluate' do
13
15
  let(:subject) { described_class.evaluate }
@@ -23,26 +25,34 @@ module Vedeu
23
25
  after { Queue.clear }
24
26
 
25
27
  context 'when there is no input' do
26
- it { subject.must_be_instance_of(NilClass) }
28
+ it 'returns a NilClass' do
29
+ subject.must_be_instance_of(NilClass)
30
+ end
27
31
  end
28
32
 
29
33
  context 'when the input is a keypress' do
30
34
  let(:input) { "q" }
31
35
 
32
36
  context 'but there is no result' do
33
- it { subject.must_be_instance_of(NilClass) }
37
+ it 'returns a NilClass' do
38
+ subject.must_be_instance_of(NilClass)
39
+ end
34
40
  end
35
41
 
36
42
  context 'or the result is :stop' do
37
43
  let(:result) { :stop }
38
44
 
39
- it { proc { subject }.must_raise(Collapse) }
45
+ it 'raises an exception' do
46
+ proc { subject }.must_raise(Collapse)
47
+ end
40
48
  end
41
49
 
42
50
  context 'or the result is anything else' do
43
51
  let(:result) { :something_else }
44
52
 
45
- it { subject.must_be_instance_of(Array) }
53
+ it 'returns an Array' do
54
+ subject.must_be_instance_of(Array)
55
+ end
46
56
  end
47
57
  end
48
58
 
@@ -50,19 +60,25 @@ module Vedeu
50
60
  let(:input) { "quit" }
51
61
 
52
62
  context 'but there is no result' do
53
- it { subject.must_be_instance_of(NilClass) }
63
+ it 'returns a NilClass' do
64
+ subject.must_be_instance_of(NilClass)
65
+ end
54
66
  end
55
67
 
56
68
  context 'or the result is :stop' do
57
69
  let(:result) { :stop }
58
70
 
59
- it { proc { subject }.must_raise(Collapse) }
71
+ it 'raises an exception' do
72
+ proc { subject }.must_raise(Collapse)
73
+ end
60
74
  end
61
75
 
62
76
  context 'or the result is anything else' do
63
77
  let(:result) { :something_else }
64
78
 
65
- it { subject.must_be_instance_of(Array) }
79
+ it 'returns an Array' do
80
+ subject.must_be_instance_of(Array)
81
+ end
66
82
  end
67
83
  end
68
84
  end
@@ -10,13 +10,17 @@ module Vedeu
10
10
  let(:subject) { described_class.dequeue }
11
11
 
12
12
  context 'when the queue is empty' do
13
- it { subject.must_be_instance_of(NilClass) }
13
+ it 'returns a NilClass' do
14
+ subject.must_be_instance_of(NilClass)
15
+ end
14
16
  end
15
17
 
16
18
  context 'when the queue is not empty' do
17
19
  before { described_class.enqueue(:result) }
18
20
 
19
- it { subject.must_be_instance_of(Symbol) }
21
+ it 'returns the first entry added' do
22
+ subject.must_be_instance_of(Symbol)
23
+ end
20
24
  end
21
25
  end
22
26
 
@@ -24,29 +28,49 @@ module Vedeu
24
28
  let(:subject) { described_class.enqueue(result) }
25
29
  let(:result) { :result }
26
30
 
27
- it { subject.must_be_instance_of(Array) }
31
+ it 'returns an Array' do
32
+ subject.must_be_instance_of(Array)
33
+ end
28
34
 
29
- it { subject.size.must_equal(1) }
35
+ it 'contains the enqueued item' do
36
+ subject.size.must_equal(1)
37
+ end
30
38
  end
31
39
 
32
40
  describe '.size' do
33
41
  let(:subject) { described_class.size }
34
42
 
35
- it { subject.must_be_instance_of(Fixnum) }
43
+ it 'returns a Fixnum' do
44
+ subject.must_be_instance_of(Fixnum)
45
+ end
46
+
47
+ it 'returns the size of the queue' do
48
+ subject.must_equal(0)
49
+ end
36
50
  end
37
51
 
38
52
  describe '.clear' do
39
53
  let(:subject) { described_class.clear }
40
54
 
41
- it { subject.must_be_instance_of(Array) }
55
+ it 'returns an Array' do
56
+ subject.must_be_instance_of(Array)
57
+ end
42
58
 
43
- it { subject.must_be_empty }
59
+ it 'returns an empty array' do
60
+ subject.must_be_empty
61
+ end
44
62
  end
45
63
 
46
64
  describe '.view' do
47
65
  let(:subject) { described_class.view }
48
66
 
49
- it { subject.must_be_instance_of(String) }
67
+ it 'returns a String' do
68
+ subject.must_be_instance_of(String)
69
+ end
70
+
71
+ it 'returns the queue as a String' do
72
+ subject.must_equal("[]")
73
+ end
50
74
  end
51
75
  end
52
76
  end
@@ -24,13 +24,21 @@ module Vedeu
24
24
  context 'when the command was found by keypress' do
25
25
  let(:input) { 'b' }
26
26
 
27
- it { subject.must_be_instance_of(Command) }
27
+ it 'returns the Command instance' do
28
+ subject.must_be_instance_of(Command)
29
+ end
28
30
 
29
- it { subject.name.must_equal('banana') }
31
+ it 'returns the correct command' do
32
+ subject.name.must_equal('banana')
33
+ end
30
34
 
31
- it { subject.name.wont_equal('apple') }
35
+ it 'returns the correct command' do
36
+ subject.name.wont_equal('apple')
37
+ end
32
38
 
33
- it { subject.keypress.must_equal('b') }
39
+ it 'returns the correct command' do
40
+ subject.keypress.must_equal('b')
41
+ end
34
42
  end
35
43
  end
36
44
 
@@ -40,20 +48,30 @@ module Vedeu
40
48
  context 'when the command was found by keyword' do
41
49
  let(:input) { 'apple' }
42
50
 
43
- it { subject.must_be_instance_of(Command) }
51
+ it 'returns the Command instance' do
52
+ subject.must_be_instance_of(Command)
53
+ end
44
54
 
45
- it { subject.keypress.must_equal('a') }
55
+ it 'returns the correct command' do
56
+ subject.keypress.must_equal('a')
57
+ end
46
58
 
47
- it { subject.keypress.wont_equal('b') }
59
+ it 'returns the correct command' do
60
+ subject.keypress.wont_equal('b')
61
+ end
48
62
 
49
- it { subject.name.wont_equal('banana') }
63
+ it 'returns the correct command' do
64
+ subject.name.wont_equal('banana')
65
+ end
50
66
  end
51
67
  end
52
68
 
53
69
  describe '.klass' do
54
70
  let(:subject) { described_class.klass }
55
71
 
56
- it { subject.must_equal(Command) }
72
+ it 'returns Command' do
73
+ subject.must_equal(Command)
74
+ end
57
75
  end
58
76
  end
59
77
  end