Files
dragonpilot/laika_repo/tests/test_time_range_holder.py
Comma Device 5c73e264e9 Release 260308
2026-03-08 23:26:57 +08:00

83 lines
2.8 KiB
Python

from datetime import datetime
import unittest
from laika.helpers import TimeRangeHolder
from laika.gps_time import GPSTime
class TestTimeRangeHolder(unittest.TestCase):
def test_empty(self):
time = GPSTime.from_datetime(datetime(2020, 5, 1, 0, 0, 0))
holder = TimeRangeHolder()
self.assertFalse(time in holder)
def test_one_in_range(self):
start_time = GPSTime.from_datetime(datetime(2020, 4, 28))
end_time = GPSTime.from_datetime(datetime(2020, 5, 2))
time = GPSTime.from_datetime(datetime(2020, 5, 1))
holder = TimeRangeHolder()
holder.add(start_time, end_time)
self.assertTrue(time in holder)
def test_one_outside_range(self):
start_time = GPSTime.from_datetime(datetime(2020, 4, 28))
end_time = GPSTime.from_datetime(datetime(2020, 5, 2))
time = GPSTime.from_datetime(datetime(2021, 5, 1))
holder = TimeRangeHolder()
holder.add(start_time, end_time)
self.assertFalse(time in holder)
def test_merge_ranges(self):
first_range = (GPSTime.from_datetime(datetime(2020, 5, 1)),
GPSTime.from_datetime(datetime(2020, 5, 3)))
second_range = (GPSTime.from_datetime(datetime(2020, 5, 7)),
GPSTime.from_datetime(datetime(2020, 5, 9)))
merge_range = (GPSTime.from_datetime(datetime(2020, 5, 2)),
GPSTime.from_datetime(datetime(2020, 5, 8)))
time = GPSTime.from_datetime(datetime(2020, 5, 5))
holder = TimeRangeHolder()
holder.add(*first_range)
holder.add(*second_range)
self.assertFalse(time in holder)
holder.add(*merge_range)
self.assertTrue(time in holder)
def test_extend_range_left(self):
range_ = (GPSTime.from_datetime(datetime(2020, 5, 7)),
GPSTime.from_datetime(datetime(2020, 5, 9)))
merge_range = (GPSTime.from_datetime(datetime(2020, 5, 3)),
GPSTime.from_datetime(datetime(2020, 5, 7)))
time = GPSTime.from_datetime(datetime(2020, 5, 5))
holder = TimeRangeHolder()
holder.add(*range_)
self.assertFalse(time in holder)
holder.add(*merge_range)
self.assertTrue(time in holder)
def test_extend_range_right(self):
merge_range = (GPSTime.from_datetime(datetime(2020, 5, 7)),
GPSTime.from_datetime(datetime(2020, 5, 9)))
range_ = (GPSTime.from_datetime(datetime(2020, 5, 3)),
GPSTime.from_datetime(datetime(2020, 5, 7)))
time = GPSTime.from_datetime(datetime(2020, 5, 8))
holder = TimeRangeHolder()
holder.add(*range_)
self.assertFalse(time in holder)
holder.add(*merge_range)
self.assertTrue(time in holder)