mutant 0.5.17 → 0.5.18

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.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +6 -0
  3. data/Rakefile +13 -0
  4. data/config/flay.yml +1 -1
  5. data/config/reek.yml +8 -1
  6. data/lib/mutant.rb +18 -3
  7. data/lib/mutant/cli.rb +6 -3
  8. data/lib/mutant/constants.rb +3 -0
  9. data/lib/mutant/expression.rb +110 -0
  10. data/lib/mutant/expression/method.rb +92 -0
  11. data/lib/mutant/expression/namespace.rb +90 -0
  12. data/lib/mutant/matcher/namespace.rb +3 -4
  13. data/lib/mutant/meta.rb +31 -0
  14. data/lib/mutant/meta/example.rb +152 -0
  15. data/lib/mutant/meta/example/dsl.rb +105 -0
  16. data/lib/mutant/mutator/node.rb +6 -6
  17. data/lib/mutant/mutator/node/arguments.rb +1 -1
  18. data/lib/mutant/mutator/node/begin.rb +1 -1
  19. data/lib/mutant/mutator/node/const.rb +1 -1
  20. data/lib/mutant/mutator/node/if.rb +6 -6
  21. data/lib/mutant/mutator/node/literal/array.rb +2 -2
  22. data/lib/mutant/mutator/node/literal/hash.rb +2 -2
  23. data/lib/mutant/mutator/node/literal/range.rb +3 -3
  24. data/lib/mutant/mutator/node/literal/regex.rb +2 -2
  25. data/lib/mutant/mutator/node/literal/symbol.rb +1 -1
  26. data/lib/mutant/mutator/node/op_asgn.rb +1 -3
  27. data/lib/mutant/mutator/node/or_asgn.rb +31 -0
  28. data/lib/mutant/mutator/node/send.rb +1 -1
  29. data/lib/mutant/mutator/node/send/attribute_assignment.rb +1 -1
  30. data/lib/mutant/reporter/cli/report/mutation.rb +11 -1
  31. data/lib/mutant/strategy.rb +1 -1
  32. data/lib/mutant/version.rb +1 -1
  33. data/meta/and.rb +12 -0
  34. data/meta/and_asgn.rb +12 -0
  35. data/meta/array.rb +30 -0
  36. data/meta/begin.rb +15 -0
  37. data/meta/binary.rb +12 -0
  38. data/meta/block.rb +55 -0
  39. data/meta/block_pass.rb +8 -0
  40. data/meta/blockarg.rb +10 -0
  41. data/meta/boolean.rb +15 -0
  42. data/meta/break.rb +11 -0
  43. data/meta/case.rb +303 -0
  44. data/meta/casgn.rb +9 -0
  45. data/meta/cbase.rb +8 -0
  46. data/meta/const.rb +9 -0
  47. data/meta/cvar.rb +7 -0
  48. data/meta/cvasgn.rb +10 -0
  49. data/meta/define.rb +118 -0
  50. data/meta/defined.rb +7 -0
  51. data/meta/dstr.rb +10 -0
  52. data/meta/dsym.rb +11 -0
  53. data/meta/ensure.rb +9 -0
  54. data/meta/fixnum.rb +19 -0
  55. data/meta/float.rb +38 -0
  56. data/meta/gvar.rb +7 -0
  57. data/meta/gvasgn.rb +10 -0
  58. data/meta/hash.rb +25 -0
  59. data/meta/if.rb +57 -0
  60. data/meta/ivasgn.rb +10 -0
  61. data/meta/kwbegin.rb +9 -0
  62. data/meta/lvar.rb +14 -0
  63. data/meta/lvasgn.rb +10 -0
  64. data/meta/masgn.rb +7 -0
  65. data/meta/match_current_line.rb +14 -0
  66. data/meta/next.rb +11 -0
  67. data/meta/nil.rb +5 -0
  68. data/meta/nthref.rb +14 -0
  69. data/meta/op_assgn.rb +15 -0
  70. data/meta/or_asgn.rb +22 -0
  71. data/meta/range.rb +41 -0
  72. data/meta/redo.rb +5 -0
  73. data/meta/regex.rb +20 -0
  74. data/meta/rescue.rb +38 -0
  75. data/meta/restarg.rb +11 -0
  76. data/meta/return.rb +15 -0
  77. data/meta/self.rb +7 -0
  78. data/meta/send.rb +240 -0
  79. data/meta/string.rb +7 -0
  80. data/meta/super.rb +26 -0
  81. data/meta/symbol.rb +8 -0
  82. data/meta/unless.rb +15 -0
  83. data/meta/while.rb +24 -0
  84. data/meta/yield.rb +10 -0
  85. data/mutant.gemspec +1 -0
  86. data/spec/integration/mutant/corpus_spec.rb +29 -25
  87. data/spec/spec_helper.rb +2 -0
  88. data/spec/support/mutation_verifier.rb +1 -0
  89. data/spec/unit/mutant/cli_new_spec.rb +6 -6
  90. data/spec/unit/mutant/expression/method_spec.rb +50 -0
  91. data/spec/unit/mutant/expression/namespace/flat_spec.rb +32 -0
  92. data/spec/unit/mutant/expression/namespace/recursive_spec.rb +37 -0
  93. data/spec/unit/mutant/matcher/namespace_spec.rb +2 -2
  94. data/spec/unit/mutant/mutation_spec.rb +1 -1
  95. data/spec/unit/mutant/mutator/node_spec.rb +14 -0
  96. metadata +123 -139
  97. data/lib/mutant/cli/classifier.rb +0 -139
  98. data/lib/mutant/cli/classifier/method.rb +0 -105
  99. data/lib/mutant/cli/classifier/namespace.rb +0 -49
  100. data/spec/unit/mutant/cli/classifier/method_spec.rb +0 -77
  101. data/spec/unit/mutant/cli/classifier/namespace/flat_spec.rb +0 -58
  102. data/spec/unit/mutant/cli/classifier/namespace/recursive_spec.rb +0 -58
  103. data/spec/unit/mutant/cli/classifier_spec.rb +0 -59
  104. data/spec/unit/mutant/mutator/node/and_asgn_spec.rb +0 -19
  105. data/spec/unit/mutant/mutator/node/begin_spec.rb +0 -32
  106. data/spec/unit/mutant/mutator/node/binary_spec.rb +0 -41
  107. data/spec/unit/mutant/mutator/node/block_pass_spec.rb +0 -15
  108. data/spec/unit/mutant/mutator/node/block_spec.rb +0 -83
  109. data/spec/unit/mutant/mutator/node/blockarg_spec.rb +0 -17
  110. data/spec/unit/mutant/mutator/node/case_spec.rb +0 -329
  111. data/spec/unit/mutant/mutator/node/cbase_spec.rb +0 -15
  112. data/spec/unit/mutant/mutator/node/conditional_loop_spec.rb +0 -58
  113. data/spec/unit/mutant/mutator/node/const_spec.rb +0 -16
  114. data/spec/unit/mutant/mutator/node/define_spec.rb +0 -171
  115. data/spec/unit/mutant/mutator/node/defined_spec.rb +0 -14
  116. data/spec/unit/mutant/mutator/node/dstr_spec.rb +0 -17
  117. data/spec/unit/mutant/mutator/node/dsym_spec.rb +0 -18
  118. data/spec/unit/mutant/mutator/node/ensure_spec.rb +0 -16
  119. data/spec/unit/mutant/mutator/node/if_spec.rb +0 -77
  120. data/spec/unit/mutant/mutator/node/kwbegin_spec.rb +0 -16
  121. data/spec/unit/mutant/mutator/node/literal/array_spec.rb +0 -47
  122. data/spec/unit/mutant/mutator/node/literal/boolean_spec.rb +0 -25
  123. data/spec/unit/mutant/mutator/node/literal/fixnum_spec.rb +0 -13
  124. data/spec/unit/mutant/mutator/node/literal/float_spec.rb +0 -53
  125. data/spec/unit/mutant/mutator/node/literal/hash_spec.rb +0 -33
  126. data/spec/unit/mutant/mutator/node/literal/nil_spec.rb +0 -10
  127. data/spec/unit/mutant/mutator/node/literal/range_spec.rb +0 -56
  128. data/spec/unit/mutant/mutator/node/literal/regex_spec.rb +0 -36
  129. data/spec/unit/mutant/mutator/node/literal/string_spec.rb +0 -15
  130. data/spec/unit/mutant/mutator/node/literal/symbol_spec.rb +0 -15
  131. data/spec/unit/mutant/mutator/node/loop_ctrl_spec.rb +0 -37
  132. data/spec/unit/mutant/mutator/node/masgn_spec.rb +0 -14
  133. data/spec/unit/mutant/mutator/node/match_current_line_spec.rb +0 -21
  134. data/spec/unit/mutant/mutator/node/named_value/access_spec.rb +0 -78
  135. data/spec/unit/mutant/mutator/node/named_value/constant_assignment_spec.rb +0 -16
  136. data/spec/unit/mutant/mutator/node/named_value/variable_assignment_spec.rb +0 -61
  137. data/spec/unit/mutant/mutator/node/nthref_spec.rb +0 -19
  138. data/spec/unit/mutant/mutator/node/op_assgn_spec.rb +0 -22
  139. data/spec/unit/mutant/mutator/node/or_asgn_spec.rb +0 -19
  140. data/spec/unit/mutant/mutator/node/redo_spec.rb +0 -10
  141. data/spec/unit/mutant/mutator/node/rescue_spec.rb +0 -63
  142. data/spec/unit/mutant/mutator/node/restarg_spec.rb +0 -18
  143. data/spec/unit/mutant/mutator/node/return_spec.rb +0 -31
  144. data/spec/unit/mutant/mutator/node/send_spec.rb +0 -382
  145. data/spec/unit/mutant/mutator/node/super_spec.rb +0 -46
  146. data/spec/unit/mutant/mutator/node/yield_spec.rb +0 -17
