@@ -27,6 +27,46 @@ class ShiftTest < Test::Unit::TestCase
2727 end
2828 end
2929
30+ context "overlaps?" do
31+ should "be true when shifts overlap" do
32+ shift1 = Shift . new ( TimeOfDay . new ( 12 ) , TimeOfDay . new ( 18 ) )
33+ shift2 = Shift . new ( TimeOfDay . new ( 13 ) , TimeOfDay . new ( 15 ) )
34+ assert_true shift1 . overlaps? ( shift2 )
35+ end
36+
37+ should "be false when shifts don't overlap" do
38+ shift1 = Shift . new ( TimeOfDay . new ( 1 ) , TimeOfDay . new ( 5 ) )
39+ shift2 = Shift . new ( TimeOfDay . new ( 9 ) , TimeOfDay . new ( 12 ) )
40+ assert_false shift1 . overlaps? ( shift2 )
41+ end
42+
43+ should "be true when shifts touch" do
44+ shift1 = Shift . new ( TimeOfDay . new ( 1 ) , TimeOfDay . new ( 5 ) )
45+ shift2 = Shift . new ( TimeOfDay . new ( 5 ) , TimeOfDay . new ( 12 ) )
46+ assert_true shift1 . overlaps? ( shift2 )
47+ end
48+ end
49+
50+ context "contains?" do
51+ should "be true when one shift contains another" do
52+ outside = Shift . new ( TimeOfDay . new ( 12 ) , TimeOfDay . new ( 18 ) )
53+ inside = Shift . new ( TimeOfDay . new ( 13 ) , TimeOfDay . new ( 15 ) )
54+ assert_true outside . contains? ( inside )
55+ end
56+
57+ should "be false when a shift is contained by another" do
58+ outside = Shift . new ( TimeOfDay . new ( 12 ) , TimeOfDay . new ( 18 ) )
59+ inside = Shift . new ( TimeOfDay . new ( 13 ) , TimeOfDay . new ( 15 ) )
60+ assert_false inside . contains? ( outside )
61+ end
62+
63+ should "be false when shifts don't even overlap" do
64+ shift1 = Shift . new ( TimeOfDay . new ( 12 ) , TimeOfDay . new ( 15 ) )
65+ shift2 = Shift . new ( TimeOfDay . new ( 18 ) , TimeOfDay . new ( 19 ) )
66+ assert_false shift1 . contains? ( shift2 )
67+ end
68+ end
69+
3070 context "include?" do
3171 # |------------------------|--------T1----V----T2----|------------------------|
3272 should "be true when value is between ToDs and boths tods are in the same day" do
0 commit comments