Skip to content

Commit 3f795db

Browse files
authored
Merge pull request #201 from codeflash-ai/range-comparator
Python 'range' objects can be compared with double equal
2 parents 4e4b1d0 + ab0288c commit 3f795db

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

codeflash/verification/comparator.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ def comparator(orig: Any, new: Any, superset_obj=False) -> bool:
8484
frozenset,
8585
enum.Enum,
8686
type,
87+
range
8788
),
8889
):
8990
return orig == new

tests/test_comparator.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,26 @@ def test_basic_python_objects() -> None:
125125
assert comparator(a, b)
126126
assert not comparator(a, c)
127127

128+
@pytest.mark.parametrize("r1, r2, expected", [
129+
(range(1, 10), range(1, 10), True), # equal
130+
(range(0, 10), range(1, 10), False), # different start
131+
(range(2, 10), range(1, 10), False),
132+
(range(1, 5), range(1, 10), False), # different stop
133+
(range(1, 20), range(1, 10), False),
134+
(range(1, 10, 1), range(1, 10, 2), False), # different step
135+
(range(1, 10, 3), range(1, 10, 2), False),
136+
(range(-5, 0), range(-5, 0), True), # negative ranges
137+
(range(-10, 0), range(-5, 0), False),
138+
(range(5, 1), range(10, 5), True), # empty ranges
139+
(range(5, 1), range(5, 1), True),
140+
(range(7), range(0, 7), True),
141+
(range(0, 7), range(0, 7, 1), True),
142+
(range(7), range(0, 7, 1), True),
143+
])
144+
145+
def test_ranges(r1, r2, expected):
146+
assert comparator(r1, r2) == expected
147+
128148

129149
def test_standard_python_library_objects() -> None:
130150
a = datetime.datetime(2020, 2, 2, 2, 2, 2) # type: ignore

0 commit comments

Comments
 (0)