@@ -456,7 +456,7 @@ public void DispatchingEventsWithoutAsyncWorkShouldCompleteSynchronously()
456
456
}
457
457
458
458
[ Fact ]
459
- public async Task CanDispatchEventsToTopLevelComponents ( )
459
+ public void CanDispatchEventsToTopLevelComponents ( )
460
460
{
461
461
// Arrange: Render a component with an event handler
462
462
var renderer = new TestRenderer ( ) ;
@@ -482,12 +482,42 @@ public async Task CanDispatchEventsToTopLevelComponents()
482
482
var renderTask = renderer . DispatchEventAsync ( eventHandlerId , eventArgs ) ;
483
483
Assert . True ( renderTask . IsCompletedSuccessfully ) ;
484
484
Assert . Same ( eventArgs , receivedArgs ) ;
485
+ }
486
+
487
+ [ Fact ]
488
+ public void DispatchEventHandlesSynchronousExceptionsFromEventHandlers ( )
489
+ {
490
+ // Arrange: Render a component with an event handler
491
+ var renderer = new TestRenderer {
492
+ ShouldHandleExceptions = true
493
+ } ;
494
+
495
+ var component = new EventComponent
496
+ {
497
+ OnTest = args => throw new Exception ( "Error" )
498
+ } ;
499
+ var componentId = renderer . AssignRootComponentId ( component ) ;
500
+ component . TriggerRender ( ) ;
501
+
502
+ var eventHandlerId = renderer . Batches . Single ( )
503
+ . ReferenceFrames
504
+ . First ( frame => frame . AttributeValue != null )
505
+ . AttributeEventHandlerId ;
506
+
507
+ // Assert: Event not yet fired
508
+ Assert . Empty ( renderer . HandledExceptions ) ;
509
+
510
+ // Act/Assert: Event can be fired
511
+ var eventArgs = new UIEventArgs ( ) ;
512
+ var renderTask = renderer . DispatchEventAsync ( eventHandlerId , eventArgs ) ;
513
+ Assert . True ( renderTask . IsCompletedSuccessfully ) ;
485
514
486
- await renderTask ; // Does not throw
515
+ var exception = Assert . Single ( renderer . HandledExceptions ) ;
516
+ Assert . Equal ( "Error" , exception . Message ) ;
487
517
}
488
518
489
519
[ Fact ]
490
- public async Task CanDispatchTypedEventsToTopLevelComponents ( )
520
+ public void CanDispatchTypedEventsToTopLevelComponents ( )
491
521
{
492
522
// Arrange: Render a component with an event handler
493
523
var renderer = new TestRenderer ( ) ;
@@ -513,12 +543,10 @@ public async Task CanDispatchTypedEventsToTopLevelComponents()
513
543
var renderTask = renderer . DispatchEventAsync ( eventHandlerId , eventArgs ) ;
514
544
Assert . True ( renderTask . IsCompletedSuccessfully ) ;
515
545
Assert . Same ( eventArgs , receivedArgs ) ;
516
-
517
- await renderTask ; // does not throw
518
546
}
519
547
520
548
[ Fact ]
521
- public async Task CanDispatchActionEventsToTopLevelComponents ( )
549
+ public void CanDispatchActionEventsToTopLevelComponents ( )
522
550
{
523
551
// Arrange: Render a component with an event handler
524
552
var renderer = new TestRenderer ( ) ;
@@ -544,12 +572,10 @@ public async Task CanDispatchActionEventsToTopLevelComponents()
544
572
var renderTask = renderer . DispatchEventAsync ( eventHandlerId , eventArgs ) ;
545
573
Assert . True ( renderTask . IsCompletedSuccessfully ) ;
546
574
Assert . NotNull ( receivedArgs ) ;
547
-
548
- await renderTask ; // does not throw
549
575
}
550
576
551
577
[ Fact ]
552
- public async Task CanDispatchEventsToNestedComponents ( )
578
+ public void CanDispatchEventsToNestedComponents ( )
553
579
{
554
580
UIEventArgs receivedArgs = null ;
555
581
@@ -586,8 +612,6 @@ public async Task CanDispatchEventsToNestedComponents()
586
612
var renderTask = renderer . DispatchEventAsync ( eventHandlerId , eventArgs ) ;
587
613
Assert . True ( renderTask . IsCompletedSuccessfully ) ;
588
614
Assert . Same ( eventArgs , receivedArgs ) ;
589
-
590
- await renderTask ; // does not throw
591
615
}
592
616
593
617
[ Fact ]
0 commit comments