private void CompareAllRemovals(Program program) { var oneAtATimeProg = SimpleCloner.CloneProgram(program); var simulProg = SimpleCloner.CloneProgram(program); var oneAtATime = new DareController(oneAtATimeProg, new OneAtATimeRemover(oneAtATimeProg)); var simultaneous = new DareController(simulProg, new SimultaneousMethodRemover(simulProg)); var allType = new DareController(SimpleCloner.CloneProgram(program)); var allRemovableTypeResults = allType.FastRemoveAllRemovables(); var asserts = oneAtATime.FindRemovableAsserts(); var invariants = oneAtATime.FindRemovableInvariants(); var decreases = oneAtATime.FindRemovableDecreases(); var lemmaCalls = oneAtATime.FindRemovableLemmaCalls(); var simplifiedAsserts = oneAtATime.GetSimplifiedAsserts(); var simplifiedInvariants = oneAtATime.GetSimplifiedInvariants(); var simAsserts = simultaneous.FindRemovableAsserts(); var simInvariants = simultaneous.FindRemovableInvariants(); var simDecreases = simultaneous.FindRemovableDecreases(); var simLemmaCalls = simultaneous.FindRemovableLemmaCalls(); var simSimplifiedAsserts = simultaneous.GetSimplifiedAsserts(); var simSimplifiedInvariants = simultaneous.GetSimplifiedInvariants(); var oaatRemovedCalcs = oneAtATime.FindRemovableCalcs(); var simulRemovedCalcs = simultaneous.FindRemovableCalcs(); Assert.True(oneAtATime.IsProgramValid()); Assert.True(simultaneous.IsProgramValid()); Assert.True(allType.IsProgramValid()); Assert.AreEqual(asserts.Count, simAsserts.Count); Assert.AreEqual(asserts.Count, allRemovableTypeResults.RemovableAsserts.Count); Assert.AreEqual(invariants.Count, simInvariants.Count); Assert.AreEqual(invariants.Count, allRemovableTypeResults.RemovableInvariants.Count); Assert.AreEqual(decreases.Count, simDecreases.Count); Assert.AreEqual(decreases.Count, allRemovableTypeResults.RemovableDecreases.Count); Assert.AreEqual(lemmaCalls.Count, simLemmaCalls.Count); Assert.AreEqual(lemmaCalls.Count, allRemovableTypeResults.RemovableLemmaCalls.Count); Assert.AreEqual(simplifiedAsserts.Count, simSimplifiedAsserts.Count); Assert.AreEqual(simplifiedAsserts.Count, allRemovableTypeResults.SimplifiedAsserts.Count); Assert.AreEqual(simplifiedInvariants.Count, simSimplifiedInvariants.Count); Assert.AreEqual(simplifiedInvariants.Count, allRemovableTypeResults.SimplifiedInvariants.Count); var allTypeCalcs = allRemovableTypeResults.SimplifiedCalcs; Assert.AreEqual(oaatRemovedCalcs.Item1.Count, simulRemovedCalcs.Item1.Count); Assert.AreEqual(oaatRemovedCalcs.Item1.Count, allTypeCalcs.Item1.Count); Assert.AreEqual(oaatRemovedCalcs.Item2.Count, simulRemovedCalcs.Item2.Count); Assert.AreEqual(oaatRemovedCalcs.Item2.Count, allTypeCalcs.Item2.Count); Assert.AreEqual(oaatRemovedCalcs.Item3.Count, simulRemovedCalcs.Item3.Count); Assert.AreEqual(oaatRemovedCalcs.Item3.Count, allTypeCalcs.Item3.Count); Assert.AreEqual(oaatRemovedCalcs.Item4.Count, simulRemovedCalcs.Item4.Count); Assert.AreEqual(oaatRemovedCalcs.Item4.Count, allRemovableTypeResults.RemovableCalcs.Count); }
private long GetOaatTime() { var ooatProgram = SimpleCloner.CloneProgram(_program); var dareController = new DareController(ooatProgram, new OneAtATimeRemover(ooatProgram)); var stopwatch = new Stopwatch(); stopwatch.Start(); dareController.FindRemovableAsserts(); dareController.FindRemovableInvariants(); dareController.FindRemovableDecreases(); dareController.FindRemovableLemmaCalls(); dareController.GetSimplifiedAsserts(); dareController.GetSimplifiedInvariants(); dareController.FindRemovableCalcs(); stopwatch.Stop(); return(stopwatch.ElapsedMilliseconds); }