@@ -19,7 +19,7 @@ public async Task ExecuteTasksWithCancellationAsync_ShouldCancelAllTasks_WhenCan
1919 var t = TaskExtensions . WhenAllWithCancellationAsync ( new [ ] { task1 , task2 } , cancellationTokenSource ) ;
2020
2121 // Cancel after a short delay
22- cancellationTokenSource . CancelAfter ( 100 ) ;
22+ cancellationTokenSource . CancelAfter ( 10 ) ;
2323
2424 // Assert
2525 await FluentActions
@@ -38,7 +38,7 @@ public async Task ExecuteTasksWithCancellationAsync_ShouldCancelAllOtherTasks_Wh
3838 var cancellationTokenSource = new CancellationTokenSource ( ) ;
3939 var cancellationToken = cancellationTokenSource . Token ;
4040
41- var task1 = CreateFaultedTask ( "Task 1 failed" , 500 ) ;
41+ var task1 = CreateFaultedTask ( "Task 1 failed" , 50 ) ;
4242 var task2 = CreateLongRunningTask ( cancellationToken ) ;
4343
4444 // Act
@@ -92,8 +92,8 @@ public async Task ExecuteTasksWithCancellationAsync_ShouldCancelAllOtherTasks_Wh
9292 var cancellationTokenSource = new CancellationTokenSource ( ) ;
9393 var cancellationToken = cancellationTokenSource . Token ;
9494
95- var task1 = CreateFaultedTask ( "Task 1 failed" , 500 ) ;
96- var task2 = CreateFaultedTask ( "Task 2 failed" , 700 ) ;
95+ var task1 = CreateFaultedTask ( "Task 1 failed" , 50 ) ;
96+ var task2 = CreateFaultedTask ( "Task 2 failed" , 70 ) ;
9797 var task3 = CreateLongRunningTask ( cancellationToken ) ;
9898
9999 // Act
@@ -141,7 +141,7 @@ public async Task ExecuteTasksWithCancellationAsync_ShouldCancelTasks_WhenExtern
141141 var cancellationTokenSource = new CancellationTokenSource ( ) ;
142142 var cancellationToken = cancellationTokenSource . Token ;
143143
144- var task1 = CreateFaultedTask ( "Task 1 failed" , 500 ) ;
144+ var task1 = CreateFaultedTask ( "Task 1 failed" , 50 ) ;
145145 var task2 = CreateLongRunningTask ( cancellationToken ) ;
146146
147147 // Act: Trigger external cancellation after 500ms
@@ -155,8 +155,32 @@ public async Task ExecuteTasksWithCancellationAsync_ShouldCancelTasks_WhenExtern
155155 cancellationToken . IsCancellationRequested . Should ( ) . BeTrue ( ) ; // Ensure cancellation was requested
156156 }
157157
158+ [ Fact ]
159+ public async Task ExecuteTasksWithCancellationAsync_ShouldThrowAggregateException_WhenMultipleTasksFault ( )
160+ {
161+ // Arrange
162+ var cancellationTokenSource = new CancellationTokenSource ( ) ;
163+ var cancellationToken = cancellationTokenSource . Token ;
164+
165+ // Create tasks: Two faulted tasks and one long-running task
166+ var task1 = CreateFaultedTask ( "Task 1 failed" , 0 ) ;
167+ var task2 = CreateFaultedTask ( "Task 2 failed" , 0 ) ;
168+ var task3 = CreateLongRunningTask ( cancellationToken ) ; // Long-running task
158169
170+ // Act
171+ Func < Task > act = async ( ) => await TaskExtensions . WhenAllWithCancellationAsync ( [ task1 , task2 , task3 ] , cancellationTokenSource ) ;
172+
173+ // Assert: Expect an AggregateException with both task failures
174+ var exception = await act . Should ( ) . ThrowAsync < AggregateException > ( ) ;
175+ exception . Which . InnerExceptions . Should ( ) . Contain ( e => e . Message == "Task 1 failed" ) ;
176+ exception . Which . InnerExceptions . Should ( ) . Contain ( e => e . Message == "Task 2 failed" ) ;
177+
178+ // Verify that the long-running task was canceled
179+ task3 . Status . Should ( ) . Be ( TaskStatus . Canceled ) ;
180+ cancellationTokenSource . IsCancellationRequested . Should ( ) . BeTrue ( ) ;
181+ }
159182
183+
160184 private static Task CreateLongRunningTask ( CancellationToken cancellationToken )
161185 {
162186 return Task . Run ( async ( ) =>
@@ -173,7 +197,7 @@ private static Task CreateLongRunningTask(CancellationToken cancellationToken)
173197 } , cancellationToken ) ;
174198 }
175199
176- private static Task CreateFaultedTask ( string exceptionMessage , int delayMs = 500 )
200+ private static Task CreateFaultedTask ( string exceptionMessage , int delayMs )
177201 {
178202 return Task . Run ( async ( ) =>
179203 {
0 commit comments