Example #1
0
        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);
                }
            }
        }
Example #2
0
 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());
 }
Example #3
0
 public static T Last <T, TSource>(this IValueProvider <T[], TSource> valueProvider, Action <T> assertion, IAssertionConfiguration configuration)
 {
     return(valueProvider.Filtered(assertion).Last(configuration));
 }
Example #4
0
 public static T[] Any <T, TSource>(this IValueProvider <T[], TSource> valueProvider, IAssertionConfiguration configuration)
 {
     return(valueProvider.Assert(x => AssertLengthGreater(x, 0), configuration).GetAsserted());
 }
Example #5
0
 public static T Last <T, TSource>(this IValueProvider <T[], TSource> valueProvider, IAssertionConfiguration configuration)
 {
     return(valueProvider.Any(configuration).Last());
 }
Example #6
0
 public static T Single <T, TSource>(this IValueProvider <T[], TSource> valueProvider, IAssertionConfiguration configuration)
 {
     return(valueProvider.Assert(x => AssertLengthEqual(x, 1), configuration).GetAsserted().Single());
 }
Example #7
0
 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]);
 }
Example #8
0
 public static IAssertionResult <T, TSource> Assert <T, TSource>(this IValueProvider <T, TSource> valueProvider, IAssertionConfiguration <T> configuration)
 {
     return(Wait.Assertion(valueProvider, configuration));
 }
Example #9
0
 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));
 }
Example #10
0
 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
     }));
 }