コード例 #1
0
ファイル: QAcidState.cs プロジェクト: kilfour/QuickAcid
 public QAcidState(QAcidRunner<Unit> runner)
 {
     Runner = runner;
     Runs = new List<int>();
     Memory = new Memory(this);
     TempMemory = new TempMemory();
     Shrunk = new Memory(this);
 }
コード例 #2
0
ファイル: QAcidState.cs プロジェクト: NickPeelman/QuickAcid
 public QAcidState(QAcidRunner <Unit> runner)
 {
     Runner     = runner;
     Runs       = new List <int>();
     Memory     = new Memory(this);
     TempMemory = new TempMemory();
     Shrunk     = new Memory(this);
 }
コード例 #3
0
 public static void Verify(this QAcidRunner <Unit> runner, int loops, int actions)
 {
     for (int i = 0; i < loops; i++)
     {
         var state = new QAcidState(runner);
         state.Run(actions);
         if (state.Failed)
         {
             break;
         }
     }
 }
コード例 #4
0
 public static QAcidRunner <T> If <T>(this string key, Func <bool> predicate, QAcidRunner <T> runner)
 {
     return
         (s =>
     {
         if (predicate())
         {
             return runner(s);
         }
         return new QAcidResult <T>(s, default(T));
     });
 }
コード例 #5
0
 public static QAcidRunner <T> DontReport <T>(this QAcidRunner <T> runner)
 {
     return
         (s =>
     {
         if (s.Reporting)
         {
             s.DontReport = true;
             var result = runner(s);
             s.DontReport = false;
             return result;
         }
         return runner(s);
     });
 }
コード例 #6
0
 public static QAcidRunner <T> Report <T>(this QAcidRunner <T> runner, Func <T, string> toString)
 {
     return
         (s =>
     {
         if (s.Reporting)
         {
             s.DontReport = true;
             var result = runner(s);
             s.DontReport = false;
             s.LogReport(string.Format("'{0}' : {1}.", result.Key, toString(result.Value)));
             return result;
         }
         return runner(s);
     });
 }
コード例 #7
0
        public static QAcidRunner <TValueThree> SelectMany <TValueOne, TValueTwo, TValueThree>(
            this QAcidRunner <TValueOne> runner,
            Func <TValueOne, QAcidRunner <TValueTwo> > selector,
            Func <TValueOne, TValueTwo, TValueThree> projector)
        {
            if (runner == null)
            {
                throw new ArgumentNullException("runner");
            }
            if (selector == null)
            {
                throw new ArgumentNullException("selector");
            }
            if (projector == null)
            {
                throw new ArgumentNullException("projector");
            }

            return(runner.SelectMany(x => selector(x).Select(y => projector(x, y))));
        }
コード例 #8
0
        public static QAcidRunner <TValueTwo> Select <TValueOne, TValueTwo>(
            this QAcidRunner <TValueOne> runner,
            Func <TValueOne, TValueTwo> selector)
        {
            if (runner == null)
            {
                throw new ArgumentNullException("runner");
            }
            if (selector == null)
            {
                throw new ArgumentNullException("selector");
            }

            return
                (s =>
            {
                if (s.Failed)
                {
                    return new QAcidResult <TValueTwo>(s, default(TValueTwo));
                }
                return new QAcidResult <TValueTwo>(s, selector(runner(s).Value));
            });
        }