public static IAssertionResult <T, TSource> Assertion <T, TSource>(IValueProvider <T, TSource> valueProvider, IAssertionConfiguration <T> configuration) { var stopwatch = Stopwatch.StartNew(); while (true) { try { var actualValue = valueProvider.GetValue(); configuration.Assertion.Assert(actualValue); return(new AssertionResult <T, TSource>(valueProvider)); } catch (Exception exception) { var isAssertionException = AssertionExceptionHelper.IsAssertionException(exception); if (configuration.Timeout > 0 && configuration.Timeout > stopwatch.ElapsedMilliseconds) { if (isAssertionException || configuration.ExceptionMatcher.RetryOnException(exception)) { Thread.Sleep(configuration.Interval); continue; } } if (!isAssertionException) { throw; } var message = $"[timeout: {configuration.Timeout}]\n{valueProvider.GetMessage()}\n\n{exception.Message}"; throw AssertionExceptionHelper.CreateException(message); } } }
public static T[] All <T, TSource>(this IValueProvider <T[], TSource> valueProvider, Action <T> assertion, IAssertionConfiguration configuration) { return(valueProvider.Filtered(assertion).Assert(x => AssertLengthEqual(x, valueProvider.LastValue().Length), configuration).GetAsserted()); }
public static T Last <T, TSource>(this IValueProvider <T[], TSource> valueProvider, Action <T> assertion, IAssertionConfiguration configuration) { return(valueProvider.Filtered(assertion).Last(configuration)); }
public static T[] Any <T, TSource>(this IValueProvider <T[], TSource> valueProvider, IAssertionConfiguration configuration) { return(valueProvider.Assert(x => AssertLengthGreater(x, 0), configuration).GetAsserted()); }
public static T Last <T, TSource>(this IValueProvider <T[], TSource> valueProvider, IAssertionConfiguration configuration) { return(valueProvider.Any(configuration).Last()); }
public static T Single <T, TSource>(this IValueProvider <T[], TSource> valueProvider, IAssertionConfiguration configuration) { return(valueProvider.Assert(x => AssertLengthEqual(x, 1), configuration).GetAsserted().Single()); }
public static T ElementAt <T, TSource>(this IValueProvider <T[], TSource> valueProvider, int index, IAssertionConfiguration configuration) { return(valueProvider.Assert(x => AssertLengthGreaterOrEqual(x, index + 1), configuration).GetAsserted()[index]); }
public static IAssertionResult <T, TSource> Assert <T, TSource>(this IValueProvider <T, TSource> valueProvider, IAssertionConfiguration <T> configuration) { return(Wait.Assertion(valueProvider, configuration)); }
public static IAssertionResult <T, TSource> Assert <T, TSource>(this IValueProvider <T, TSource> valueProvider, Action <T> assertion, IAssertionConfiguration configuration) { return(valueProvider.Assert(Assertion.FromDelegate(assertion), configuration)); }
public static IAssertionResult <T, TSource> Assert <T, TSource>(this IValueProvider <T, TSource> valueProvider, IAssertion <T> assertion, IAssertionConfiguration configuration) { return(Wait.Assertion(valueProvider, new AssertionConfiguration <T> { Timeout = configuration.Timeout, Interval = configuration.Interval, ExceptionMatcher = configuration.ExceptionMatcher, Assertion = assertion })); }