Add SPDX header to python files with the 'py' extension in the test directory. Signed-off-by: Albert Esteve <aesteve@redhat.com>
259 lines
6.2 KiB
Python
259 lines
6.2 KiB
Python
# SPDX-FileCopyrightText: Red Hat, Inc.
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
from ovirt_imageio._internal.measure import Range, RangeList
|
|
|
|
# Compare ranges.
|
|
|
|
|
|
def test_range_lt_start_smaller():
|
|
assert Range(5, 10) < Range(6, 10)
|
|
assert not Range(6, 10) < Range(5, 10)
|
|
|
|
|
|
def test_range_lt_start_same():
|
|
assert Range(5, 10) < Range(5, 11)
|
|
assert not Range(5, 11) < Range(5, 10)
|
|
|
|
|
|
def test_range_eq():
|
|
assert Range(5, 10) == Range(5, 10)
|
|
|
|
|
|
def test_ragne_ne():
|
|
assert Range(5, 10) != Range(15, 20)
|
|
|
|
|
|
# Add to range list
|
|
|
|
|
|
def test_range_list_empty():
|
|
rl = RangeList()
|
|
assert rl.sum() == 0
|
|
|
|
|
|
def test_range_list_add_first():
|
|
rl = RangeList()
|
|
rl.add(Range(0, 10))
|
|
assert rl._ranges == [Range(0, 10)]
|
|
assert rl.sum() == 10
|
|
|
|
|
|
def test_range_list_add_same():
|
|
rl = RangeList()
|
|
rl.add(Range(0, 10))
|
|
rl.add(Range(0, 10))
|
|
assert rl._ranges == [Range(0, 10)]
|
|
assert rl.sum() == 10
|
|
|
|
|
|
def test_range_list_add_shorter():
|
|
rl = RangeList()
|
|
rl.add(Range(0, 10))
|
|
rl.add(Range(0, 5))
|
|
assert rl._ranges == [Range(0, 10)]
|
|
assert rl.sum() == 10
|
|
|
|
|
|
def test_range_list_add_longer():
|
|
rl = RangeList()
|
|
rl.add(Range(0, 5))
|
|
rl.add(Range(0, 10))
|
|
assert rl._ranges == [Range(0, 10)]
|
|
assert rl.sum() == 10
|
|
|
|
|
|
def test_range_list_add_overlap():
|
|
rl = RangeList()
|
|
rl.add(Range(0, 10))
|
|
rl.add(Range(5, 15))
|
|
assert rl._ranges == [Range(0, 15)]
|
|
assert rl.sum() == 15
|
|
|
|
|
|
def test_range_list_add_contiguous():
|
|
rl = RangeList()
|
|
rl.add(Range(0, 10))
|
|
rl.add(Range(10, 20))
|
|
assert rl._ranges == [Range(0, 20)]
|
|
assert rl.sum() == 20
|
|
|
|
|
|
def test_range_list_add_non_contiguous():
|
|
rl = RangeList()
|
|
rl.add(Range(0, 10))
|
|
rl.add(Range(20, 30))
|
|
assert rl._ranges == [Range(0, 10), Range(20, 30)]
|
|
assert rl.sum() == 20
|
|
|
|
|
|
def test_ragne_list_add_overlap_next_some():
|
|
rl = RangeList()
|
|
rl.add(Range(0, 10))
|
|
rl.add(Range(20, 30))
|
|
rl.add(Range(15, 25))
|
|
assert rl._ranges == [Range(0, 10), Range(15, 30)]
|
|
assert rl.sum() == 25
|
|
|
|
|
|
def test_ragne_list_add_overlap_next_all():
|
|
rl = RangeList()
|
|
rl.add(Range(0, 10))
|
|
rl.add(Range(20, 30))
|
|
rl.add(Range(15, 30))
|
|
assert rl._ranges == [Range(0, 10), Range(15, 30)]
|
|
assert rl.sum() == 25
|
|
|
|
|
|
def test_range_list_add_overlap_both_some():
|
|
rl = RangeList()
|
|
rl.add(Range(0, 10))
|
|
rl.add(Range(20, 30))
|
|
rl.add(Range(5, 25))
|
|
assert rl._ranges == [Range(0, 30)]
|
|
assert rl.sum() == 30
|
|
|
|
|
|
def test_range_list_add_overlap_both_all():
|
|
rl = RangeList()
|
|
rl.add(Range(0, 10))
|
|
rl.add(Range(20, 30))
|
|
rl.add(Range(0, 30))
|
|
assert rl._ranges == [Range(0, 30)]
|
|
assert rl.sum() == 30
|
|
|
|
|
|
def test_range_list_add_overlap_next_multi_some():
|
|
rl = RangeList()
|
|
rl.add(Range(0, 10))
|
|
rl.add(Range(20, 30))
|
|
rl.add(Range(40, 50))
|
|
rl.add(Range(60, 70))
|
|
rl.add(Range(25, 45))
|
|
assert rl._ranges == [Range(0, 10), Range(20, 50), Range(60, 70)]
|
|
assert rl.sum() == 50
|
|
|
|
|
|
def test_range_list_add_overlap_next_multi_all():
|
|
rl = RangeList()
|
|
rl.add(Range(0, 10))
|
|
rl.add(Range(20, 30))
|
|
rl.add(Range(40, 50))
|
|
rl.add(Range(60, 70))
|
|
rl.add(Range(20, 50))
|
|
assert rl._ranges == [Range(0, 10), Range(20, 50), Range(60, 70)]
|
|
assert rl.sum() == 50
|
|
|
|
|
|
# Update range list.
|
|
|
|
|
|
def test_range_list_update_first():
|
|
rl = RangeList()
|
|
rl.update([Range(0, 10), Range(10, 20), Range(20, 30), Range(30, 40)])
|
|
assert rl._ranges == [Range(0, 40)]
|
|
assert rl.sum() == 40
|
|
|
|
|
|
def test_range_list_update_same():
|
|
rl = RangeList()
|
|
rl.add(Range(0, 40))
|
|
rl.update([Range(0, 10), Range(10, 20), Range(20, 30), Range(30, 40)])
|
|
assert rl._ranges == [Range(0, 40)]
|
|
assert rl.sum() == 40
|
|
|
|
|
|
def test_range_list_update_contiguous():
|
|
rl = RangeList()
|
|
rl.update([Range(0, 10), Range(100, 110), Range(200, 210)])
|
|
rl.update([Range(10, 20), Range(110, 120), Range(210, 220)])
|
|
assert rl._ranges == [Range(0, 20), Range(100, 120), Range(200, 220)]
|
|
assert rl.sum() == 60
|
|
|
|
|
|
def test_range_list_update_non_contiguous():
|
|
rl = RangeList()
|
|
rl.update([Range(0, 10), Range(100, 110), Range(200, 210)])
|
|
rl.update([Range(300, 310), Range(400, 410), Range(500, 510)])
|
|
assert rl._ranges == [
|
|
Range(0, 10),
|
|
Range(100, 110),
|
|
Range(200, 210),
|
|
Range(300, 310),
|
|
Range(400, 410),
|
|
Range(500, 510),
|
|
]
|
|
assert rl.sum() == 60
|
|
|
|
|
|
def test_ragne_list_update_overlap_next_some():
|
|
rl = RangeList()
|
|
rl.update([Range(0, 10), Range(20, 30)])
|
|
rl.update([Range(15, 25)])
|
|
assert rl._ranges == [Range(0, 10), Range(15, 30)]
|
|
assert rl.sum() == 25
|
|
|
|
|
|
def test_ragne_list_update_overlap_next_all():
|
|
rl = RangeList()
|
|
rl.update([Range(0, 10), Range(20, 30)])
|
|
rl.update([Range(15, 30)])
|
|
assert rl._ranges == [Range(0, 10), Range(15, 30)]
|
|
assert rl.sum() == 25
|
|
|
|
|
|
def test_range_list_update_overlap_both_some():
|
|
rl = RangeList()
|
|
rl.update([Range(0, 10), Range(20, 30)])
|
|
rl.update([Range(5, 25)])
|
|
assert rl._ranges == [Range(0, 30)]
|
|
assert rl.sum() == 30
|
|
|
|
|
|
def test_range_list_update_overlap_both_all():
|
|
rl = RangeList()
|
|
rl.update([Range(0, 10), Range(20, 30)])
|
|
rl.update([Range(0, 30)])
|
|
assert rl._ranges == [Range(0, 30)]
|
|
assert rl.sum() == 30
|
|
|
|
|
|
def test_range_list_update_overlap_next_multi_some():
|
|
rl = RangeList()
|
|
rl.update([Range(0, 10), Range(20, 30), Range(40, 50), Range(60, 70)])
|
|
rl.update([Range(5, 35), Range(25, 65)])
|
|
assert rl._ranges == [Range(0, 70)]
|
|
assert rl.sum() == 70
|
|
|
|
|
|
def test_range_list_update_overlap_next_multi_all():
|
|
rl = RangeList()
|
|
rl.update([Range(0, 10), Range(20, 30), Range(40, 50), Range(60, 70)])
|
|
rl.update([Range(0, 50), Range(20, 70)])
|
|
assert rl._ranges == [Range(0, 70)]
|
|
assert rl.sum() == 70
|
|
|
|
|
|
# Copy range list.
|
|
|
|
|
|
def test_range_list_copy():
|
|
r1 = RangeList()
|
|
|
|
r1.add(Range(0, 100))
|
|
r1.add(Range(200, 300))
|
|
r1.add(Range(400, 500))
|
|
|
|
r2 = RangeList(r1)
|
|
|
|
# r1 and r2 are qqual.
|
|
assert r1._ranges == r2._ranges
|
|
assert r1.sum() == r2.sum()
|
|
|
|
# But independent.
|
|
r1.add(Range(300, 400))
|
|
r2.add(Range(100, 200))
|
|
|
|
assert r1._ranges == [Range(0, 100), Range(200, 500)]
|
|
assert r2._ranges == [Range(0, 300), Range(400, 500)]
|