// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT License. // See the LICENSE file in the project root for more information. using System; using System.Linq; using Xunit; namespace Tests { public class Retry : Tests { [Fact] public void Retry_Arguments() { AssertThrows(() => EnumerableEx.Retry(null)); AssertThrows(() => EnumerableEx.Retry(null, 5)); AssertThrows(() => EnumerableEx.Retry([1], -1)); } [Fact] public void Retry1() { var xs = Enumerable.Range(0, 10); var res = xs.Retry(); Assert.True(Enumerable.SequenceEqual(res, xs)); } [Fact] public void Retry2() { var xs = Enumerable.Range(0, 10); var res = xs.Retry(2); Assert.True(Enumerable.SequenceEqual(res, xs)); } [Fact] public void Retry3() { var ex = new MyException(); var xs = Enumerable.Range(0, 2).Concat(EnumerableEx.Throw(ex)); var res = xs.Retry(2); var e = res.GetEnumerator(); HasNext(e, 0); HasNext(e, 1); HasNext(e, 0); HasNext(e, 1); AssertThrows(() => e.MoveNext(), ex_ => ex == ex_); } private sealed class MyException : Exception { } } }