Example #1
0
 public QAcidState(QAcidRunner<Unit> runner)
 {
     Runner = runner;
     Runs = new List<int>();
     Memory = new Memory(this);
     TempMemory = new TempMemory();
     Shrunk = new Memory(this);
 }
Example #2
0
        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;
        }
Example #3
0
        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;
        }
Example #4
0
        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;
        }