test(coroutine): 更新协程句柄和任务扩展测试

- 修改CoroutineHandleTests中的Equals比较测试,使用不同的实例ID进行验证
- 在Equals测试中添加Key值的不同性验证
- 更新AsCoroutineInstruction测试文档,验证已完成任务的状态
- 移除重复的泛型版本测试方法
- 在TaskCoroutineExtensionsTests中移除未使用的句柄变量赋值
- 简化任务协程启动的测试逻辑,专注于调度器行为验证
This commit is contained in:
GeWuYou 2026-01-27 13:03:47 +08:00
parent 684d4601d0
commit df7ad24b48
2 changed files with 18 additions and 19 deletions

View File

@ -81,12 +81,17 @@ public class CoroutineHandleTests
[Test]
public void Equals_Should_Return_False_For_Different_Handles()
{
var handle1 = new CoroutineHandle(1);
var handle2 = new CoroutineHandle(1);
var handle1 = new CoroutineHandle(5);
var handle2 = new CoroutineHandle(10);
// 测试通过Equals方法比较不同实例ID的句柄
Assert.That(handle1.Equals(handle2), Is.False);
// 额外验证这两个句柄的Key也不同
Assert.That(handle1.Key, Is.Not.EqualTo(handle2.Key));
}
/// <summary>
/// 验证Equals方法与null对象的比较
/// </summary>

View File

@ -40,7 +40,7 @@ public class TaskCoroutineExtensionsTests
}
/// <summary>
/// 验证AsCoroutineInstruction可以处理已完成的Task
/// 验证AsCoroutineInstruction可以处理已完成的Task并验证其状态
/// </summary>
[Test]
public void AsCoroutineInstruction_Should_Handle_Completed_Task()
@ -48,20 +48,14 @@ public class TaskCoroutineExtensionsTests
var task = Task.CompletedTask;
var instruction = task.AsCoroutineInstruction();
// 验证指令类型
Assert.That(instruction, Is.InstanceOf<WaitForTask>());
// 验证已完成的任务是否立即可用
Assert.That(task.IsCompleted, Is.True);
Assert.That(task.Status, Is.EqualTo(TaskStatus.RanToCompletion));
}
/// <summary>
/// 验证AsCoroutineInstruction<T>可以处理已完成的Task
/// </summary>
[Test]
public void AsCoroutineInstructionOfT_Should_Handle_Completed_Task()
{
var task = Task.FromResult(42);
var instruction = task.AsCoroutineInstruction<int>();
Assert.That(instruction, Is.InstanceOf<WaitForTask<int>>());
}
/// <summary>
/// 验证AsCoroutineInstruction<T>应该能够访问Task结果
@ -165,7 +159,7 @@ public class TaskCoroutineExtensionsTests
var completed = false;
var tcs = new TaskCompletionSource<object?>();
var handle = scheduler.StartTaskAsCoroutine(tcs.Task);
scheduler.StartTaskAsCoroutine(tcs.Task);
Assert.That(scheduler.ActiveCoroutineCount, Is.EqualTo(1));
Assert.That(completed, Is.False);
@ -190,7 +184,7 @@ public class TaskCoroutineExtensionsTests
var tcs = new TaskCompletionSource<int>();
var handle = scheduler.StartTaskAsCoroutine(tcs.Task);
scheduler.StartTaskAsCoroutine(tcs.Task);
Assert.That(scheduler.ActiveCoroutineCount, Is.EqualTo(1));
@ -213,7 +207,7 @@ public class TaskCoroutineExtensionsTests
var scheduler = new CoroutineScheduler(timeSource, instanceId: 1);
var task = Task.CompletedTask;
var handle = scheduler.StartTaskAsCoroutine(task);
scheduler.StartTaskAsCoroutine(task);
scheduler.Update();
@ -230,7 +224,7 @@ public class TaskCoroutineExtensionsTests
var scheduler = new CoroutineScheduler(timeSource, instanceId: 1);
var task = Task.FromException(new InvalidOperationException("Test"));
var handle = scheduler.StartTaskAsCoroutine(task);
scheduler.StartTaskAsCoroutine(task);
Assert.DoesNotThrow(() => scheduler.Update());
}