mutant 0.3.0.beta19 → 0.3.0.beta20
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/config/flay.yml +1 -1
- data/lib/mutant/mutator/node/generic.rb +5 -8
- data/lib/mutant/mutator/node/named_value/access.rb +27 -0
- data/lib/mutant/mutator/node/named_value/constant_assignment.rb +42 -0
- data/lib/mutant/mutator/node/{assignment.rb → named_value/variable_assignment.rb} +6 -7
- data/lib/mutant/mutator/node/super.rb +1 -1
- data/lib/mutant/mutator/node/{lvar.rb → zsuper.rb} +4 -4
- data/lib/mutant/reporter/cli/printer/config.rb +1 -1
- data/lib/mutant.rb +4 -3
- data/mutant.gemspec +1 -1
- data/spec/unit/mutant/mutator/node/named_value/access/mutation_spec.rb +88 -0
- data/spec/unit/mutant/mutator/node/named_value/constant_assignment/mutation_spec.rb +20 -0
- data/spec/unit/mutant/mutator/node/{assignment → named_value/variable_assignment}/mutation_spec.rb +1 -1
- data/spec/unit/mutant/mutator/node/send/mutation_spec.rb +4 -0
- data/spec/unit/mutant/mutator/node/super/mutation_spec.rb +6 -1
- metadata +12 -10
- data/spec/unit/mutant/mutator/node/lvar/mutation_spec.rb +0 -21
- data/spec/unit/mutant/mutator/self_spec.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: abfb952112bd4c445ed4733853df50923258451a
|
4
|
+
data.tar.gz: afcc91b4102ab14ed8844f72a649851c58d08b75
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eef08c62d860f904a82b88ebd26ec9f14117e4dc82fdefd5932c26181736564fc4a8621917a6783a9921e42aac3e1fdad3192fa307a6aedbb8aaec4c4f45961c
|
7
|
+
data.tar.gz: 3ad28104cfa6e15e5a75e2c255fb4fa11c8b2f4596e3f042b4f54f643b01f195177be34b4ebf8a83763815f6985674a25cbaee09c52ccf18e2b62d5846872148
|
data/config/flay.yml
CHANGED
@@ -5,16 +5,14 @@ module Mutant
|
|
5
5
|
# Generic mutator
|
6
6
|
class Generic < self
|
7
7
|
|
8
|
-
handle(:self)
|
9
|
-
|
10
8
|
# These nodes still need a dedicated mutator,
|
11
9
|
# your contribution is that close!
|
12
10
|
handle(
|
13
|
-
:
|
14
|
-
:next, :break, :match, :
|
11
|
+
:not, :or, :and, :defined,
|
12
|
+
:next, :break, :match, :ensure,
|
15
13
|
:dstr, :dsym, :yield, :rescue, :redo, :defined?,
|
16
|
-
:
|
17
|
-
:regopt, :
|
14
|
+
:blockarg, :block_pass, :op_asgn, :and_asgn,
|
15
|
+
:regopt, :restarg, :resbody, :retry, :arg_expr,
|
18
16
|
:kwrestarg, :kwoptarg, :kwarg, :undef, :module, :cbase, :empty,
|
19
17
|
:alias, :for, :xstr, :back_ref, :nth_ref, :class,
|
20
18
|
:sclass, :match_with_lvasgn, :match_current_line, :or_asgn, :kwbegin
|
@@ -30,8 +28,7 @@ module Mutant
|
|
30
28
|
#
|
31
29
|
def dispatch
|
32
30
|
children.each_with_index do |child, index|
|
33
|
-
|
34
|
-
mutate_child(index)
|
31
|
+
mutate_child(index) if child.kind_of?(Parser::AST::Node)
|
35
32
|
end
|
36
33
|
end
|
37
34
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Mutant
|
2
|
+
class Mutator
|
3
|
+
class Node
|
4
|
+
module NamedValue
|
5
|
+
|
6
|
+
# Mutation emitter to handle named value access nodes
|
7
|
+
class Access < Node
|
8
|
+
|
9
|
+
handle(:gvar, :cvar, :ivar, :lvar, :const, :self)
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
# Emit mutations
|
14
|
+
#
|
15
|
+
# @return [undefined]
|
16
|
+
#
|
17
|
+
# @api private
|
18
|
+
#
|
19
|
+
def dispatch
|
20
|
+
emit_nil
|
21
|
+
end
|
22
|
+
|
23
|
+
end # Access
|
24
|
+
end # NamedValue
|
25
|
+
end # Node
|
26
|
+
end # Mutator
|
27
|
+
end # Mutant
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Mutant
|
2
|
+
class Mutator
|
3
|
+
class Node
|
4
|
+
module NamedValue
|
5
|
+
|
6
|
+
# Mutation emitter to handle constant assignment nodes
|
7
|
+
class ConstantAssignment < Node
|
8
|
+
|
9
|
+
children :cbase, :name, :value
|
10
|
+
|
11
|
+
handle :casgn
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
# Perform dispatch
|
16
|
+
#
|
17
|
+
# @return [undefined]
|
18
|
+
#
|
19
|
+
# @api private
|
20
|
+
#
|
21
|
+
def dispatch
|
22
|
+
mutate_name
|
23
|
+
emit_value_mutations if value
|
24
|
+
end
|
25
|
+
|
26
|
+
# Emit name mutations
|
27
|
+
#
|
28
|
+
# @return [undefined]
|
29
|
+
#
|
30
|
+
# @api private
|
31
|
+
#
|
32
|
+
def mutate_name
|
33
|
+
Mutator::Util::Symbol.each(name, self) do |name|
|
34
|
+
emit_name(name.upcase)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end # ConstantAssignment
|
39
|
+
end # NamedValue
|
40
|
+
end # Node
|
41
|
+
end # Mutator
|
42
|
+
end # Mutant
|
@@ -1,11 +1,10 @@
|
|
1
1
|
module Mutant
|
2
2
|
class Mutator
|
3
3
|
class Node
|
4
|
-
|
5
|
-
class Assignment < self
|
4
|
+
module NamedValue
|
6
5
|
|
7
|
-
#
|
8
|
-
class
|
6
|
+
# Mutation emitter to handle variable assignment nodes
|
7
|
+
class VariableAssignment < Node
|
9
8
|
|
10
9
|
children :name, :value
|
11
10
|
|
@@ -40,12 +39,12 @@ module Mutant
|
|
40
39
|
def mutate_name
|
41
40
|
prefix = MAP.fetch(node.type)
|
42
41
|
Mutator::Util::Symbol.each(name, self) do |name|
|
43
|
-
emit_name(
|
42
|
+
emit_name(prefix + name.to_s)
|
44
43
|
end
|
45
44
|
end
|
46
45
|
|
47
|
-
end #
|
48
|
-
end #
|
46
|
+
end # VariableAssignment
|
47
|
+
end # NamedValue
|
49
48
|
end # Node
|
50
49
|
end # Mutator
|
51
50
|
end # Mutant
|
@@ -2,10 +2,10 @@ module Mutant
|
|
2
2
|
class Mutator
|
3
3
|
class Node
|
4
4
|
|
5
|
-
#
|
6
|
-
class
|
5
|
+
# Mutator for super without parentheses
|
6
|
+
class ZSuper < self
|
7
7
|
|
8
|
-
handle(:
|
8
|
+
handle(:zsuper)
|
9
9
|
|
10
10
|
private
|
11
11
|
|
@@ -19,7 +19,7 @@ module Mutant
|
|
19
19
|
emit_nil
|
20
20
|
end
|
21
21
|
|
22
|
-
end #
|
22
|
+
end # ZSuper
|
23
23
|
end # Node
|
24
24
|
end # Mutator
|
25
25
|
end # Mutant
|
@@ -115,7 +115,7 @@ module Mutant
|
|
115
115
|
#
|
116
116
|
def print_generic_stats
|
117
117
|
stats = generic_stats.to_a.sort_by(&:last)
|
118
|
-
info('Nodes handled by
|
118
|
+
info('Nodes handled by generic mutator (type:occurrences):')
|
119
119
|
stats.reverse_each do |type, amount|
|
120
120
|
info('%-10s: %d', type, amount)
|
121
121
|
end
|
data/lib/mutant.rb
CHANGED
@@ -54,17 +54,18 @@ require 'mutant/mutator/node/literal/array'
|
|
54
54
|
require 'mutant/mutator/node/literal/hash'
|
55
55
|
require 'mutant/mutator/node/literal/regex'
|
56
56
|
require 'mutant/mutator/node/literal/nil'
|
57
|
-
require 'mutant/mutator/node/assignment'
|
58
57
|
require 'mutant/mutator/node/argument'
|
59
58
|
require 'mutant/mutator/node/arguments'
|
60
59
|
require 'mutant/mutator/node/begin'
|
61
|
-
require 'mutant/mutator/node/
|
60
|
+
require 'mutant/mutator/node/named_value/access'
|
61
|
+
require 'mutant/mutator/node/named_value/constant_assignment'
|
62
|
+
require 'mutant/mutator/node/named_value/variable_assignment'
|
62
63
|
require 'mutant/mutator/node/while'
|
63
64
|
require 'mutant/mutator/node/super'
|
65
|
+
require 'mutant/mutator/node/zsuper'
|
64
66
|
require 'mutant/mutator/node/send'
|
65
67
|
require 'mutant/mutator/node/send/binary'
|
66
68
|
require 'mutant/mutator/node/when'
|
67
|
-
require 'mutant/mutator/node/assignment'
|
68
69
|
require 'mutant/mutator/node/define'
|
69
70
|
require 'mutant/mutator/node/mlhs'
|
70
71
|
require 'mutant/mutator/node/masgn'
|
data/mutant.gemspec
CHANGED
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Mutant::Mutator::Node::NamedValue::Access, 'mutations' do
|
4
|
+
|
5
|
+
before do
|
6
|
+
Mutant::Random.stub(:hex_string => :random)
|
7
|
+
end
|
8
|
+
|
9
|
+
context 'global variable' do
|
10
|
+
let(:source) { '$a = nil; $a' }
|
11
|
+
|
12
|
+
let(:mutations) do
|
13
|
+
mutants = []
|
14
|
+
mutants << '$a = nil; nil'
|
15
|
+
mutants << '$a = nil'
|
16
|
+
mutants << '$a'
|
17
|
+
mutants << '$a = ::Object.new; $a'
|
18
|
+
mutants << '$srandom = nil; $a'
|
19
|
+
end
|
20
|
+
|
21
|
+
it_should_behave_like 'a mutator'
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'class variable' do
|
25
|
+
let(:source) { '@@a = nil; @@a' }
|
26
|
+
|
27
|
+
let(:mutations) do
|
28
|
+
mutants = []
|
29
|
+
mutants << '@@a = nil; nil'
|
30
|
+
mutants << '@@a = nil'
|
31
|
+
mutants << '@@a'
|
32
|
+
mutants << '@@a = ::Object.new; @@a'
|
33
|
+
mutants << '@@srandom = nil; @@a'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'instance variable' do
|
38
|
+
let(:source) { '@a = nil; @a' }
|
39
|
+
|
40
|
+
let(:mutations) do
|
41
|
+
mutants = []
|
42
|
+
mutants << '@a = nil; nil'
|
43
|
+
mutants << '@a = nil'
|
44
|
+
mutants << '@a'
|
45
|
+
mutants << '@a = ::Object.new; @a'
|
46
|
+
mutants << '@srandom = nil; @a'
|
47
|
+
end
|
48
|
+
|
49
|
+
it_should_behave_like 'a mutator'
|
50
|
+
end
|
51
|
+
|
52
|
+
context 'local variable' do
|
53
|
+
let(:source) { 'a = nil; a' }
|
54
|
+
|
55
|
+
let(:mutations) do
|
56
|
+
mutants = []
|
57
|
+
mutants << 'a = nil; nil'
|
58
|
+
mutants << 'a = nil'
|
59
|
+
mutants << 'a'
|
60
|
+
mutants << 'a = ::Object.new; a'
|
61
|
+
mutants << 'srandom = nil; a'
|
62
|
+
end
|
63
|
+
|
64
|
+
it_should_behave_like 'a mutator'
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'constant' do
|
68
|
+
let(:source) { 'A' }
|
69
|
+
|
70
|
+
let(:mutations) do
|
71
|
+
mutants = []
|
72
|
+
mutants << 'nil'
|
73
|
+
end
|
74
|
+
|
75
|
+
it_should_behave_like 'a mutator'
|
76
|
+
end
|
77
|
+
|
78
|
+
context 'self' do
|
79
|
+
let(:source) { 'self' }
|
80
|
+
|
81
|
+
let(:mutations) do
|
82
|
+
mutants = []
|
83
|
+
mutants << 'nil'
|
84
|
+
end
|
85
|
+
|
86
|
+
it_should_behave_like 'a mutator'
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Mutant::Mutator::Node::NamedValue::VariableAssignment, 'mutations' do
|
4
|
+
|
5
|
+
before do
|
6
|
+
Mutant::Random.stub(:hex_string => :random)
|
7
|
+
end
|
8
|
+
|
9
|
+
let(:source) { 'A = true' }
|
10
|
+
|
11
|
+
let(:mutations) do
|
12
|
+
mutations = []
|
13
|
+
|
14
|
+
mutations << 'SRANDOM = true'
|
15
|
+
mutations << 'A = false'
|
16
|
+
mutations << 'A = nil'
|
17
|
+
end
|
18
|
+
|
19
|
+
it_should_behave_like 'a mutator'
|
20
|
+
end
|
@@ -9,6 +9,7 @@ describe Mutant::Mutator, 'send' do
|
|
9
9
|
let(:mutations) do
|
10
10
|
mutations = []
|
11
11
|
mutations << 'foo ||= expression'
|
12
|
+
mutations << 'nil.foo ||= expression'
|
12
13
|
end
|
13
14
|
|
14
15
|
it_should_behave_like 'a mutator'
|
@@ -74,6 +75,7 @@ describe Mutant::Mutator, 'send' do
|
|
74
75
|
mutations = []
|
75
76
|
mutations << 'foo'
|
76
77
|
mutations << 'self'
|
78
|
+
mutations << 'nil.foo'
|
77
79
|
end
|
78
80
|
|
79
81
|
it_should_behave_like 'a mutator'
|
@@ -111,6 +113,7 @@ describe Mutant::Mutator, 'send' do
|
|
111
113
|
mutations = []
|
112
114
|
mutations << 'self.class'
|
113
115
|
mutations << 'self.foo'
|
116
|
+
mutations << 'nil.class.foo'
|
114
117
|
end
|
115
118
|
|
116
119
|
it_should_behave_like 'a mutator'
|
@@ -142,6 +145,7 @@ describe Mutant::Mutator, 'send' do
|
|
142
145
|
mutations << 'foo(nil)'
|
143
146
|
mutations << 'nil'
|
144
147
|
mutations << 'self.foo(::Object.new)'
|
148
|
+
mutations << 'nil.foo(nil)'
|
145
149
|
end
|
146
150
|
|
147
151
|
it_should_behave_like 'a mutator'
|
@@ -5,7 +5,12 @@ describe Mutant::Mutator, 'super' do
|
|
5
5
|
context 'with no arguments' do
|
6
6
|
let(:source) { 'super' }
|
7
7
|
|
8
|
-
|
8
|
+
let(:mutations) do
|
9
|
+
mutations = []
|
10
|
+
mutations << 'nil'
|
11
|
+
end
|
12
|
+
|
13
|
+
it_should_behave_like 'a mutator'
|
9
14
|
end
|
10
15
|
|
11
16
|
context 'with explicit empty arguments' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mutant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.0.
|
4
|
+
version: 0.3.0.beta20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Markus Schirp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07-
|
11
|
+
date: 2013-07-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -221,7 +221,6 @@ files:
|
|
221
221
|
- lib/mutant/mutator/node.rb
|
222
222
|
- lib/mutant/mutator/node/argument.rb
|
223
223
|
- lib/mutant/mutator/node/arguments.rb
|
224
|
-
- lib/mutant/mutator/node/assignment.rb
|
225
224
|
- lib/mutant/mutator/node/begin.rb
|
226
225
|
- lib/mutant/mutator/node/block.rb
|
227
226
|
- lib/mutant/mutator/node/case.rb
|
@@ -240,9 +239,11 @@ files:
|
|
240
239
|
- lib/mutant/mutator/node/literal/regex.rb
|
241
240
|
- lib/mutant/mutator/node/literal/string.rb
|
242
241
|
- lib/mutant/mutator/node/literal/symbol.rb
|
243
|
-
- lib/mutant/mutator/node/lvar.rb
|
244
242
|
- lib/mutant/mutator/node/masgn.rb
|
245
243
|
- lib/mutant/mutator/node/mlhs.rb
|
244
|
+
- lib/mutant/mutator/node/named_value/access.rb
|
245
|
+
- lib/mutant/mutator/node/named_value/constant_assignment.rb
|
246
|
+
- lib/mutant/mutator/node/named_value/variable_assignment.rb
|
246
247
|
- lib/mutant/mutator/node/return.rb
|
247
248
|
- lib/mutant/mutator/node/send.rb
|
248
249
|
- lib/mutant/mutator/node/send/binary.rb
|
@@ -250,6 +251,7 @@ files:
|
|
250
251
|
- lib/mutant/mutator/node/super.rb
|
251
252
|
- lib/mutant/mutator/node/when.rb
|
252
253
|
- lib/mutant/mutator/node/while.rb
|
254
|
+
- lib/mutant/mutator/node/zsuper.rb
|
253
255
|
- lib/mutant/mutator/registry.rb
|
254
256
|
- lib/mutant/mutator/util.rb
|
255
257
|
- lib/mutant/mutator/util/array.rb
|
@@ -319,7 +321,6 @@ files:
|
|
319
321
|
- spec/unit/mutant/mutator/each_spec.rb
|
320
322
|
- spec/unit/mutant/mutator/emit_new_spec.rb
|
321
323
|
- spec/unit/mutant/mutator/emit_spec.rb
|
322
|
-
- spec/unit/mutant/mutator/node/assignment/mutation_spec.rb
|
323
324
|
- spec/unit/mutant/mutator/node/begin/mutation_spec.rb
|
324
325
|
- spec/unit/mutant/mutator/node/block/mutation_spec.rb
|
325
326
|
- spec/unit/mutant/mutator/node/case/mutation_spec.rb
|
@@ -335,13 +336,14 @@ files:
|
|
335
336
|
- spec/unit/mutant/mutator/node/literal/regex_spec.rb
|
336
337
|
- spec/unit/mutant/mutator/node/literal/string_spec.rb
|
337
338
|
- spec/unit/mutant/mutator/node/literal/symbol_spec.rb
|
338
|
-
- spec/unit/mutant/mutator/node/lvar/mutation_spec.rb
|
339
339
|
- spec/unit/mutant/mutator/node/masgn/mutation_spec.rb
|
340
|
+
- spec/unit/mutant/mutator/node/named_value/access/mutation_spec.rb
|
341
|
+
- spec/unit/mutant/mutator/node/named_value/constant_assignment/mutation_spec.rb
|
342
|
+
- spec/unit/mutant/mutator/node/named_value/variable_assignment/mutation_spec.rb
|
340
343
|
- spec/unit/mutant/mutator/node/return/mutation_spec.rb
|
341
344
|
- spec/unit/mutant/mutator/node/send/mutation_spec.rb
|
342
345
|
- spec/unit/mutant/mutator/node/super/mutation_spec.rb
|
343
346
|
- spec/unit/mutant/mutator/node/while/mutation_spec.rb
|
344
|
-
- spec/unit/mutant/mutator/self_spec.rb
|
345
347
|
- spec/unit/mutant/runner/config/subjects_spec.rb
|
346
348
|
- spec/unit/mutant/runner/config/success_predicate_spec.rb
|
347
349
|
- spec/unit/mutant/runner/mutation/killer_spec.rb
|
@@ -427,7 +429,6 @@ test_files:
|
|
427
429
|
- spec/unit/mutant/mutator/each_spec.rb
|
428
430
|
- spec/unit/mutant/mutator/emit_new_spec.rb
|
429
431
|
- spec/unit/mutant/mutator/emit_spec.rb
|
430
|
-
- spec/unit/mutant/mutator/node/assignment/mutation_spec.rb
|
431
432
|
- spec/unit/mutant/mutator/node/begin/mutation_spec.rb
|
432
433
|
- spec/unit/mutant/mutator/node/block/mutation_spec.rb
|
433
434
|
- spec/unit/mutant/mutator/node/case/mutation_spec.rb
|
@@ -443,13 +444,14 @@ test_files:
|
|
443
444
|
- spec/unit/mutant/mutator/node/literal/regex_spec.rb
|
444
445
|
- spec/unit/mutant/mutator/node/literal/string_spec.rb
|
445
446
|
- spec/unit/mutant/mutator/node/literal/symbol_spec.rb
|
446
|
-
- spec/unit/mutant/mutator/node/lvar/mutation_spec.rb
|
447
447
|
- spec/unit/mutant/mutator/node/masgn/mutation_spec.rb
|
448
|
+
- spec/unit/mutant/mutator/node/named_value/access/mutation_spec.rb
|
449
|
+
- spec/unit/mutant/mutator/node/named_value/constant_assignment/mutation_spec.rb
|
450
|
+
- spec/unit/mutant/mutator/node/named_value/variable_assignment/mutation_spec.rb
|
448
451
|
- spec/unit/mutant/mutator/node/return/mutation_spec.rb
|
449
452
|
- spec/unit/mutant/mutator/node/send/mutation_spec.rb
|
450
453
|
- spec/unit/mutant/mutator/node/super/mutation_spec.rb
|
451
454
|
- spec/unit/mutant/mutator/node/while/mutation_spec.rb
|
452
|
-
- spec/unit/mutant/mutator/self_spec.rb
|
453
455
|
- spec/unit/mutant/runner/config/subjects_spec.rb
|
454
456
|
- spec/unit/mutant/runner/config/success_predicate_spec.rb
|
455
457
|
- spec/unit/mutant/runner/mutation/killer_spec.rb
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Mutant::Mutator, 'lvar' do
|
4
|
-
|
5
|
-
before do
|
6
|
-
Mutant::Random.stub(:hex_string => 'random')
|
7
|
-
end
|
8
|
-
|
9
|
-
let(:source) { 'a = nil; a' }
|
10
|
-
|
11
|
-
let(:mutations) do
|
12
|
-
mutants = []
|
13
|
-
mutants << 'a = nil; nil'
|
14
|
-
mutants << 'a = nil'
|
15
|
-
mutants << 'a'
|
16
|
-
mutants << 'a = ::Object.new; a'
|
17
|
-
mutants << 'srandom = nil; a'
|
18
|
-
end
|
19
|
-
|
20
|
-
it_should_behave_like 'a mutator'
|
21
|
-
end
|