【发布时间】:2023-03-29 06:55:01
【问题描述】:
我得到了以下任务:
如果可以将给定的约会添加到约会列表中而不重叠,则返回 true
任何其他约会。
name="appointments">当前约会列表
name="appointment">要检查它是否适合其他约会的新约会
如果新约会适合当前约会,则为真:“9-10”、“11-12”、“15-16”
我当前的代码是:
public bool IsAvailable(Appointment[] appointments, Appointment appointment)
{
bool overlap = true;
foreach (var afspraak in appointments)
{
overlap = (afspraak.Start >= appointment.End || appointment.Start <= afspraak.End);
}
return overlap;
}
这段代码通过了 18 个单元测试中的 10 个:
Should return True:
[TestCase("8-9")] passed
[TestCase("8-8:30")] passed
[TestCase("10-11")] passed
[TestCase("10:45-11")] passed
[TestCase("12-15")] passed
[TestCase("12-13")] passed
[TestCase("13-14")] passed
[TestCase("14-15")] passed
[TestCase("16-17")] passed
[TestCase("16:30-17")] failed
Should return False:
[TestCase("7-8")] failed
[TestCase("8-9:30")] failed
[TestCase("9:30-9:45")] failed
[TestCase("9:30-11")] failed
[TestCase("8-10:30")] failed
[TestCase("17-18")] passed
[TestCase("12-18")] failed
[TestCase("11:30-12:30")] failed
我真的无法弄清楚我做错了什么,有人看到我做错了什么吗?
更新 2: 问题是只有现在“应该返回错误的单元测试”才能通过:(
------
【问题讨论】:
-
你没有跳出 for 循环,所以只有约会中的最后一个 afspraak 会影响重叠值。
标签: c# overlap overlapping