diff --git a/src/xunit.v3.assert.tests/Asserts/CollectionAssertsTests.cs b/src/xunit.v3.assert.tests/Asserts/CollectionAssertsTests.cs index 8c0b21826..1359b145e 100644 --- a/src/xunit.v3.assert.tests/Asserts/CollectionAssertsTests.cs +++ b/src/xunit.v3.assert.tests/Asserts/CollectionAssertsTests.cs @@ -926,6 +926,14 @@ public static void Equivalence() Assert.Equal(expected, actual); } + + [Fact] + public static void EnumeratesOnlyOnce() + { + var expected = new[] { 1, 2, 3, 4, 5 }; + var actual = new RunOnceEnumerable(expected); + Assert.Equal(expected, actual); + } } public class EqualDictionary @@ -1351,6 +1359,26 @@ public static void PredicateTooManyMatches() } } + sealed class RunOnceEnumerable : IEnumerable + { + private readonly IEnumerable _source; + private bool _called; + + public RunOnceEnumerable(IEnumerable source) + { + _source = source; + } + + public IEnumerator GetEnumerator() + { + Assert.False(_called, "GetEnumerator() was called more than once"); + _called = true; + return _source.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + } + sealed class SpyEnumerator : IEnumerable, IEnumerator { IEnumerator? innerEnumerator; diff --git a/src/xunit.v3.assert/Asserts b/src/xunit.v3.assert/Asserts index 08ea727ab..43e3e208a 160000 --- a/src/xunit.v3.assert/Asserts +++ b/src/xunit.v3.assert/Asserts @@ -1 +1 @@ -Subproject commit 08ea727abe286ecc3bf340959d909cba7b9b195e +Subproject commit 43e3e208a597bc1a4c77f2665f39f98e7401c157