.net 日期时间相交法的单元测试

.net 日期时间相交法的单元测试,.net,unit-testing,date,intersection,.net,Unit Testing,Date,Intersection,我有以下代码来确定两个周期是否相交,并想证明它是正确的: public static bool Intersect(this DateTime start1, DateTime end1, DateTime start2, DateTime end2) { return (start1 == start2) || (start1 > start2 ? start1 <= end2 : start2 <= end1); } public static bool Inte

我有以下代码来确定两个周期是否相交,并想证明它是正确的:

public static bool Intersect(this DateTime start1, DateTime end1, DateTime start2, DateTime end2)
{
    return (start1 == start2) || (start1 > start2 ? start1 <= end2 : start2 <= end1);
}
public static bool Intersect(此DateTime start1、DateTime end1、DateTime start2、DateTime end2)
{

return(start1==start2)| |(start1>start2?start1您应该使用所有可能的输入值组合来测试您的方法。这样,不仅可以测试有效输入,还可以测试无效输入。使用描述有效(预期)输入和无效(意外但可能)输入的示例输入值输入。一般来说,测试应该这样做,这样才能证明他们的代码按预期工作。

根据描述,您有两个日期范围

1) 开始1…结束1

2) 开始2…结束2

你想看看它们是否重叠

那么,有什么可能性呢

A) 错误案例

End1 < Start1
End2 < Start2
End1
B) 精确重叠

Start1 == Start2, End1 == End2, Start1 == End1
Start1 == Start2, End1 == End2, Start1 < End1
Start1==Start2,End1==End2,Start1==End1
Start1==Start2,End1==End2,Start1
C) 无重叠

Start1 < End1 < Start2 < End2
Start1 == End1 < Start2 < End2
Start1 < End1 < Start2 == End2
Start1 == End1 < Start2 == End2
Start1
D) 完全重叠

Start1 == Start2 < End2 < End1
Start1 == Start2 == End2 < End1
Start1 < Start2 < End2 < End1
Start1 < Start2 == End2 < End1
Start1 < Start2 < End2 == End1
Start1 < Start2 == End2 == End1
Start1==Start2
E) 部分重叠

Start1 < Start2 < End1 < End2
Start1

我认为这就是问题所在。它假设范围是有序的(开始1这是一个奇怪的问题…你对一些硬编码的值不满意,所以你要求一个问题的通用解决方案。但是一旦你有了通用解决方案,为什么不只正确地编码函数并跳过单元测试呢?
Start1 < Start2 < End1 < End2