From a502e65c2e3a57d1f75a67fad0822d173fd78bbf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 18 Jul 2025 16:14:02 +0000 Subject: [PATCH 1/4] Initial plan From 01ca63c359b72161f4c0e7839990a35ebae281a1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 18 Jul 2025 16:44:49 +0000 Subject: [PATCH 2/4] Replace Assert.NotNull with Assert.Empty in AsyncEnumerable SequenceTests Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> --- .../System.Linq.AsyncEnumerable/tests/SequenceTests.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libraries/System.Linq.AsyncEnumerable/tests/SequenceTests.cs b/src/libraries/System.Linq.AsyncEnumerable/tests/SequenceTests.cs index 00ef5f25452ca8..f4d2658d28aef8 100644 --- a/src/libraries/System.Linq.AsyncEnumerable/tests/SequenceTests.cs +++ b/src/libraries/System.Linq.AsyncEnumerable/tests/SequenceTests.cs @@ -53,7 +53,7 @@ static void ValidateSigned() where T : INumber for (int i = 1; i < 3; i++) { - Assert.NotNull(AsyncEnumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(122), T.CreateTruncating(-i))); + Assert.Empty(AsyncEnumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(122), T.CreateTruncating(-i))); } ValidateThrows(T.CreateTruncating(123), T.CreateTruncating(124), T.CreateTruncating(-2)); @@ -63,12 +63,12 @@ static void ValidateUnsigned() where T : INumber { for (int i = 0; i < 3; i++) { - Assert.NotNull(AsyncEnumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(123), T.CreateTruncating(i))); + Assert.Empty(AsyncEnumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(123), T.CreateTruncating(i))); } for (int i = 1; i < 3; i++) { - Assert.NotNull(AsyncEnumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(124), T.CreateTruncating(i))); + Assert.Empty(AsyncEnumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(124), T.CreateTruncating(i))); } ValidateThrows(T.CreateTruncating(123), T.CreateTruncating(122), T.CreateTruncating(2)); From 5ed6fdd222e40ffa072d017b85548204a0ccfd12 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 18 Jul 2025 19:03:30 +0000 Subject: [PATCH 3/4] Replace Assert.NotNull with appropriate assertions for AsyncEnumerable SequenceTests Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> --- .../tests/SequenceTests.cs | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/libraries/System.Linq.AsyncEnumerable/tests/SequenceTests.cs b/src/libraries/System.Linq.AsyncEnumerable/tests/SequenceTests.cs index f4d2658d28aef8..7f7c1dcd05e82a 100644 --- a/src/libraries/System.Linq.AsyncEnumerable/tests/SequenceTests.cs +++ b/src/libraries/System.Linq.AsyncEnumerable/tests/SequenceTests.cs @@ -51,25 +51,28 @@ static void ValidateSigned() where T : INumber { ValidateUnsigned(); - for (int i = 1; i < 3; i++) - { - Assert.Empty(AsyncEnumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(122), T.CreateTruncating(-i))); - } + // Test negative steps from 123 to 122 + // step=-1: should give [123, 122] (2 elements) + // step=-2: should give [123] (1 element, step too large) + Assert.Equal(2, AsyncEnumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(122), T.CreateTruncating(-1)).CountAsync().Result); + Assert.Single(AsyncEnumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(122), T.CreateTruncating(-2))); ValidateThrows(T.CreateTruncating(123), T.CreateTruncating(124), T.CreateTruncating(-2)); } static void ValidateUnsigned() where T : INumber { + // When start == end, all steps should return single element [123] for (int i = 0; i < 3; i++) { - Assert.Empty(AsyncEnumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(123), T.CreateTruncating(i))); + Assert.Single(AsyncEnumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(123), T.CreateTruncating(i))); } - for (int i = 1; i < 3; i++) - { - Assert.Empty(AsyncEnumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(124), T.CreateTruncating(i))); - } + // Test positive steps from 123 to 124 + // step=1: should give [123, 124] (2 elements) + // step=2: should give [123] (1 element, step too large) + Assert.Equal(2, AsyncEnumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(124), T.CreateTruncating(1)).CountAsync().Result); + Assert.Single(AsyncEnumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(124), T.CreateTruncating(2))); ValidateThrows(T.CreateTruncating(123), T.CreateTruncating(122), T.CreateTruncating(2)); } From 1496c275f6cfde3cca2fb89524a8b96e404a3240 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 19 Jul 2025 01:23:16 +0000 Subject: [PATCH 4/4] Fix Assert.NotNull issues in System.Linq SequenceTests Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> --- .../System.Linq/tests/SequenceTests.cs | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/libraries/System.Linq/tests/SequenceTests.cs b/src/libraries/System.Linq/tests/SequenceTests.cs index 18a8fbd880749e..7c39f7437bd69c 100644 --- a/src/libraries/System.Linq/tests/SequenceTests.cs +++ b/src/libraries/System.Linq/tests/SequenceTests.cs @@ -50,25 +50,28 @@ static void ValidateSigned() where T : INumber { ValidateUnsigned(); - for (int i = 1; i < 3; i++) - { - Assert.NotNull(Enumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(122), T.CreateTruncating(-i))); - } + // Test negative steps from 123 to 122 + // step=-1: should give [123, 122] (2 elements) + // step=-2: should give [123] (1 element, step too large) + Assert.Equal(2, Enumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(122), T.CreateTruncating(-1)).Count()); + Assert.Single(Enumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(122), T.CreateTruncating(-2))); ValidateThrows(T.CreateTruncating(123), T.CreateTruncating(124), T.CreateTruncating(-2)); } static void ValidateUnsigned() where T : INumber { + // When start == end, all steps should return single element [123] for (int i = 0; i < 3; i++) { - Assert.NotNull(Enumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(123), T.CreateTruncating(i))); + Assert.Single(Enumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(123), T.CreateTruncating(i))); } - for (int i = 1; i < 3; i++) - { - Assert.NotNull(Enumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(124), T.CreateTruncating(i))); - } + // Test positive steps from 123 to 124 + // step=1: should give [123, 124] (2 elements) + // step=2: should give [123] (1 element, step too large) + Assert.Equal(2, Enumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(124), T.CreateTruncating(1)).Count()); + Assert.Single(Enumerable.Sequence(T.CreateTruncating(123), T.CreateTruncating(124), T.CreateTruncating(2))); ValidateThrows(T.CreateTruncating(123), T.CreateTruncating(122), T.CreateTruncating(2)); }