根据描述,您有两个日期范围
1) 开始 1...结束 1
2) 开始 2...结束 2
你想看看它们是否重叠
那么,有哪些可能
A) 错误案例
End1 < Start1
End2 < Start2
B) 精确重叠
Start1 == Start2, End1 == End2, Start1 == End1
Start1 == Start2, End1 == End2, Start1 < End1
C) 没有重叠
Start1 < End1 < Start2 < End2
Start1 == End1 < Start2 < End2
Start1 < End1 < Start2 == End2
Start1 == End1 < Start2 == End2
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
E) 部分重叠
Start1 < Start2 < End1 < End2
我认为这是很多。它假定范围是有序的(Start1 <= Start2)。
您可能需要将案例加倍,首先传递第二个范围。答案应该仍然相同(重叠不依赖于顺序),但实现可能隐式依赖于 (Start1 <= Start2) 并且如果以其他方式输入日期则失败。
以上每一个都成为一个测试用例。
注意:如果不允许 0 长度(开始 == 结束)范围,它们将成为错误情况,可以从其他部分中删除。
对于一个简单的函数,有很多测试用例,但是您有 4 个变量(每个日期)以及它们之间的一组关系,并且每个关系组合都会给出不同的答案。
您需要决定是否值得为此付出努力,或者选择最常见和“最有可能导致算法问题”(非常主观)的案例就足够了。
我希望这是您正在寻找的并且有用的,
艾伦。