public QAcidState(QAcidRunner<Unit> runner) { Runner = runner; Runs = new List<int>(); Memory = new Memory(this); TempMemory = new TempMemory(); Shrunk = new Memory(this); }
private void ShrinkInputs() { Verifying = false; Shrinking = true; Reporting = false; Failed = false; TempMemory = new TempMemory(); var failingSpec = FailingSpec; var exception = Exception; foreach (var run in Runs.ToList()) { RunNumber = run; Runner(this); } Failed = true; FailingSpec = failingSpec; Exception = exception; }
private void ShrinkActions() { Verifying = true; Shrinking = false; Reporting = false; BreakRun = false; Failed = false; var failingSpec = FailingSpec; var exception = Exception; var max = Runs.Max(); var current = 0; while (current <= max) { Failed = false; TempMemory = new TempMemory(); FailingSpec = failingSpec; Exception = exception; foreach (var run in Runs.ToList()) { RunNumber = run; if (run != current) Runner(this); if (BreakRun) break; } if (Failed && !BreakRun) { Runs.Remove(current); } current++; } Failed = true; FailingSpec = failingSpec; Exception = exception; }
public bool ShrinkRun(object key, object value) { Verifying = true; Shrinking = false; Reporting = false; var tempMemory = TempMemory; Failed = false; TempMemory = new TempMemory(); var failingSpec = FailingSpec; var exception = Exception; var runNumber = RunNumber; var oldVal = Memory.Get<object>(key); Memory.Set(key, value); foreach (var run in Runs) { RunNumber = run; Runner(this); } var failed = Failed; RunNumber = runNumber; Failed = false; FailingSpec = failingSpec; Exception = exception; Verifying = false; Shrinking = true; Memory.Set(key, oldVal); TempMemory = tempMemory; return failed; }