Skip to content

Commit 9856d37

Browse files
Add baseline single scenario tests for DispatcherQueueTimer Debounce
1 parent cd19f55 commit 9856d37

File tree

1 file changed

+53
-1
lines changed

1 file changed

+53
-1
lines changed

components/Extensions/tests/DispatcherQueueTimerExtensionTests.cs

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)