Skip to content

Commit a13ddbf

Browse files
Remove assertion to ensure FiniteDateRange difference
1 parent f49dec0 commit a13ddbf

File tree

2 files changed

+87
-2
lines changed

2 files changed

+87
-2
lines changed

tests/test_ranges.py

Lines changed: 87 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -865,7 +865,7 @@ def test_respects_other_range_boundaries(self, other):
865865

866866
def test_doesnt_extend_union(self):
867867
"""
868-
A union of ranges should be longer than the sum of it's parts.
868+
A union of ranges should not be longer than the sum of it's parts.
869869
"""
870870
# This is a weird test to include, it is added because this feels like an
871871
# obvious risk with the implementation I have used.
@@ -886,6 +886,92 @@ def test_finite_range(self):
886886

887887
assert 3 in subject
888888

889+
class TestDifference:
890+
def test_range_sets_overlap(self):
891+
range_set = ranges.RangeSet(
892+
[
893+
ranges.FiniteDateRange(
894+
start=datetime.date(2024, 10, 1),
895+
end=datetime.date(2024, 10, 31),
896+
)
897+
]
898+
)
899+
other = ranges.RangeSet(
900+
[
901+
ranges.FiniteDateRange(
902+
start=datetime.date(2024, 10, 1),
903+
end=datetime.date(2024, 10, 15),
904+
)
905+
]
906+
)
907+
difference = range_set.difference(other)
908+
909+
assert difference == ranges.RangeSet(
910+
[
911+
ranges.FiniteDateRange(
912+
start=datetime.date(2024, 10, 15),
913+
end=datetime.date(2024, 10, 31),
914+
)
915+
]
916+
)
917+
918+
def test_range_sets_overlap_multiple_ranges(self):
919+
range_set = ranges.RangeSet(
920+
[
921+
ranges.FiniteDateRange(
922+
start=datetime.date(2024, 10, 1),
923+
end=datetime.date(2024, 10, 31),
924+
),
925+
ranges.FiniteDateRange(
926+
start=datetime.date(2024, 11, 1),
927+
end=datetime.date(2024, 11, 30),
928+
),
929+
]
930+
)
931+
other = ranges.RangeSet(
932+
[
933+
ranges.FiniteDateRange(
934+
start=datetime.date(2024, 10, 15),
935+
end=datetime.date(2024, 11, 15),
936+
)
937+
]
938+
)
939+
940+
difference = range_set.difference(other)
941+
942+
assert difference == ranges.RangeSet(
943+
[
944+
ranges.FiniteDateRange(
945+
start=datetime.date(2024, 10, 1),
946+
end=datetime.date(2024, 10, 15),
947+
),
948+
ranges.FiniteDateRange(
949+
start=datetime.date(2024, 11, 15),
950+
end=datetime.date(2024, 11, 30),
951+
),
952+
]
953+
)
954+
955+
def test_difference_does_not_overlap(self):
956+
range_set = ranges.RangeSet(
957+
[
958+
ranges.FiniteDateRange(
959+
start=datetime.date(2024, 1, 1),
960+
end=datetime.date(2024, 1, 31),
961+
)
962+
]
963+
)
964+
other = ranges.RangeSet(
965+
[
966+
ranges.FiniteDateRange(
967+
start=datetime.date(2024, 3, 1),
968+
end=datetime.date(2024, 3, 31),
969+
)
970+
]
971+
)
972+
difference = range_set.difference(other)
973+
assert difference == range_set
974+
889975

890976
class TestAsFiniteDatetimePeriods:
891977
def test_converts(self):

xocto/ranges.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -876,7 +876,6 @@ def intersection(self, other: Range[datetime.date]) -> Optional["FiniteDateRange
876876
if base_intersection is None:
877877
return None
878878

879-
assert base_intersection.boundaries == RangeBoundaries.INCLUSIVE_INCLUSIVE
880879
return FiniteDateRange(base_intersection.start, base_intersection.end)
881880

882881
def union(self, other: Range[datetime.date]) -> Optional["FiniteDateRange"]:

0 commit comments

Comments
 (0)