logic 0.1.5 → 1.0.0
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 +5 -5
- data/LICENSE +1 -1
- data/README.rdoc +1 -1
- data/lib/integer.rb +0 -2
- data/lib/logic_operations.rb +15 -4
- data/lib/logic_parser.treetop +25 -17
- data/lib/range.rb +0 -2
- data/lib/test_case.rb +2 -4
- data/lib/test_case_set.rb +0 -3
- data/lib/truth_table.rb +0 -2
- data/spec/features/help_spec.rb +22 -0
- data/spec/features/mcdc_pairs_spec.rb +49 -0
- data/spec/features/truth_table_spec.rb +148 -0
- data/spec/logic_parser_spec.rb +97 -22
- data/spec/spec_helper.rb +7 -0
- data/spec/support/aruba_helpers.rb +11 -0
- metadata +8 -19
- data/lib/array.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: dc59412e7a4c95a2104f101dbe57fd5b9aacc6250ac885b8e64f58f139852bad
|
4
|
+
data.tar.gz: 8a97b64638e50d50ee0fd36827afb60e2771cfbf84e61765e435d2e7ac2f8918
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 185427c28647b5124e6efd34ce2c114ccba5d5e881a411afcb5458ed6c39b5d1addedc816a99414bdfd64df6d4f2f5df9c473a621f4cedb3489a528096f2e244
|
7
|
+
data.tar.gz: 18a97e43de0ea689fdb053e8e455f2db7b629fe868d26a8a8940b689bb6ff0ad8dd88e62992efd897f4248e34ebd82fb0bab2d28b46c2d0d4ae9a69281e62659
|
data/LICENSE
CHANGED
data/README.rdoc
CHANGED
data/lib/integer.rb
CHANGED
data/lib/logic_operations.rb
CHANGED
@@ -37,13 +37,24 @@ module BinaryDecision
|
|
37
37
|
include Decision
|
38
38
|
|
39
39
|
def condition_identifiers
|
40
|
-
elements.
|
40
|
+
elements.flat_map(&:condition_identifiers)
|
41
41
|
end
|
42
42
|
|
43
43
|
def evaluate(conditions)
|
44
|
-
|
45
|
-
|
46
|
-
|
44
|
+
left_value = left.evaluate(conditions)
|
45
|
+
return left_value unless tail.elements.any?
|
46
|
+
|
47
|
+
tail.elements.reduce(left_value) do |value, tail|
|
48
|
+
tail.operator.apply(value, tail.operand.evaluate(conditions))
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
module Tail
|
54
|
+
def condition_identifiers
|
55
|
+
elements.flat_map do |element|
|
56
|
+
element.elements.flat_map(&:condition_identifiers)
|
57
|
+
end
|
47
58
|
end
|
48
59
|
end
|
49
60
|
|
data/lib/logic_parser.treetop
CHANGED
@@ -1,20 +1,36 @@
|
|
1
1
|
grammar Logic
|
2
|
-
rule
|
3
|
-
|
2
|
+
rule disjunction
|
3
|
+
left:conjunction tail:or_tail <BinaryDecision>
|
4
4
|
end
|
5
5
|
|
6
|
-
rule
|
7
|
-
|
8
|
-
operator
|
9
|
-
operand_2:decision <BinaryDecision>
|
6
|
+
rule conjunction
|
7
|
+
left:primitive tail:and_tail <BinaryDecision>
|
10
8
|
end
|
11
9
|
|
12
|
-
rule
|
10
|
+
rule and_tail
|
11
|
+
(operator:and operand:primitive)* <Tail>
|
12
|
+
end
|
13
|
+
|
14
|
+
rule or_tail
|
15
|
+
(operator:or operand:conjunction)* <Tail>
|
16
|
+
end
|
17
|
+
|
18
|
+
rule and
|
19
|
+
(space 'and' space / space? '&&' space?) <And>
|
20
|
+
end
|
21
|
+
|
22
|
+
rule or
|
23
|
+
(space 'or' space / space? '||' space?) <Or>
|
24
|
+
/
|
25
|
+
(space 'xor' space / space? '^' space?) <Xor>
|
26
|
+
end
|
27
|
+
|
28
|
+
rule primitive
|
13
29
|
negation / condition / parenthesized
|
14
30
|
end
|
15
31
|
|
16
32
|
rule negation
|
17
|
-
('not' space / '!' space?) operand:
|
33
|
+
('not' space / '!' space?) operand:primitive <Negation>
|
18
34
|
end
|
19
35
|
|
20
36
|
rule condition
|
@@ -22,15 +38,7 @@ grammar Logic
|
|
22
38
|
end
|
23
39
|
|
24
40
|
rule parenthesized
|
25
|
-
'(' space? contents:
|
26
|
-
end
|
27
|
-
|
28
|
-
rule operator
|
29
|
-
(space 'and' space / space? '&&' space?) <And>
|
30
|
-
/
|
31
|
-
(space 'or' space / space? '||' space?) <Or>
|
32
|
-
/
|
33
|
-
(space 'xor' space / space? '^' space?) <Xor>
|
41
|
+
'(' space? contents:disjunction space? ')' <Parenthesized>
|
34
42
|
end
|
35
43
|
|
36
44
|
rule space
|
data/lib/range.rb
CHANGED
data/lib/test_case.rb
CHANGED
@@ -2,7 +2,6 @@ require 'integer'
|
|
2
2
|
require 'range'
|
3
3
|
|
4
4
|
class TestCase
|
5
|
-
|
6
5
|
def initialize(number, condition_count, decision)
|
7
6
|
@condition_value = number - 1
|
8
7
|
@condition_count = condition_count
|
@@ -15,11 +14,11 @@ class TestCase
|
|
15
14
|
end
|
16
15
|
|
17
16
|
def conditions
|
18
|
-
@conditions ||=
|
17
|
+
@conditions ||= @condition_value.to_array_of_bits(@condition_count)
|
19
18
|
end
|
20
19
|
|
21
20
|
def number
|
22
|
-
conditions.join.to_i(
|
21
|
+
conditions.join.to_i(_base = 2) + 1
|
23
22
|
end
|
24
23
|
|
25
24
|
def output
|
@@ -48,5 +47,4 @@ class TestCase
|
|
48
47
|
def formatted(format)
|
49
48
|
"%2d) %s | %3d\n" % [number, conditions.join(' '), output]
|
50
49
|
end
|
51
|
-
|
52
50
|
end
|
data/lib/test_case_set.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
|
-
require 'array'
|
2
1
|
require 'test_case'
|
3
2
|
|
4
3
|
class TestCaseSet
|
5
|
-
|
6
4
|
def initialize(condition_identifiers, decision)
|
7
5
|
@condition_identifiers = condition_identifiers
|
8
6
|
@decision = decision
|
@@ -64,5 +62,4 @@ class TestCaseSet
|
|
64
62
|
output += test_case.formatted(format)
|
65
63
|
end
|
66
64
|
end
|
67
|
-
|
68
65
|
end
|
data/lib/truth_table.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe 'Help', type: :aruba do
|
4
|
+
it 'shows help given no command line options' do
|
5
|
+
run_command 'logic'
|
6
|
+
should_see_help
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'shows help given --help' do
|
10
|
+
run_command 'logic --help'
|
11
|
+
should_see_help
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'shows help given -h' do
|
15
|
+
run_command 'logic -h'
|
16
|
+
should_see_help
|
17
|
+
end
|
18
|
+
|
19
|
+
def should_see_help
|
20
|
+
should_see_output 'Usage: logic [options] <decision>'
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe 'MC/DC Pairs', type: :aruba do
|
4
|
+
it 'a single condition' do
|
5
|
+
run_command "logic --no-truth-table --mcdc_pairs 'a'"
|
6
|
+
should_see_output <<~STR
|
7
|
+
a => [[1, 2]]
|
8
|
+
STR
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'MC/DC pairs are not mandatory output' do
|
12
|
+
run_command "logic --no-truth-table --no-mcdc_pairs 'a'"
|
13
|
+
should_not_see_output <<~STR
|
14
|
+
a => [[1, 2]]
|
15
|
+
STR
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'MC/DC pairs are output by default' do
|
19
|
+
run_command "logic --no-truth-table 'a'"
|
20
|
+
should_see_output <<~STR
|
21
|
+
a => [[1, 2]]
|
22
|
+
STR
|
23
|
+
end
|
24
|
+
|
25
|
+
it "'a and b' decision" do
|
26
|
+
run_command "logic --no-truth-table --mcdc_pairs 'a and b'"
|
27
|
+
should_see_output <<~STR
|
28
|
+
a => [[2, 4]]
|
29
|
+
b => [[3, 4]]
|
30
|
+
STR
|
31
|
+
end
|
32
|
+
|
33
|
+
it "'a or b' decision" do
|
34
|
+
run_command "logic --no-truth-table --mcdc_pairs 'a or b'"
|
35
|
+
should_see_output <<~STR
|
36
|
+
a => [[1, 3]]
|
37
|
+
b => [[1, 2]]
|
38
|
+
STR
|
39
|
+
end
|
40
|
+
|
41
|
+
it "'a and (b or c)' decision" do
|
42
|
+
run_command "logic --no-truth-table --mcdc_pairs 'a and (b or c)'"
|
43
|
+
should_see_output <<~STR
|
44
|
+
a => [[2, 6], [3, 7], [4, 8]]
|
45
|
+
b => [[5, 7]]
|
46
|
+
c => [[5, 6]]
|
47
|
+
STR
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,148 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe 'Truth Table', type: :aruba do
|
4
|
+
it 'input names are related to condition names' do
|
5
|
+
run_command "logic Jennifer or Juliette"
|
6
|
+
should_see_output <<~STR
|
7
|
+
a <= Jennifer
|
8
|
+
b <= Juliette
|
9
|
+
STR
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'a single condition' do
|
13
|
+
run_command "logic --truth_table --no-mcdc-pairs 'a'"
|
14
|
+
should_see_output <<~STR
|
15
|
+
a <= a
|
16
|
+
|
17
|
+
a | output
|
18
|
+
1) 0 | 0
|
19
|
+
2) 1 | 1
|
20
|
+
STR
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'Truth table output is not mandatory' do
|
24
|
+
run_command "logic --no-truth_table 'a'"
|
25
|
+
should_not_see_output 'a | output'
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'Truth table is output by default' do
|
29
|
+
run_command "logic --no-mcdc-pairs 'a'"
|
30
|
+
should_see_output <<~STR
|
31
|
+
a <= a
|
32
|
+
|
33
|
+
a | output
|
34
|
+
1) 0 | 0
|
35
|
+
2) 1 | 1
|
36
|
+
STR
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'a negated condition' do
|
40
|
+
run_command "logic --truth_table --no-mcdc-pairs 'not a'"
|
41
|
+
should_see_output <<~STR
|
42
|
+
a <= a
|
43
|
+
|
44
|
+
a | output
|
45
|
+
1) 0 | 1
|
46
|
+
2) 1 | 0
|
47
|
+
STR
|
48
|
+
end
|
49
|
+
|
50
|
+
it "'a or b' decision" do
|
51
|
+
run_command "logic --truth_table --no-mcdc-pairs 'a or b'"
|
52
|
+
should_see_output <<~STR
|
53
|
+
a <= a
|
54
|
+
b <= b
|
55
|
+
|
56
|
+
a b | output
|
57
|
+
1) 0 0 | 0
|
58
|
+
2) 0 1 | 1
|
59
|
+
3) 1 0 | 1
|
60
|
+
4) 1 1 | 1
|
61
|
+
STR
|
62
|
+
end
|
63
|
+
|
64
|
+
it "'a xor b' decision" do
|
65
|
+
run_command "logic --truth_table --no-mcdc-pairs 'a xor b'"
|
66
|
+
should_see_output <<~STR
|
67
|
+
a <= a
|
68
|
+
b <= b
|
69
|
+
|
70
|
+
a b | output
|
71
|
+
1) 0 0 | 0
|
72
|
+
2) 0 1 | 1
|
73
|
+
3) 1 0 | 1
|
74
|
+
4) 1 1 | 0
|
75
|
+
STR
|
76
|
+
end
|
77
|
+
|
78
|
+
it "'not a or not b' decision" do
|
79
|
+
run_command "logic --truth_table --no-mcdc-pairs 'not a or not b'"
|
80
|
+
should_see_output <<~STR
|
81
|
+
a <= a
|
82
|
+
b <= b
|
83
|
+
|
84
|
+
a b | output
|
85
|
+
1) 0 0 | 1
|
86
|
+
2) 0 1 | 1
|
87
|
+
3) 1 0 | 1
|
88
|
+
4) 1 1 | 0
|
89
|
+
STR
|
90
|
+
end
|
91
|
+
|
92
|
+
it "'a or b or c' decision" do
|
93
|
+
run_command "logic --truth_table --no-mcdc-pairs 'a or b or c'"
|
94
|
+
should_see_output <<~STR
|
95
|
+
a <= a
|
96
|
+
b <= b
|
97
|
+
c <= c
|
98
|
+
|
99
|
+
a b c | output
|
100
|
+
1) 0 0 0 | 0
|
101
|
+
2) 0 0 1 | 1
|
102
|
+
3) 0 1 0 | 1
|
103
|
+
4) 0 1 1 | 1
|
104
|
+
5) 1 0 0 | 1
|
105
|
+
6) 1 0 1 | 1
|
106
|
+
7) 1 1 0 | 1
|
107
|
+
8) 1 1 1 | 1
|
108
|
+
STR
|
109
|
+
end
|
110
|
+
|
111
|
+
it "'a and b and c' decision" do
|
112
|
+
run_command "logic --truth_table --no-mcdc-pairs 'a and b and c'"
|
113
|
+
should_see_output <<~STR
|
114
|
+
a <= a
|
115
|
+
b <= b
|
116
|
+
c <= c
|
117
|
+
|
118
|
+
a b c | output
|
119
|
+
1) 0 0 0 | 0
|
120
|
+
2) 0 0 1 | 0
|
121
|
+
3) 0 1 0 | 0
|
122
|
+
4) 0 1 1 | 0
|
123
|
+
5) 1 0 0 | 0
|
124
|
+
6) 1 0 1 | 0
|
125
|
+
7) 1 1 0 | 0
|
126
|
+
8) 1 1 1 | 1
|
127
|
+
STR
|
128
|
+
end
|
129
|
+
|
130
|
+
it "'(a and b) or c' decision" do
|
131
|
+
run_command "logic --truth_table --no-mcdc-pairs '(a and b) or c'"
|
132
|
+
should_see_output <<~STR
|
133
|
+
a <= a
|
134
|
+
b <= b
|
135
|
+
c <= c
|
136
|
+
|
137
|
+
a b c | output
|
138
|
+
1) 0 0 0 | 0
|
139
|
+
2) 0 0 1 | 1
|
140
|
+
3) 0 1 0 | 0
|
141
|
+
4) 0 1 1 | 1
|
142
|
+
5) 1 0 0 | 0
|
143
|
+
6) 1 0 1 | 1
|
144
|
+
7) 1 1 0 | 1
|
145
|
+
8) 1 1 1 | 1
|
146
|
+
STR
|
147
|
+
end
|
148
|
+
end
|
data/spec/logic_parser_spec.rb
CHANGED
@@ -65,17 +65,20 @@ describe LogicParser, :parsing do
|
|
65
65
|
'A or B' =>
|
66
66
|
{ [0, 0] => 0,
|
67
67
|
[0, 1] => 1,
|
68
|
-
[1, 0] => 1
|
68
|
+
[1, 0] => 1,
|
69
|
+
[1, 1] => 1
|
69
70
|
},
|
70
71
|
'A || B' =>
|
71
72
|
{ [0, 0] => 0,
|
72
73
|
[0, 1] => 1,
|
73
|
-
[1, 0] => 1
|
74
|
+
[1, 0] => 1,
|
75
|
+
[1, 1] => 1
|
74
76
|
},
|
75
77
|
'A||B' =>
|
76
78
|
{ [0, 0] => 0,
|
77
79
|
[0, 1] => 1,
|
78
|
-
[1, 0] => 1
|
80
|
+
[1, 0] => 1,
|
81
|
+
[1, 1] => 1
|
79
82
|
},
|
80
83
|
'A xor B' =>
|
81
84
|
{ [0, 0] => 0,
|
@@ -96,54 +99,126 @@ describe LogicParser, :parsing do
|
|
96
99
|
[1, 1] => 0
|
97
100
|
},
|
98
101
|
'A and B' =>
|
99
|
-
{ [
|
102
|
+
{ [0, 0] => 0,
|
100
103
|
[0, 1] => 0,
|
101
|
-
[1, 0] => 0
|
104
|
+
[1, 0] => 0,
|
105
|
+
[1, 1] => 1
|
102
106
|
},
|
103
107
|
'A && B' =>
|
104
|
-
{ [
|
108
|
+
{ [0, 0] => 0,
|
105
109
|
[0, 1] => 0,
|
106
|
-
[1, 0] => 0
|
110
|
+
[1, 0] => 0,
|
111
|
+
[1, 1] => 1
|
107
112
|
},
|
108
113
|
'A&&B' =>
|
109
|
-
{ [
|
114
|
+
{ [0, 0] => 0,
|
110
115
|
[0, 1] => 0,
|
111
|
-
[1, 0] => 0
|
116
|
+
[1, 0] => 0,
|
117
|
+
[1, 1] => 1
|
112
118
|
},
|
113
119
|
'A and not B' =>
|
114
|
-
{ [
|
120
|
+
{ [0, 0] => 0,
|
115
121
|
[0, 1] => 0,
|
116
|
-
[1, 0] => 1
|
122
|
+
[1, 0] => 1,
|
123
|
+
[1, 1] => 0
|
117
124
|
},
|
118
125
|
'A or B or C' =>
|
119
126
|
{ [0, 0, 0] => 0,
|
120
|
-
[
|
127
|
+
[0, 0, 1] => 1,
|
121
128
|
[0, 1, 0] => 1,
|
122
|
-
[
|
129
|
+
[1, 0, 0] => 1,
|
130
|
+
[1, 0, 1] => 1,
|
131
|
+
[1, 1, 0] => 1,
|
132
|
+
[1, 1, 0] => 1,
|
133
|
+
[1, 1, 1] => 1,
|
123
134
|
},
|
124
135
|
'A and B and C' =>
|
125
|
-
{ [
|
136
|
+
{ [0, 0, 0] => 0,
|
137
|
+
[0, 0, 1] => 0,
|
138
|
+
[0, 1, 0] => 0,
|
139
|
+
[1, 0, 0] => 0,
|
140
|
+
[1, 0, 1] => 0,
|
141
|
+
[1, 1, 0] => 0,
|
142
|
+
[1, 1, 0] => 0,
|
143
|
+
[1, 1, 1] => 1,
|
144
|
+
},
|
145
|
+
'A and B or C' =>
|
146
|
+
{ [0, 0, 0] => 0,
|
147
|
+
[0, 0, 1] => 1,
|
148
|
+
[0, 1, 0] => 0,
|
149
|
+
[0, 1, 1] => 1,
|
150
|
+
[1, 0, 0] => 0,
|
151
|
+
[1, 0, 1] => 1,
|
152
|
+
[1, 1, 0] => 1,
|
153
|
+
[1, 1, 1] => 1
|
154
|
+
},
|
155
|
+
'A and B or not C' =>
|
156
|
+
{ [0, 0, 0] => 1,
|
157
|
+
[0, 0, 1] => 0,
|
158
|
+
[0, 1, 0] => 1,
|
126
159
|
[0, 1, 1] => 0,
|
160
|
+
[1, 0, 0] => 1,
|
127
161
|
[1, 0, 1] => 0,
|
128
|
-
[1, 1, 0] =>
|
162
|
+
[1, 1, 0] => 1,
|
163
|
+
[1, 1, 1] => 1
|
129
164
|
},
|
130
165
|
'(A and B) or C' =>
|
131
|
-
{ [
|
166
|
+
{ [0, 0, 0] => 0,
|
167
|
+
[0, 0, 1] => 1,
|
132
168
|
[0, 1, 0] => 0,
|
169
|
+
[0, 1, 1] => 1,
|
133
170
|
[1, 0, 0] => 0,
|
134
|
-
[
|
171
|
+
[1, 0, 1] => 1,
|
172
|
+
[1, 1, 0] => 1,
|
173
|
+
[1, 1, 1] => 1
|
135
174
|
},
|
136
175
|
'A and (B or C)' =>
|
137
|
-
{ [
|
138
|
-
[
|
176
|
+
{ [0, 0, 0] => 0,
|
177
|
+
[0, 0, 1] => 0,
|
178
|
+
[0, 1, 0] => 0,
|
179
|
+
[0, 1, 1] => 0,
|
180
|
+
[1, 0, 0] => 0,
|
139
181
|
[1, 0, 1] => 1,
|
140
|
-
[
|
182
|
+
[1, 1, 0] => 1,
|
183
|
+
[1, 1, 1] => 1
|
141
184
|
},
|
142
185
|
'( A and (B or C) )' =>
|
143
|
-
{ [
|
186
|
+
{ [0, 0, 0] => 0,
|
187
|
+
[0, 0, 1] => 0,
|
188
|
+
[0, 1, 0] => 0,
|
189
|
+
[0, 1, 1] => 0,
|
190
|
+
[1, 0, 0] => 0,
|
191
|
+
[1, 0, 1] => 1,
|
144
192
|
[1, 1, 0] => 1,
|
193
|
+
[1, 1, 1] => 1
|
194
|
+
},
|
195
|
+
'A or B and C' =>
|
196
|
+
{ [0, 0, 0] => 0,
|
197
|
+
[0, 0, 1] => 0,
|
198
|
+
[0, 1, 0] => 0,
|
199
|
+
[0, 1, 1] => 1,
|
200
|
+
[1, 0, 0] => 1,
|
145
201
|
[1, 0, 1] => 1,
|
146
|
-
[
|
202
|
+
[1, 1, 0] => 1,
|
203
|
+
[1, 1, 1] => 1
|
204
|
+
},
|
205
|
+
'A or B and C or D' =>
|
206
|
+
{ [0, 0, 0, 0] => 0,
|
207
|
+
[0, 0, 0, 1] => 1,
|
208
|
+
[0, 0, 1, 0] => 0,
|
209
|
+
[0, 0, 1, 1] => 1,
|
210
|
+
[0, 1, 0, 0] => 0,
|
211
|
+
[0, 1, 0, 1] => 1,
|
212
|
+
[0, 1, 1, 0] => 1,
|
213
|
+
[0, 1, 1, 1] => 1,
|
214
|
+
[1, 0, 0, 0] => 1,
|
215
|
+
[1, 0, 0, 1] => 1,
|
216
|
+
[1, 0, 1, 0] => 1,
|
217
|
+
[1, 0, 1, 1] => 1,
|
218
|
+
[1, 1, 0, 0] => 1,
|
219
|
+
[1, 1, 0, 1] => 1,
|
220
|
+
[1, 1, 1, 0] => 1,
|
221
|
+
[1, 1, 1, 1] => 1
|
147
222
|
}
|
148
223
|
}.each do |logic, cases|
|
149
224
|
describe "'#{logic}'" do
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
module ArubaHelpers
|
2
|
+
def should_not_see_output(partial_output)
|
3
|
+
expect(last_command_started)
|
4
|
+
.to_not have_output(/#{Regexp.quote(partial_output.strip)}/)
|
5
|
+
end
|
6
|
+
|
7
|
+
def should_see_output(partial_output)
|
8
|
+
expect(last_command_started)
|
9
|
+
.to have_output(/#{Regexp.quote(partial_output.strip)}/)
|
10
|
+
end
|
11
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bryan Ash
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: treetop
|
@@ -38,20 +38,6 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0.14'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: cucumber
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '2.4'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '2.4'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: rspec
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,7 +64,6 @@ files:
|
|
78
64
|
- LICENSE
|
79
65
|
- README.rdoc
|
80
66
|
- bin/logic
|
81
|
-
- lib/array.rb
|
82
67
|
- lib/integer.rb
|
83
68
|
- lib/logic_operations.rb
|
84
69
|
- lib/logic_parser.treetop
|
@@ -86,8 +71,13 @@ files:
|
|
86
71
|
- lib/test_case.rb
|
87
72
|
- lib/test_case_set.rb
|
88
73
|
- lib/truth_table.rb
|
74
|
+
- spec/features/help_spec.rb
|
75
|
+
- spec/features/mcdc_pairs_spec.rb
|
76
|
+
- spec/features/truth_table_spec.rb
|
89
77
|
- spec/logic_parser_spec.rb
|
90
78
|
- spec/spec.opts
|
79
|
+
- spec/spec_helper.rb
|
80
|
+
- spec/support/aruba_helpers.rb
|
91
81
|
- spec/test_case_set_spec.rb
|
92
82
|
homepage:
|
93
83
|
licenses:
|
@@ -109,8 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
99
|
- !ruby/object:Gem::Version
|
110
100
|
version: 1.3.6
|
111
101
|
requirements: []
|
112
|
-
|
113
|
-
rubygems_version: 2.5.1
|
102
|
+
rubygems_version: 3.0.3
|
114
103
|
signing_key:
|
115
104
|
specification_version: 4
|
116
105
|
summary: Taking the pain out of MC/DC testing
|