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