Skip to content

Commit 3daad89

Browse files
committed
Fix unit tests
1 parent 7a4eccb commit 3daad89

File tree

1 file changed

+41
-8
lines changed

1 file changed

+41
-8
lines changed

tests/CommunityToolkit.Mvvm.UnitTests/Test_ICommandAttribute.cs

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,10 @@ public async Task Test_ICommandAttribute_RelayCommand()
6262

6363
await Task.WhenAll(tasks);
6464

65+
model.Values.Clear();
6566
tasks.Clear();
6667

67-
for (int i = 10; i < 20; i++)
68+
for (int i = 0; i < 10; i++)
6869
{
6970
if (model.AddValueToListAndDelayWithDefaultConcurrencyCommand.CanExecute(i))
7071
{
@@ -79,24 +80,54 @@ public async Task Test_ICommandAttribute_RelayCommand()
7980
Assert.AreEqual(1, tasks.Count);
8081

8182
// Only the first item should have been added
82-
CollectionAssert.AreEqual(model.Values, Enumerable.Range(0, 11).ToArray());
83+
CollectionAssert.AreEqual(model.Values, new[] { 0 });
84+
85+
model.ResetTcs();
86+
model.Values.Clear();
87+
tasks.Clear();
88+
89+
for (int i = 0; i < 10; i++)
90+
{
91+
// Ignore the checks
92+
tasks.Add(model.AddValueToListAndDelayWithDefaultConcurrencyCommand.ExecuteAsync(i));
93+
}
94+
95+
model.Tcs.SetResult(null);
96+
97+
await Task.WhenAll(tasks);
98+
99+
Assert.AreEqual(10, tasks.Count);
83100

84-
for (int i = 1; i < tasks.Count; i++)
101+
CollectionAssert.AreEqual(model.Values, Enumerable.Range(0, 10).ToArray());
102+
103+
model.Values.Clear();
104+
tasks.Clear();
105+
106+
for (int i = 0; i < 10; i++)
85107
{
86-
Assert.AreSame(Task.CompletedTask, tasks[i]);
108+
if (model.AddValueToListAndDelayWithDefaultConcurrencyAsync_WithCancelCommandCommand.CanExecute(i))
109+
{
110+
tasks.Add(model.AddValueToListAndDelayWithDefaultConcurrencyAsync_WithCancelCommandCommand.ExecuteAsync(i));
111+
}
87112
}
88113

114+
Assert.AreEqual(1, tasks.Count);
115+
116+
// Same as above, only the first one is added
117+
CollectionAssert.AreEqual(model.Values, new[] { 0 });
118+
119+
model.Values.Clear();
89120
tasks.Clear();
90121

91-
for (int i = 11; i < 21; i++)
122+
for (int i = 0; i < 10; i++)
92123
{
124+
// Ignore the checks
93125
tasks.Add(model.AddValueToListAndDelayWithDefaultConcurrencyAsync_WithCancelCommandCommand.ExecuteAsync(i));
94126
}
95127

96128
Assert.AreEqual(10, tasks.Count);
97129

98-
// Only the first item should have been added, like the previous case
99-
CollectionAssert.AreEqual(model.Values, Enumerable.Range(0, 12).ToArray());
130+
CollectionAssert.AreEqual(model.Values, Enumerable.Range(0, 10).ToArray());
100131
}
101132

102133
[TestMethod]
@@ -432,7 +463,9 @@ public sealed partial class MyViewModel
432463

433464
public List<int> Values { get; } = new();
434465

435-
public TaskCompletionSource<object?> Tcs { get; } = new();
466+
public TaskCompletionSource<object?> Tcs { get; private set; } = new();
467+
468+
public void ResetTcs() => Tcs = new TaskCompletionSource<object?>();
436469

437470
/// <summary>This is a single line summary.</summary>
438471
[ICommand]

0 commit comments

Comments
 (0)