vedeu 0.0.14 → 0.0.15
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/lib/vedeu.rb +0 -18
- data/lib/vedeu/output/colour.rb +18 -7
- data/lib/vedeu/output/compositor.rb +20 -8
- data/lib/vedeu/process/process.rb +1 -5
- data/lib/vedeu/repository/command.rb +12 -0
- data/lib/vedeu/repository/command_repository.rb +10 -2
- data/lib/vedeu/repository/dummy_command.rb +2 -0
- data/lib/vedeu/repository/dummy_interface.rb +3 -1
- data/lib/vedeu/repository/interface.rb +31 -4
- data/lib/vedeu/repository/interface_repository.rb +5 -1
- data/lib/vedeu/repository/storage.rb +1 -1
- data/lib/vedeu/support/terminal.rb +13 -3
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/application_test.rb +6 -2
- data/test/lib/vedeu/launcher_test.rb +3 -1
- data/test/lib/vedeu/output/background_test.rb +30 -10
- data/test/lib/vedeu/output/colour_test.rb +39 -2
- data/test/lib/vedeu/output/compositor_test.rb +48 -14
- data/test/lib/vedeu/output/directive_test.rb +24 -8
- data/test/lib/vedeu/output/esc_test.rb +48 -16
- data/test/lib/vedeu/output/foreground_test.rb +30 -10
- data/test/lib/vedeu/output/geometry_test.rb +78 -28
- data/test/lib/vedeu/output/position_test.rb +9 -3
- data/test/lib/vedeu/output/renderer_test.rb +15 -5
- data/test/lib/vedeu/output/style_test.rb +30 -10
- data/test/lib/vedeu/output/translator_test.rb +3 -1
- data/test/lib/vedeu/process/event_loop_test.rb +12 -4
- data/test/lib/vedeu/process/exit_test.rb +6 -2
- data/test/lib/vedeu/process/input_test.rb +9 -3
- data/test/lib/vedeu/process/output_test.rb +12 -4
- data/test/lib/vedeu/process/process_test.rb +24 -8
- data/test/lib/vedeu/process/queue_test.rb +32 -8
- data/test/lib/vedeu/repository/command_repository_test.rb +27 -9
- data/test/lib/vedeu/repository/command_test.rb +33 -9
- data/test/lib/vedeu/repository/dummy_command_test.rb +9 -3
- data/test/lib/vedeu/repository/interface_repository_test.rb +18 -6
- data/test/lib/vedeu/repository/interface_test.rb +39 -11
- data/test/lib/vedeu/repository/repository_test.rb +24 -8
- data/test/lib/vedeu/repository/storage_test.rb +39 -2
- data/test/lib/vedeu/support/terminal_test.rb +68 -16
- data/test/lib/vedeu/version_test.rb +3 -1
- data/test/test_helper.rb +3 -0
- data/vedeu.gemspec +13 -12
- metadata +45 -30
@@ -3,37 +3,59 @@ require_relative '../../../test_helper'
|
|
3
3
|
module Vedeu
|
4
4
|
describe Compositor do
|
5
5
|
let(:described_class) { Compositor }
|
6
|
-
let(:described_instance) { described_class.new(output) }
|
6
|
+
let(:described_instance) { described_class.new(output, interface) }
|
7
|
+
let(:subject) { described_instance }
|
7
8
|
let(:output) { [[]] }
|
8
9
|
let(:stream) { [] }
|
9
10
|
let(:interface) { 'dummy' }
|
10
11
|
|
11
12
|
before do
|
12
|
-
|
13
|
+
Interface.create({ name: 'dummy' })
|
14
|
+
Interface.create({ name: 'test_interface' })
|
13
15
|
Renderer.stubs(:write).returns(stream)
|
14
16
|
end
|
15
17
|
|
16
|
-
|
18
|
+
after do
|
19
|
+
InterfaceRepository.reset
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'returns a Compositor instance' do
|
23
|
+
subject.must_be_instance_of(Compositor)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'sets an instance variable' do
|
27
|
+
subject.instance_variable_get("@output").must_equal([[]])
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'sets an instance variable' do
|
31
|
+
subject.instance_variable_get("@interface").must_equal("dummy")
|
32
|
+
end
|
17
33
|
|
18
34
|
describe '.arrange' do
|
19
|
-
let(:subject) { described_class.arrange(output) }
|
35
|
+
let(:subject) { described_class.arrange(output, interface) }
|
20
36
|
|
21
37
|
context 'when empty' do
|
22
38
|
let(:output) { [] }
|
23
39
|
|
24
|
-
it
|
40
|
+
it 'returns a NilClass' do
|
41
|
+
subject.must_be_instance_of(NilClass)
|
42
|
+
end
|
25
43
|
end
|
26
44
|
|
27
45
|
context 'when an array (single interface)' do
|
28
46
|
let(:output) { [[]] }
|
29
47
|
|
30
|
-
it
|
48
|
+
it 'returns an Array' do
|
49
|
+
subject.must_be_instance_of(Array)
|
50
|
+
end
|
31
51
|
end
|
32
52
|
|
33
53
|
context 'when a hash (multiple interfaces)' do
|
34
|
-
let(:output) { { test_interface
|
54
|
+
let(:output) { { 'test_interface' => [] } }
|
35
55
|
|
36
|
-
it
|
56
|
+
it 'returns an Array' do
|
57
|
+
subject.must_be_instance_of(Array)
|
58
|
+
end
|
37
59
|
end
|
38
60
|
|
39
61
|
context 'when unstyled' do
|
@@ -41,7 +63,9 @@ module Vedeu
|
|
41
63
|
let(:output) { [['Some text...']] }
|
42
64
|
let(:stream) { 'Some text...' }
|
43
65
|
|
44
|
-
it
|
66
|
+
it 'returns a String' do
|
67
|
+
subject.must_equal(stream)
|
68
|
+
end
|
45
69
|
end
|
46
70
|
|
47
71
|
context 'and multi-line' do
|
@@ -53,7 +77,9 @@ module Vedeu
|
|
53
77
|
}
|
54
78
|
let(:stream) { "Some text...\nSome more text..." }
|
55
79
|
|
56
|
-
it
|
80
|
+
it 'returns a String' do
|
81
|
+
subject.must_equal(stream)
|
82
|
+
end
|
57
83
|
end
|
58
84
|
end
|
59
85
|
|
@@ -67,7 +93,9 @@ module Vedeu
|
|
67
93
|
}
|
68
94
|
let(:stream) { "\e[38;5;31m\e[48;5;47mSome text..." }
|
69
95
|
|
70
|
-
it
|
96
|
+
it 'returns a String' do
|
97
|
+
subject.must_equal(stream)
|
98
|
+
end
|
71
99
|
end
|
72
100
|
|
73
101
|
context 'and multi-line' do
|
@@ -82,7 +110,9 @@ module Vedeu
|
|
82
110
|
"\e[38;5;34m\e[48;5;43mSome more text..."
|
83
111
|
}
|
84
112
|
|
85
|
-
it
|
113
|
+
it 'returns a String' do
|
114
|
+
subject.must_equal(stream)
|
115
|
+
end
|
86
116
|
end
|
87
117
|
end
|
88
118
|
|
@@ -97,7 +127,9 @@ module Vedeu
|
|
97
127
|
"\e[1mSome text..."
|
98
128
|
}
|
99
129
|
|
100
|
-
it
|
130
|
+
it 'returns a String' do
|
131
|
+
subject.must_equal(stream)
|
132
|
+
end
|
101
133
|
end
|
102
134
|
|
103
135
|
context 'and multi-line' do
|
@@ -112,7 +144,9 @@ module Vedeu
|
|
112
144
|
"\e[4mSome more text..."
|
113
145
|
}
|
114
146
|
|
115
|
-
it
|
147
|
+
it 'returns a String' do
|
148
|
+
subject.must_equal(stream)
|
149
|
+
end
|
116
150
|
end
|
117
151
|
end
|
118
152
|
|
@@ -15,41 +15,57 @@ module Vedeu
|
|
15
15
|
let(:colour) { [] }
|
16
16
|
let(:style) { [] }
|
17
17
|
|
18
|
-
it
|
18
|
+
it 'returns a Directive instance' do
|
19
|
+
described_instance.must_be_instance_of(Directive)
|
20
|
+
end
|
19
21
|
|
20
22
|
describe '.enact' do
|
21
23
|
let(:subject) { described_class.enact(directives) }
|
22
24
|
|
23
|
-
it
|
25
|
+
it 'returns a String' do
|
26
|
+
subject.must_be_instance_of(String)
|
27
|
+
end
|
24
28
|
|
25
29
|
context 'when the position is not set' do
|
26
|
-
it
|
30
|
+
it 'returns an empty string' do
|
31
|
+
subject.must_equal('')
|
32
|
+
end
|
27
33
|
end
|
28
34
|
|
29
35
|
context 'when the position is set' do
|
30
36
|
let(:position) { [4, 5] }
|
31
37
|
|
32
|
-
it
|
38
|
+
it 'returns an escape sequence' do
|
39
|
+
subject.must_equal("\e[4;5H")
|
40
|
+
end
|
33
41
|
end
|
34
42
|
|
35
43
|
context 'when the colour is not set' do
|
36
|
-
it
|
44
|
+
it 'returns an empty string' do
|
45
|
+
subject.must_equal('')
|
46
|
+
end
|
37
47
|
end
|
38
48
|
|
39
49
|
context 'when the colour is set' do
|
40
50
|
let(:colour) { [:red, :black] }
|
41
51
|
|
42
|
-
it
|
52
|
+
it 'returns an escape sequence' do
|
53
|
+
subject.must_equal("\e[38;5;31m\e[48;5;40m")
|
54
|
+
end
|
43
55
|
end
|
44
56
|
|
45
57
|
context 'when the style is not set' do
|
46
|
-
it
|
58
|
+
it 'returns an empty string' do
|
59
|
+
subject.must_equal('')
|
60
|
+
end
|
47
61
|
end
|
48
62
|
|
49
63
|
context 'when the style is set' do
|
50
64
|
let(:style) { [:normal, :underline, :normal] }
|
51
65
|
|
52
|
-
it
|
66
|
+
it 'returns an escape sequence' do
|
67
|
+
subject.must_equal("\e[0m\e[4m\e[0m")
|
68
|
+
end
|
53
69
|
end
|
54
70
|
end
|
55
71
|
end
|
@@ -7,65 +7,97 @@ module Vedeu
|
|
7
7
|
describe '.bold' do
|
8
8
|
let(:subject) { described_class.bold }
|
9
9
|
|
10
|
-
it
|
10
|
+
it 'returns a String' do
|
11
|
+
subject.must_be_instance_of(String)
|
12
|
+
end
|
11
13
|
|
12
|
-
it
|
14
|
+
it 'returns an escape sequence' do
|
15
|
+
subject.must_equal("\e[1m")
|
16
|
+
end
|
13
17
|
end
|
14
18
|
|
15
19
|
describe '.clear' do
|
16
20
|
let(:subject) { described_class.clear }
|
17
21
|
|
18
|
-
it
|
22
|
+
it 'returns a String' do
|
23
|
+
subject.must_be_instance_of(String)
|
24
|
+
end
|
19
25
|
|
20
|
-
it
|
26
|
+
it 'returns an escape sequence' do
|
27
|
+
subject.must_equal("\e[2J")
|
28
|
+
end
|
21
29
|
end
|
22
30
|
|
23
31
|
describe '.esc' do
|
24
32
|
let(:subject) { described_class.esc }
|
25
33
|
|
26
|
-
it
|
34
|
+
it 'returns a String' do
|
35
|
+
subject.must_be_instance_of(String)
|
36
|
+
end
|
27
37
|
|
28
|
-
it
|
38
|
+
it 'returns an escape sequence' do
|
39
|
+
subject.must_equal("\e[")
|
40
|
+
end
|
29
41
|
end
|
30
42
|
|
31
43
|
describe '.hide_cursor' do
|
32
44
|
let(:subject) { described_class.hide_cursor }
|
33
45
|
|
34
|
-
it
|
46
|
+
it 'returns a String' do
|
47
|
+
subject.must_be_instance_of(String)
|
48
|
+
end
|
35
49
|
|
36
|
-
it
|
50
|
+
it 'returns an escape sequence' do
|
51
|
+
subject.must_equal("\e[?25l")
|
52
|
+
end
|
37
53
|
end
|
38
54
|
|
39
55
|
describe '.inverse' do
|
40
56
|
let(:subject) { described_class.inverse }
|
41
57
|
|
42
|
-
it
|
58
|
+
it 'returns a String' do
|
59
|
+
subject.must_be_instance_of(String)
|
60
|
+
end
|
43
61
|
|
44
|
-
it
|
62
|
+
it 'returns an escape sequence' do
|
63
|
+
subject.must_equal("\e[7m")
|
64
|
+
end
|
45
65
|
end
|
46
66
|
|
47
67
|
describe '.reset' do
|
48
68
|
let(:subject) { described_class.reset }
|
49
69
|
|
50
|
-
it
|
70
|
+
it 'returns a String' do
|
71
|
+
subject.must_be_instance_of(String)
|
72
|
+
end
|
51
73
|
|
52
|
-
it
|
74
|
+
it 'returns an escape sequence' do
|
75
|
+
subject.must_equal("\e[0m")
|
76
|
+
end
|
53
77
|
end
|
54
78
|
|
55
79
|
describe '.show_cursor' do
|
56
80
|
let(:subject) { described_class.show_cursor }
|
57
81
|
|
58
|
-
it
|
82
|
+
it 'returns a String' do
|
83
|
+
subject.must_be_instance_of(String)
|
84
|
+
end
|
59
85
|
|
60
|
-
it
|
86
|
+
it 'returns an escape sequence' do
|
87
|
+
subject.must_equal("\e[?25h")
|
88
|
+
end
|
61
89
|
end
|
62
90
|
|
63
91
|
describe '.underline' do
|
64
92
|
let(:subject) { described_class.underline }
|
65
93
|
|
66
|
-
it
|
94
|
+
it 'returns a String' do
|
95
|
+
subject.must_be_instance_of(String)
|
96
|
+
end
|
67
97
|
|
68
|
-
it
|
98
|
+
it 'returns an escape sequence' do
|
99
|
+
subject.must_equal("\e[4m")
|
100
|
+
end
|
69
101
|
end
|
70
102
|
end
|
71
103
|
end
|
@@ -6,41 +6,61 @@ module Vedeu
|
|
6
6
|
let(:described_instance) { described_class.new(colour) }
|
7
7
|
let(:colour) {}
|
8
8
|
|
9
|
-
it
|
9
|
+
it 'returns a Foreground instance' do
|
10
|
+
described_instance.must_be_instance_of(Foreground)
|
11
|
+
end
|
10
12
|
|
11
13
|
describe '#escape_sequence' do
|
12
14
|
let(:subject) { described_instance.escape_sequence }
|
13
15
|
|
14
|
-
it
|
16
|
+
it 'returns a String' do
|
17
|
+
subject.must_be_instance_of(String)
|
18
|
+
end
|
15
19
|
|
16
20
|
context 'with no colour' do
|
17
|
-
it
|
21
|
+
it 'returns a String' do
|
22
|
+
subject.must_be_instance_of(String)
|
23
|
+
end
|
18
24
|
|
19
|
-
it
|
25
|
+
it 'returns an escape sequence' do
|
26
|
+
subject.must_equal("\e[38;5;39m")
|
27
|
+
end
|
20
28
|
end
|
21
29
|
|
22
30
|
context 'with a named colour' do
|
23
31
|
let(:colour) { :red }
|
24
32
|
|
25
|
-
it
|
33
|
+
it 'returns a String' do
|
34
|
+
subject.must_be_instance_of(String)
|
35
|
+
end
|
26
36
|
|
27
|
-
it
|
37
|
+
it 'returns an escape sequence' do
|
38
|
+
subject.must_equal("\e[38;5;31m")
|
39
|
+
end
|
28
40
|
end
|
29
41
|
|
30
42
|
context 'with a html colour' do
|
31
43
|
let(:colour) { '#aadd00' }
|
32
44
|
|
33
|
-
it
|
45
|
+
it 'returns a String' do
|
46
|
+
subject.must_be_instance_of(String)
|
47
|
+
end
|
34
48
|
|
35
|
-
it
|
49
|
+
it 'returns an escape sequence' do
|
50
|
+
subject.must_equal("\e[38;5;148m")
|
51
|
+
end
|
36
52
|
end
|
37
53
|
|
38
54
|
context 'with a default colour' do
|
39
55
|
let(:colour) { :undefined }
|
40
56
|
|
41
|
-
it
|
57
|
+
it 'returns a String' do
|
58
|
+
subject.must_be_instance_of(String)
|
59
|
+
end
|
42
60
|
|
43
|
-
it
|
61
|
+
it 'returns an escape sequence' do
|
62
|
+
subject.must_equal("\e[38;5;39m")
|
63
|
+
end
|
44
64
|
end
|
45
65
|
end
|
46
66
|
end
|
@@ -11,104 +11,142 @@ module Vedeu
|
|
11
11
|
Terminal.stubs(:height).returns(25)
|
12
12
|
end
|
13
13
|
|
14
|
-
it
|
14
|
+
it 'returns a Geometry instance' do
|
15
|
+
described_instance.must_be_instance_of(Geometry)
|
16
|
+
end
|
15
17
|
|
16
18
|
describe '#z' do
|
17
19
|
let(:subject) { described_instance.z }
|
18
20
|
|
19
|
-
it
|
21
|
+
it 'returns a Fixnum' do
|
22
|
+
subject.must_be_instance_of(Fixnum)
|
23
|
+
end
|
20
24
|
|
21
25
|
context 'using a value' do
|
22
26
|
let(:values) { { z: 2 } }
|
23
27
|
|
24
|
-
it
|
28
|
+
it 'returns the value' do
|
29
|
+
subject.must_equal(2)
|
30
|
+
end
|
25
31
|
end
|
26
32
|
|
27
33
|
context 'using the default' do
|
28
|
-
it
|
34
|
+
it 'returns the default' do
|
35
|
+
subject.must_equal(0)
|
36
|
+
end
|
29
37
|
end
|
30
38
|
end
|
31
39
|
|
32
40
|
describe '#y' do
|
33
41
|
let(:subject) { described_instance.y }
|
34
42
|
|
35
|
-
it
|
43
|
+
it 'returns a Fixnum' do
|
44
|
+
subject.must_be_instance_of(Fixnum)
|
45
|
+
end
|
36
46
|
|
37
47
|
context 'using a value' do
|
38
48
|
let(:values) { { y: 17 } }
|
39
49
|
|
40
|
-
it
|
50
|
+
it 'returns the value' do
|
51
|
+
subject.must_equal(17)
|
52
|
+
end
|
41
53
|
end
|
42
54
|
|
43
55
|
context 'using the default' do
|
44
|
-
it
|
56
|
+
it 'returns the default' do
|
57
|
+
subject.must_equal(1)
|
58
|
+
end
|
45
59
|
end
|
46
60
|
end
|
47
61
|
|
48
62
|
describe '#x' do
|
49
63
|
let(:subject) { described_instance.x }
|
50
64
|
|
51
|
-
it
|
65
|
+
it 'returns a Fixnum' do
|
66
|
+
subject.must_be_instance_of(Fixnum)
|
67
|
+
end
|
52
68
|
|
53
69
|
context 'using a value' do
|
54
70
|
let(:values) { { x: 33 } }
|
55
71
|
|
56
|
-
it
|
72
|
+
it 'returns the value' do
|
73
|
+
subject.must_equal(33)
|
74
|
+
end
|
57
75
|
end
|
58
76
|
|
59
77
|
context 'using the default' do
|
60
|
-
it
|
78
|
+
it 'return the default' do
|
79
|
+
subject.must_equal(1)
|
80
|
+
end
|
61
81
|
end
|
62
82
|
end
|
63
83
|
|
64
84
|
describe '#width' do
|
65
85
|
let(:subject) { described_instance.width }
|
66
86
|
|
67
|
-
it
|
87
|
+
it 'returns a Fixnum' do
|
88
|
+
subject.must_be_instance_of(Fixnum)
|
89
|
+
end
|
68
90
|
|
69
91
|
context 'using a value' do
|
70
92
|
let(:values) { { width: 50 } }
|
71
93
|
|
72
|
-
it
|
94
|
+
it 'returns the value' do
|
95
|
+
subject.must_equal(50)
|
96
|
+
end
|
73
97
|
end
|
74
98
|
|
75
99
|
context 'using :auto' do
|
76
100
|
let(:values) { { width: :auto } }
|
77
101
|
|
78
|
-
it
|
102
|
+
it 'returns the value' do
|
103
|
+
subject.must_equal(80)
|
104
|
+
end
|
79
105
|
end
|
80
106
|
|
81
107
|
context 'using the default' do
|
82
|
-
it
|
108
|
+
it 'returns the default' do
|
109
|
+
subject.must_equal(80)
|
110
|
+
end
|
83
111
|
end
|
84
112
|
end
|
85
113
|
|
86
114
|
describe '#height' do
|
87
115
|
let(:subject) { described_instance.height }
|
88
116
|
|
89
|
-
it
|
117
|
+
it 'returns a Fixnum' do
|
118
|
+
subject.must_be_instance_of(Fixnum)
|
119
|
+
end
|
90
120
|
|
91
121
|
context 'using a value' do
|
92
122
|
let(:values) { { height: 20 } }
|
93
123
|
|
94
|
-
it
|
124
|
+
it 'returns the value' do
|
125
|
+
subject.must_equal(20)
|
126
|
+
end
|
95
127
|
end
|
96
128
|
|
97
129
|
context 'using :auto' do
|
98
130
|
let(:values) { { height: :auto } }
|
99
131
|
|
100
|
-
it
|
132
|
+
it 'returns the value' do
|
133
|
+
subject.must_equal(25)
|
134
|
+
end
|
101
135
|
end
|
102
136
|
|
103
137
|
context 'using the default' do
|
104
|
-
it
|
138
|
+
it 'returns the default' do
|
139
|
+
subject.must_equal(25)
|
140
|
+
end
|
105
141
|
end
|
106
142
|
end
|
107
143
|
|
108
144
|
describe '#dy' do
|
109
145
|
let(:subject) { described_instance.dy }
|
110
146
|
|
111
|
-
it
|
147
|
+
it 'returns a Fixnum' do
|
148
|
+
subject.must_be_instance_of(Fixnum)
|
149
|
+
end
|
112
150
|
|
113
151
|
context 'when the value is greater than the available terminal size' do
|
114
152
|
it 'clips the value to the terminal size' do
|
@@ -119,14 +157,18 @@ module Vedeu
|
|
119
157
|
context 'when the value is less than the available size' do
|
120
158
|
let(:values) { { y: 20, height: 4 } }
|
121
159
|
|
122
|
-
it
|
160
|
+
it 'returns the value' do
|
161
|
+
subject.must_equal(24)
|
162
|
+
end
|
123
163
|
end
|
124
164
|
end
|
125
165
|
|
126
166
|
describe '#dx' do
|
127
167
|
let(:subject) { described_instance.dx }
|
128
168
|
|
129
|
-
it
|
169
|
+
it 'returns a Fixnum' do
|
170
|
+
subject.must_be_instance_of(Fixnum)
|
171
|
+
end
|
130
172
|
|
131
173
|
context 'when the value is greater than the available terminal size' do
|
132
174
|
it 'clips the value to the terminal size' do
|
@@ -137,26 +179,34 @@ module Vedeu
|
|
137
179
|
context 'when the value is less than the available size' do
|
138
180
|
let(:values) { { x: 17, width: 21 } }
|
139
181
|
|
140
|
-
it
|
141
|
-
|
142
|
-
|
182
|
+
it 'returns the value' do
|
183
|
+
subject.must_equal(38)
|
184
|
+
end
|
143
185
|
end
|
144
186
|
end
|
145
187
|
|
146
188
|
describe '#vx' do
|
147
189
|
let(:subject) { described_instance.vx }
|
148
190
|
|
149
|
-
it
|
191
|
+
it 'returns a Fixnum' do
|
192
|
+
subject.must_be_instance_of(Fixnum)
|
193
|
+
end
|
150
194
|
|
151
|
-
it
|
195
|
+
it 'returns the value' do
|
196
|
+
subject.must_equal(1)
|
197
|
+
end
|
152
198
|
end
|
153
199
|
|
154
200
|
describe '#vy' do
|
155
201
|
let(:subject) { described_instance.vy }
|
156
202
|
|
157
|
-
it
|
203
|
+
it 'returns a Fixnum' do
|
204
|
+
subject.must_be_instance_of(Fixnum)
|
205
|
+
end
|
158
206
|
|
159
|
-
it
|
207
|
+
it 'returns the value' do
|
208
|
+
subject.must_equal(1)
|
209
|
+
end
|
160
210
|
end
|
161
211
|
end
|
162
212
|
end
|