diff --git a/TUnit.Assertions.Tests/CollectionAssertionTests.cs b/TUnit.Assertions.Tests/CollectionAssertionTests.cs index ffb9a9b92d..e79b897477 100644 --- a/TUnit.Assertions.Tests/CollectionAssertionTests.cs +++ b/TUnit.Assertions.Tests/CollectionAssertionTests.cs @@ -270,4 +270,40 @@ await Assert.That(names) .And.Contains("Bob") .And.DoesNotContain("Dave"); } + + [Test] + public async Task All_Predicate_Failure_Message_Contains_Index_And_Value() + { + var items = new[] { 2, 4, -5, 8 }; + + await Assert.That(async () => + await Assert.That(items).All(x => x > 0) + ).Throws() + .WithMessageContaining("index 2") + .And.WithMessageContaining("[-5]"); + } + + [Test] + public async Task All_Predicate_Failure_Message_Contains_String_Value() + { + var names = new[] { "Alice", "Bob", "" }; + + await Assert.That(async () => + await Assert.That(names).All(x => !string.IsNullOrEmpty(x)) + ).Throws() + .WithMessageContaining("index 2") + .And.WithMessageContaining("[]"); + } + + [Test] + public async Task All_Predicate_Failure_Message_Contains_First_Failing_Item() + { + var items = new[] { 1, 2, 3, -1, -2, -3 }; + + await Assert.That(async () => + await Assert.That(items).All(x => x > 0) + ).Throws() + .WithMessageContaining("index 3") + .And.WithMessageContaining("[-1]"); + } } diff --git a/TUnit.Assertions/Conditions/CollectionAssertions.cs b/TUnit.Assertions/Conditions/CollectionAssertions.cs index bf9973f7c4..206630a348 100644 --- a/TUnit.Assertions/Conditions/CollectionAssertions.cs +++ b/TUnit.Assertions/Conditions/CollectionAssertions.cs @@ -423,7 +423,7 @@ protected override Task CheckAsync(EvaluationMetadata