Permalink
Browse files

Added mutation list todo

Streamlined mutation generation to occur JIT instead of all up front
  • Loading branch information...
1 parent 0ec5fee commit 1702907c4e7a896873407d24c57d1c8046d6c8e9 @padraic committed Jul 30, 2011
View
@@ -0,0 +1,58 @@
+Supported Mutations
+-------------------
+
+TODO - RENAMES
+
+1. BooleanAnd - replaces && with ||
+2. BooleanOr - replaces || with &&
+3. BooleanFalse - replaces FALSE with TRUE
+4. BooleanTrue - replaces TRUE with FALSE
+5. OperatorAddition - replaces + with -
+6. OperatorSubtraction - replaces - with +
+7. OperatorDecrement - replaces -- with ++
+8. OperatorIncrement - replaces ++ with --
+
+TODO - OPERATORS
+
+9. OperatorArithmeticDivision - replaces / with *
+10. OperatorArithmeticModulus - replaces % with *
+11. OperatorArithmeticMultiplication - replaces * with /
+12. OperatorNegation - replaces - with <blank>
+13. OperatorAssignmentPlusEqual - replaces += with -=
+14. OperatorAssignmentMinusEqual - replaces -= with +=
+15. OperatorBitwiseAnd - replaces & with |
+16. OperatorBitwiseOr - replaces | with &
+17. OperatorBitwiseXor - replaces ^ with |
+18. OperatorBitwiseNot - replaces ~ with <blank>
+19. OperatorBitwiseShiftLeft - replaces << with >>
+20. OperatorBitwiseShiftRight - replaces >> with <<
+21. OperatorComparisonEqual - replaces == with !=
+22. OperatorComparisonIdentical - replaces === with !==
+23. OperatorComparisonNotEqual - replaces != with ==
+24. OperatorComparisonNotEqualAngular - replaces <> with ==
+25. OperatorComparisonNotIdentical - replaces !== with ===
+26. OperatorComparisonLessThan - replaces < with >
+27. OperatorComparisonGreaterThan - replaces > with <
+28. OperatorComparisonLessThenOrEqualTo - replaces <= with >
+29. OperatorComparisonGreaterThanOrEqualTo - replaces >= with <
+30. OperatorLogicalAnd - replaces AND with Or
+31. OperatorLogicalOr - replaces OR with AND
+32. OperatorLogicalXor - replaces XOR with AND
+33. OperatorLogicalNot - replaces ! with <blank>
+*34. OperatorLogicalAndSym - replaces && with || <replaces 1>
+*35. OperatorLogicalOrSym - replaces || with && <replaces 2>
+36. OperatorTypeInstanceof - replaces instanceof with !instanceof
+*37. OperatorTypeNotInstanceOf - <covered by OperatorLogicalNot>
+
+TODO - SCALARS
+
+38. ScalarString - replaces a literal string with random string
+39. ScalarRegex - replaces a regex with random regex
+40. ScalarInteger - replace an integer with random integer
+41. ScalarFloat - replace a float with random float
+42. ScalarNumeric - replace a string if numeric with a random numeric string
+
+TODO - LOGICAL
+
+43. LogicalIf - replaces positive IF condition with a negative one
+*44. LogicalIfNegative - <covered by OperatorLogicalNot>
@@ -64,7 +64,6 @@ public function generate($mutableObject = null)
$mutable = new $mutableObject;
$mutable->setFilename($file);
}
- $mutable->generate();
$this->_mutables[] = $mutable;
}
}
@@ -64,6 +64,15 @@ public function generate()
{
$this->_mutables = $this->_parseMutables();
$this->_parseTokensToMutations($this->_mutables);
+ return $this;
+ }
+
+ /**
+ * Cleanup routines for memory management
+ */
+ public function cleanup()
+ {
+ unset($this->_mutations, $this->_mutables);
}
/**
@@ -121,6 +130,7 @@ public function getMutables()
public function hasMutation($type)
{
$typeClass = '\\Mutagenesis\\Mutation\\' . $type;
+ // I know, wtf?!
$mutations = array_values(array_values(array_values($this->getMutations())));
foreach ($mutations as $mutation) {
if ($mutation instanceof $typeClass) {
@@ -31,7 +31,7 @@ class Text implements RendererInterface
*/
public function renderOpening()
{
- $out = 'Mutagenesis 0.5: Mutation Testing for PHP'
+ $out = 'Mutagenesis: Mutation Testing for PHP'
. PHP_EOL . PHP_EOL;
return $out;
}
@@ -143,7 +143,7 @@ public function renderReport($total, $killed, $escaped, array $mutations, array
. PHP_EOL . $this->_indentTestOutput($mutant[1]) . PHP_EOL . PHP_EOL;
$i++;
}
- $out .= "Check above these capture details to see if any mutants"
+ $out .= "Check above for the capture details to see if any mutants"
. ' escaped.';
}
return $out;
@@ -69,8 +69,8 @@ public function execute()
* to dynamically alter included (in-memory) classes on the fly.
*/
- foreach ($mutables as $mutable) {
- $mutations = $mutable->getMutations();
+ foreach ($mutables as $i=>$mutable) {
+ $mutations = $mutable->generate()->getMutations();
foreach ($mutations as $mutation) {
$output = \Mutagenesis\Utility\Process::run(
$job->generate($mutation), $this->getTimeout()
@@ -97,6 +97,8 @@ public function execute()
}
echo $renderer->renderProgressMark($result);
}
+ $mutable->cleanup();
+ unset($this->_mutables[$i]);
}
/**
@@ -40,7 +40,7 @@ public function setUp()
public function testRendersOpeningMessage()
{
$this->assertEquals(
- 'Mutagenesis 0.5: Mutation Testing for PHP' . PHP_EOL . PHP_EOL,
+ 'Mutagenesis: Mutation Testing for PHP' . PHP_EOL . PHP_EOL,
$this->_renderer->renderOpening()
);
}

0 comments on commit 1702907

Please sign in to comment.