@@ -24,7 +24,36 @@ public partial class DispatcherQueueTimerExtensionTests : VisualUITestBase
2424{
2525 [ TestCategory ( "DispatcherQueueTimerExtensions" ) ]
2626 [ UIThreadTestMethod ]
27- public async Task DispatcherQueueTimer_Debounce_Interrupt ( )
27+ public async Task DispatcherQueueTimer_Debounce_Trailing ( )
28+ {
29+ var debounceTimer = DispatcherQueue . GetForCurrentThread ( ) . CreateTimer ( ) ;
30+
31+ var triggeredCount = 0 ;
32+ string ? triggeredValue = null ;
33+
34+ var value = "He" ;
35+ debounceTimer . Debounce (
36+ ( ) =>
37+ {
38+ triggeredCount ++ ;
39+ triggeredValue = value ;
40+ } ,
41+ TimeSpan . FromMilliseconds ( 60 ) ) ;
42+
43+ Assert . AreEqual ( true , debounceTimer . IsRunning , "Expected time to be running." ) ;
44+ Assert . AreEqual ( 0 , triggeredCount , "Function shouldn't have run yet." ) ;
45+ Assert . IsNull ( triggeredValue , "Function shouldn't have run yet." ) ;
46+
47+ await Task . Delay ( TimeSpan . FromMilliseconds ( 80 ) ) ;
48+
49+ Assert . AreEqual ( false , debounceTimer . IsRunning , "Expected to stop the timer." ) ;
50+ Assert . AreEqual ( value , triggeredValue , "Expected result to be set." ) ;
51+ Assert . AreEqual ( 1 , triggeredCount , "Expected to run once." ) ;
52+ }
53+
54+ [ TestCategory ( "DispatcherQueueTimerExtensions" ) ]
55+ [ UIThreadTestMethod ]
56+ public async Task DispatcherQueueTimer_Debounce_Trailing_Interrupt ( )
2857 {
2958 var debounceTimer = DispatcherQueue . GetForCurrentThread ( ) . CreateTimer ( ) ;
3059
@@ -62,6 +91,29 @@ public async Task DispatcherQueueTimer_Debounce_Interrupt()
6291 Assert . AreEqual ( 1 , triggeredCount , "Expected to postpone execution." ) ;
6392 }
6493
94+ [ TestCategory ( "DispatcherQueueTimerExtensions" ) ]
95+ [ UIThreadTestMethod ]
96+ public async Task DispatcherQueueTimer_Debounce_Immediate ( )
97+ {
98+ var debounceTimer = DispatcherQueue . GetForCurrentThread ( ) . CreateTimer ( ) ;
99+
100+ var triggeredCount = 0 ;
101+ string ? triggeredValue = null ;
102+
103+ var value = "He" ;
104+ debounceTimer . Debounce (
105+ ( ) =>
106+ {
107+ triggeredCount ++ ;
108+ triggeredValue = value ;
109+ } ,
110+ TimeSpan . FromMilliseconds ( 60 ) , true ) ;
111+
112+ Assert . AreEqual ( true , debounceTimer . IsRunning , "Expected time to be running." ) ;
113+ Assert . AreEqual ( 1 , triggeredCount , "Function should have run right away." ) ;
114+ Assert . AreEqual ( value , triggeredValue , "Should have expected immediate set of value" ) ;
115+ }
116+
65117 [ TestCategory ( "DispatcherQueueTimerExtensions" ) ]
66118 [ UIThreadTestMethod ]
67119 public async Task DispatcherQueueTimer_Debounce_Immediate_Interrupt ( )
0 commit comments