@@ -24,7 +24,36 @@ public partial class DispatcherQueueTimerExtensionTests : VisualUITestBase
24
24
{
25
25
[ TestCategory ( "DispatcherQueueTimerExtensions" ) ]
26
26
[ 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 ( )
28
57
{
29
58
var debounceTimer = DispatcherQueue . GetForCurrentThread ( ) . CreateTimer ( ) ;
30
59
@@ -62,6 +91,29 @@ public async Task DispatcherQueueTimer_Debounce_Interrupt()
62
91
Assert . AreEqual ( 1 , triggeredCount , "Expected to postpone execution." ) ;
63
92
}
64
93
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
+
65
117
[ TestCategory ( "DispatcherQueueTimerExtensions" ) ]
66
118
[ UIThreadTestMethod ]
67
119
public async Task DispatcherQueueTimer_Debounce_Immediate_Interrupt ( )
0 commit comments