1 package jester; 2 3 public class RealClassTestTester implements ClassTestTester { 4 private MutationsList myMutationsList; 5 private TestRunner myTestRunner; 6 7 public RealClassTestTester(TestRunner testRunner, MutationsList aMutationsList) { 8 super(); 9 myTestRunner = testRunner; 10 myMutationsList = aMutationsList; 11 } 12 13 private void test(CodeMangler codeMangler, ClassSourceCodeChanger sourceCodeSystem) throws SourceChangeException { 14 boolean madeChange = codeMangler.makeChangeToClass(); 15 while (madeChange) { 16 boolean testsDidNotCatchChange = myTestRunner.testsRunWithoutFailures(); 17 if (testsDidNotCatchChange) { 18 sourceCodeSystem.lastChangeDidNotCauseTestsToFail(); 19 } else { 20 sourceCodeSystem.lastChangeCausedTestsToFail(); 21 } 22 madeChange = codeMangler.makeChangeToClass(); 23 } 24 } 25 26 public void testUsing(final ClassSourceCodeChanger sourceCodeSystem) throws SourceChangeException { 27 sourceCodeSystem.startJesting(); 28 29 CodeMangler aSimpleIntCodeMangler = new SimpleIntCodeMangler(sourceCodeSystem); 30 test(aSimpleIntCodeMangler, sourceCodeSystem); 31 32 MutationMaker aMutationMaker = new MutationMaker() { 33 public void mutate(String changeFrom1, String changeTo1) throws SourceChangeException { 34 CodeMangler aSimpleCodeMangler = new TwoStringSwappingCodeMangler(sourceCodeSystem, changeFrom1, changeTo1); 35 test(aSimpleCodeMangler, sourceCodeSystem); 36 } 37 }; 38 39 myMutationsList.visit(aMutationMaker); 40 41 sourceCodeSystem.finishJesting(); 42 } 43 } | Popular Tags |