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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 965fd071223b09ac8aa8d4f719408704bdac0e2b
4
- data.tar.gz: c8e46370bc8d75a62a4a4f3409990acc1da9abec
2
+ SHA256:
3
+ metadata.gz: dc59412e7a4c95a2104f101dbe57fd5b9aacc6250ac885b8e64f58f139852bad
4
+ data.tar.gz: 8a97b64638e50d50ee0fd36827afb60e2771cfbf84e61765e435d2e7ac2f8918
5
5
  SHA512:
6
- metadata.gz: 2564f0a1559a6ad21910653098215d575157b852195f24d863706ec930fbddd770c90003dd2a976612a61f02680bf2ec28562ea77457174327dcf95585d017d6
7
- data.tar.gz: ab25c1d65a5691b05b1c6d2032b065c6f9a7bf21842ecfd6955de812ddd2f81afccd985e81757e7e13f221b39cc94afa289db3d16d8af42e33e3b55ecc80961e
6
+ metadata.gz: 185427c28647b5124e6efd34ce2c114ccba5d5e881a411afcb5458ed6c39b5d1addedc816a99414bdfd64df6d4f2f5df9c473a621f4cedb3489a528096f2e244
7
+ data.tar.gz: 18a97e43de0ea689fdb053e8e455f2db7b629fe868d26a8a8940b689bb6ff0ad8dd88e62992efd897f4248e34ebd82fb0bab2d28b46c2d0d4ae9a69281e62659
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2017 Bryan Ash
1
+ Copyright (c) 2019 Bryan Ash
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.rdoc CHANGED
@@ -46,4 +46,4 @@ The syntax understands: 'and', '&&', 'or', '||', 'xor', '^', 'not', '!', and par
46
46
 
47
47
  == Copyright
48
48
 
49
- Copyright (c) 2017 Bryan Ash. See LICENSE for details.
49
+ Copyright (c) 2019 Bryan Ash. See LICENSE for details.
data/lib/integer.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  class Integer
2
-
3
2
  def to_array_of_bits(width)
4
3
  ("%0#{width}b" % self).split(//).map(&:to_i)
5
4
  end
@@ -7,5 +6,4 @@ class Integer
7
6
  def negate
8
7
  self + 1 & 1
9
8
  end
10
-
11
9
  end
@@ -37,13 +37,24 @@ module BinaryDecision
37
37
  include Decision
38
38
 
39
39
  def condition_identifiers
40
- elements.map(&:condition_identifiers).flatten
40
+ elements.flat_map(&:condition_identifiers)
41
41
  end
42
42
 
43
43
  def evaluate(conditions)
44
- left = operand_1.evaluate(conditions)
45
- right = operand_2.evaluate(conditions)
46
- operator.apply(left, right)
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
 
@@ -1,20 +1,36 @@
1
1
  grammar Logic
2
- rule decision
3
- binary_decision / unary_decision
2
+ rule disjunction
3
+ left:conjunction tail:or_tail <BinaryDecision>
4
4
  end
5
5
 
6
- rule binary_decision
7
- operand_1:unary_decision
8
- operator
9
- operand_2:decision <BinaryDecision>
6
+ rule conjunction
7
+ left:primitive tail:and_tail <BinaryDecision>
10
8
  end
11
9
 
12
- rule unary_decision
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:unary_decision <Negation>
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:decision space? ')' <Parenthesized>
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
@@ -1,7 +1,5 @@
1
1
  class Range
2
-
3
2
  def take(number_of_elements)
4
3
  to_a[0,number_of_elements]
5
4
  end
6
-
7
5
  end
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 ||= (@condition_value).to_array_of_bits(@condition_count)
17
+ @conditions ||= @condition_value.to_array_of_bits(@condition_count)
19
18
  end
20
19
 
21
20
  def number
22
- conditions.join.to_i(base = 2) + 1
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
@@ -1,5 +1,4 @@
1
1
  class TruthTable
2
-
3
2
  def initialize(test_cases)
4
3
  @test_cases = test_cases
5
4
  end
@@ -21,5 +20,4 @@ class TruthTable
21
20
  def formatted_cases
22
21
  @test_cases.formatted("%2d) %s | %3d\n")
23
22
  end
24
-
25
23
  end
@@ -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
@@ -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
- { [1, 1] => 1,
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
- { [1, 1] => 1,
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
- { [1, 1] => 1,
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
- { [1, 1] => 0,
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
- [1, 0, 0] => 1,
127
+ [0, 0, 1] => 1,
121
128
  [0, 1, 0] => 1,
122
- [0, 0, 1] => 1
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
- { [1, 1, 1] => 1,
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] => 0
162
+ [1, 1, 0] => 1,
163
+ [1, 1, 1] => 1
129
164
  },
130
165
  '(A and B) or C' =>
131
- { [1, 1, 0] => 1,
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
- [0, 0, 1] => 1
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
- { [1, 0, 0] => 0,
138
- [1, 1, 0] => 1,
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
- [0, 1, 1] => 0
182
+ [1, 1, 0] => 1,
183
+ [1, 1, 1] => 1
141
184
  },
142
185
  '( A and (B or C) )' =>
143
- { [1, 0, 0] => 0,
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
- [0, 1, 1] => 0
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
@@ -0,0 +1,7 @@
1
+ require 'aruba/rspec'
2
+
3
+ require 'support/aruba_helpers'
4
+
5
+ RSpec.configure do |c|
6
+ c.include ArubaHelpers
7
+ end
@@ -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.1.5
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: 2017-01-08 00:00:00.000000000 Z
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
- rubyforge_project:
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
data/lib/array.rb DELETED
@@ -1,11 +0,0 @@
1
- class Array
2
-
3
- def count
4
- length
5
- end
6
-
7
- def to_s
8
- inspect
9
- end
10
-
11
- end