public async Task Exec_FuncTaskCalls() { var must = new Must(0, source.Token); var res = await must.Exec(async() => { await Task.Delay(1); return(Value); }, 10); Assert.AreEqual(res, Value); }
public async Task ExecAttempts_ActionOnError() { var log = new List <string>(); int sleepCount = 2; var must = new Must(0, source.Token); must.OnError += e => { log.Add(e.Message); }; await must.Exec(token => { if (step++ < sleepCount) { throw new Exception(step.ToString()); } }, 1); for (int i = 0; i < sleepCount; i++) { Assert.AreEqual(log[i], (i + 1).ToString()); } }
public void Exec_FuncToken() { Assert.Throws <TaskCanceledException>(() => { var must = new Must(0, source.Token); var t = must.Exec(token => { throw new Exception(); return(Value); }); Task.Run(() => source.Cancel()); try { t.Wait(); } catch (AggregateException e) { throw (TaskCanceledException)e.InnerException; } }); }
public async Task Exec_Action() { var a = new MustDo.Must(100); var watch = new Stopwatch(); int sleep = 60; int sleepCount = 5; var must = new Must(sleep); await must.Exec(token => { if (!watch.IsRunning) { watch.Start(); } if (step++ < sleepCount) { throw new Exception(); } watch.Stop(); }); Console.WriteLine(); Assert.IsTrue(watch.ElapsedMilliseconds >= sleep * sleepCount); }
public async Task Exec_Func() { var watch = new Stopwatch(); int sleep = 60; int sleepCount = 5; int value = 1; var must = new Must(sleep); int res = await must.Exec(token => { if (!watch.IsRunning) { watch.Start(); } if (step++ < sleepCount) { throw new Exception(); } watch.Stop(); return(value); }, sleep); Assert.AreEqual(value, res); Assert.IsTrue(watch.ElapsedMilliseconds >= sleep * sleepCount); }