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