@@ -1,59 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Mutant::CLI::Classifier, '.run' do
6
- subject { described_class.run(cache, input) }
7
-
8
- let(:cache) { double('Cache') }
9
-
10
- this_spec = 'Mutant::CLI::Classifier.build'
11
-
12
- shared_examples_for this_spec do
13
- it 'shoud return expected instance' do
14
- should eql(expected_matcher)
15
- end
16
-
17
- let(:expected_class) { Mutant::CLI::Classifier::Method }
18
- end
19
-
20
- context 'with explicit toplevel scope' do
21
-
22
- let(:input) { '::TestApp::Literal#string' }
23
-
24
- let(:expected_matcher) do
25
- Mutant::Matcher::Method::Instance.new(cache, TestApp::Literal, TestApp::Literal.instance_method(:string))
26
- end
27
-
28
- include_examples this_spec
29
- end
30
-
31
- context 'with instance method notation' do
32
-
33
- let(:input) { 'TestApp::Literal#string' }
34
-
35
- let(:expected_matcher) do
36
- Mutant::Matcher::Method::Instance.new(cache, TestApp::Literal, TestApp::Literal.instance_method(:string))
37
- end
38
-
39
- include_examples this_spec
40
- end
41
-
42
- context 'with singleton method notation' do
43
- let(:input) { 'TestApp::Literal.string' }
44
-
45
- let(:expected_matcher) do
46
- Mutant::Matcher::Method::Singleton.new(cache, TestApp::Literal, TestApp::Literal.method(:string))
47
- end
48
-
49
- include_examples this_spec
50
- end
51
-
52
- context 'with invalid notation' do
53
- let(:input) { '::' }
54
-
55
- it 'should return nil' do
56
- expect { subject }.to raise_error(Mutant::CLI::Error, "No matcher handles: #{input.inspect}")
57
- end
58
- end
59
- end
@@ -1,19 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Mutant::Mutator::Node::OpAsgn, 'and_asgn' do
6
- let(:source) { 'a &&= 1' }
7
-
8
- let(:mutations) do
9
- mutations = []
10
- mutations << 'a__mutant__ &&= 1'
11
- mutations << 'a &&= nil'
12
- mutations << 'a &&= 0'
13
- mutations << 'a &&= -1'
14
- mutations << 'a &&= 2'
15
- mutations << 'nil'
16
- end
17
-
18
- it_should_behave_like 'a mutator'
19
- end
@@ -1,32 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Mutant::Mutator, 'begin' do
6
-
7
- # This mutation and only this mutation can result in
8
- # and empty emit that is parsed into nil, unparser cannot
9
- # handle this so we guard this here!
10
- def generate(node)
11
- return '' if node.nil?
12
- super
13
- end
14
-
15
- let(:source) { "true\nfalse" }
16
-
17
- let(:mutations) do
18
- mutations = []
19
-
20
- # Mutation of each statement in block
21
- mutations << "true\ntrue"
22
- mutations << "false\nfalse"
23
- mutations << "nil\nfalse"
24
- mutations << "true\nnil"
25
-
26
- # Remove statement in block
27
- mutations << 'true'
28
- mutations << 'false'
29
- end
30
-
31
- it_should_behave_like 'a mutator'
32
- end
@@ -1,41 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Mutant::Mutator::Node::Binary, 'mutations' do
6
- context 'and' do
7
- let(:source) { 'true and false' }
8
-
9
- let(:mutations) do
10
- mutations = []
11
- mutations << 'nil'
12
- mutations << 'true'
13
- mutations << 'false'
14
-
15
- mutations << 'true or false'
16
-
17
- mutations << 'not true and false'
18
- mutations << 'not(true and false)'
19
- end
20
-
21
- it_should_behave_like 'a mutator'
22
- end
23
-
24
- context 'or' do
25
- let(:source) { 'true or false' }
26
-
27
- let(:mutations) do
28
- mutations = []
29
- mutations << 'nil'
30
- mutations << 'true'
31
- mutations << 'false'
32
-
33
- mutations << 'true and false'
34
-
35
- mutations << 'not true or false'
36
- mutations << 'not(true or false)'
37
- end
38
-
39
- it_should_behave_like 'a mutator'
40
- end
41
- end
@@ -1,15 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Mutant::Mutator::Node::NamedValue::Access, 'block_pass' do
6
- let(:source) { 'foo(&bar)' }
7
-
8
- let(:mutations) do
9
- mutants = []
10
- mutants << 'foo'
11
- mutants << 'nil'
12
- end
13
-
14
- it_should_behave_like 'a mutator'
15
- end
@@ -1,83 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Mutant::Mutator, 'block' do
6
- context 'with block' do
7
- let(:source) { 'foo() { a; b }' }
8
-
9
- let(:mutations) do
10
- mutations = []
11
- mutations << 'foo { a }'
12
- mutations << 'foo { b }'
13
- mutations << 'foo {}'
14
- mutations << 'foo { raise }'
15
- mutations << 'foo { a; nil }'
16
- mutations << 'foo { nil; b }'
17
- mutations << 'foo'
18
- mutations << 'nil'
19
- end
20
-
21
- it_should_behave_like 'a mutator'
22
- end
23
-
24
- context 'with block args' do
25
-
26
- let(:source) { 'foo { |a, b| }' }
27
-
28
- let(:mutations) do
29
- mutations = []
30
- mutations << 'foo'
31
- mutations << 'foo { |a, b| raise }'
32
- mutations << 'foo { |a, b__mutant__| }'
33
- mutations << 'foo { |a__mutant__, b| }'
34
- mutations << 'foo { |a| }'
35
- mutations << 'foo { |b| }'
36
- mutations << 'foo { || }'
37
- mutations << 'nil'
38
- end
39
-
40
- it_should_behave_like 'a mutator'
41
- end
42
-
43
- context 'with block pattern args' do
44
-
45
- let(:source) { 'foo { |(a, b), c| }' }
46
-
47
- let(:mutations) do
48
- mutations = []
49
- mutations << 'foo { || }'
50
- mutations << 'foo { |a, b, c| }'
51
- mutations << 'foo { |(a, b), c| raise }'
52
- mutations << 'foo { |(a), c| }'
53
- mutations << 'foo { |(b), c| }'
54
- mutations << 'foo { |(a, b)| }'
55
- mutations << 'foo { |c| }'
56
- mutations << 'foo { |(a__mutant__, b), c| }'
57
- mutations << 'foo { |(a, b__mutant__), c| }'
58
- mutations << 'foo { |(a, b), c__mutant__| }'
59
- mutations << 'foo'
60
- mutations << 'nil'
61
- end
62
-
63
- it_should_behave_like 'a mutator'
64
- end
65
-
66
- context 'with mini block pattern arg' do
67
-
68
- let(:source) { 'foo { |(a)| }' }
69
-
70
- let(:mutations) do
71
- mutations = []
72
- mutations << 'foo { || }'
73
- mutations << 'foo { |a| }'
74
- mutations << 'foo { |(a)| raise }'
75
- mutations << 'foo { |(a__mutant__)| }'
76
- mutations << 'foo'
77
- mutations << 'nil'
78
- end
79
-
80
- it_should_behave_like 'a mutator'
81
-
82
- end
83
- end
@@ -1,17 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Mutant::Mutator::Node::Blockarg, 'blockarg' do
6
- let(:source) { 'foo { |&bar| }' }
7
-
8
- let(:mutations) do
9
- mutations = []
10
- mutations << 'foo { |&bar| raise }'
11
- mutations << 'foo {}'
12
- mutations << 'foo'
13
- mutations << 'nil'
14
- end
15
-
16
- it_should_behave_like 'a mutator'
17
- end
@@ -1,329 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Mutant::Mutator::Node::Case do
6
- context 'without condition' do
7
- let(:source) do
8
- <<-RUBY
9
- case
10
- when true
11
- else
12
- end
13
- RUBY
14
- end
15
-
16
- let(:mutations) do
17
- mutations = []
18
- mutations << 'nil'
19
- mutations << <<-RUBY
20
- case
21
- when true
22
- raise
23
- else
24
- end
25
- RUBY
26
- mutations << <<-RUBY
27
- case
28
- when false
29
- else
30
- end
31
- RUBY
32
- mutations << <<-RUBY
33
- case
34
- when nil
35
- else
36
- end
37
- RUBY
38
- end
39
-
40
- it_should_behave_like 'a mutator'
41
- end
42
-
43
- context 'with multiple when branches' do
44
- let(:source) do
45
- <<-RUBY
46
- case :condition
47
- when :foo
48
- when :bar, :baz
49
- :barbaz
50
- else
51
- :else
52
- end
53
- RUBY
54
- end
55
-
56
- let(:mutations) do
57
- mutations = []
58
-
59
- # Presence of branches
60
- mutations << <<-RUBY
61
- case :condition
62
- when :bar, :baz
63
- :barbaz
64
- else
65
- :else
66
- end
67
- RUBY
68
- mutations << <<-RUBY
69
- case :condition
70
- when :foo
71
- else
72
- :else
73
- end
74
- RUBY
75
- mutations << <<-RUBY
76
- case :condition
77
- when :foo
78
- when :bar, :baz
79
- :barbaz
80
- end
81
- RUBY
82
-
83
- # Mutations of condition
84
- mutations << <<-RUBY
85
- case nil
86
- when :foo
87
- when :bar, :baz
88
- :barbaz
89
- else
90
- :else
91
- end
92
- RUBY
93
- mutations << <<-RUBY
94
- case :condition__mutant__
95
- when :foo
96
- when :bar, :baz
97
- :barbaz
98
- else
99
- :else
100
- end
101
- RUBY
102
-
103
- # Mutations of branch bodies
104
- mutations << <<-RUBY
105
- case :condition
106
- when :foo
107
- raise
108
- when :bar, :baz
109
- :barbaz
110
- else
111
- :else
112
- end
113
- RUBY
114
- mutations << <<-RUBY
115
- case :condition
116
- when :foo
117
- when :bar, :baz
118
- :barbaz__mutant__
119
- else
120
- :else
121
- end
122
- RUBY
123
- mutations << <<-RUBY
124
- case :condition
125
- when :foo
126
- when :bar, :baz
127
- nil
128
- else
129
- :else
130
- end
131
- RUBY
132
- mutations << <<-RUBY
133
- case :condition
134
- when :foo
135
- when :bar, :baz
136
- :barbaz
137
- else
138
- :else__mutant__
139
- end
140
- RUBY
141
- mutations << <<-RUBY
142
- case :condition
143
- when :foo
144
- when :bar, :baz
145
- :barbaz
146
- else
147
- nil
148
- end
149
- RUBY
150
-
151
- # Mutations of when conditions
152
- mutations << <<-RUBY
153
- case :condition
154
- when :foo__mutant__
155
- when :bar, :baz
156
- :barbaz
157
- else
158
- :else
159
- end
160
- RUBY
161
- mutations << <<-RUBY
162
- case :condition
163
- when nil
164
- when :bar, :baz
165
- :barbaz
166
- else
167
- :else
168
- end
169
- RUBY
170
- mutations << <<-RUBY
171
- case :condition
172
- when :foo
173
- when :bar__mutant__, :baz
174
- :barbaz
175
- else
176
- :else
177
- end
178
- RUBY
179
- mutations << <<-RUBY
180
- case :condition
181
- when :foo
182
- when nil, :baz
183
- :barbaz
184
- else
185
- :else
186
- end
187
- RUBY
188
- mutations << <<-RUBY
189
- case :condition
190
- when :foo
191
- when :bar, nil
192
- :barbaz
193
- else
194
- :else
195
- end
196
- RUBY
197
- mutations << <<-RUBY
198
- case :condition
199
- when :foo
200
- when :bar, :baz__mutant__
201
- :barbaz
202
- else
203
- :else
204
- end
205
- RUBY
206
- mutations << <<-RUBY
207
- case :condition
208
- when :foo
209
- when :baz
210
- :barbaz
211
- else
212
- :else
213
- end
214
- RUBY
215
- mutations << <<-RUBY
216
- case :condition
217
- when :foo
218
- when :bar
219
- :barbaz
220
- else
221
- :else
222
- end
223
- RUBY
224
-
225
- mutations << 'nil'
226
- end
227
-
228
- it_should_behave_like 'a mutator'
229
- end
230
-
231
- context 'with one when branch' do
232
- let(:source) do
233
- <<-RUBY
234
- case :condition
235
- when :foo
236
- :foo
237
- else
238
- :else
239
- end
240
- RUBY
241
- end
242
-
243
- let(:mutations) do
244
- mutations = []
245
-
246
- # Presence of branches
247
- mutations << <<-RUBY
248
- case :condition
249
- when :foo
250
- :foo
251
- end
252
- RUBY
253
-
254
- # Mutations of condition
255
- mutations << <<-RUBY
256
- case nil
257
- when :foo
258
- :foo
259
- else
260
- :else
261
- end
262
- RUBY
263
- mutations << <<-RUBY
264
- case :condition__mutant__
265
- when :foo
266
- :foo
267
- else
268
- :else
269
- end
270
- RUBY
271
-
272
- # Mutations of branch bodies
273
- mutations << <<-RUBY
274
- case :condition
275
- when :foo
276
- nil
277
- else
278
- :else
279
- end
280
- RUBY
281
- mutations << <<-RUBY
282
- case :condition
283
- when :foo
284
- :foo__mutant__
285
- else
286
- :else
287
- end
288
- RUBY
289
- mutations << <<-RUBY
290
- case :condition
291
- when :foo
292
- :foo
293
- else
294
- :else__mutant__
295
- end
296
- RUBY
297
- mutations << <<-RUBY
298
- case :condition
299
- when :foo
300
- :foo
301
- else
302
- nil
303
- end
304
- RUBY
305
-
306
- # Mutations of when conditions
307
- mutations << <<-RUBY
308
- case :condition
309
- when :foo__mutant__
310
- :foo
311
- else
312
- :else
313
- end
314
- RUBY
315
- mutations << <<-RUBY
316
- case :condition
317
- when nil
318
- :foo
319
- else
320
- :else
321
- end
322
- RUBY
323
-
324
- mutations << 'nil'
325
- end
326
-
327
- it_should_behave_like 'a mutator'
328
- end
329
- end