|
|
|
@@ -1,53 +1,60 @@ |
|
|
|
import unittest |
|
|
|
|
|
|
|
from datetime import date, datetime |
|
|
|
from unittest_data_provider import data_provider |
|
|
|
from parameterized import parameterized |
|
|
|
|
|
|
|
from kosmorrolib import events |
|
|
|
from kosmorrolib.data import Event, ASTERS |
|
|
|
from kosmorrolib.enum import EventType |
|
|
|
from kosmorrolib.exceptions import OutOfRangeDateError |
|
|
|
|
|
|
|
EXPECTED_EVENTS = [ |
|
|
|
(date(2020, 2, 7), []), |
|
|
|
|
|
|
|
class EventTestCase(unittest.TestCase): |
|
|
|
def setUp(self) -> None: |
|
|
|
self.maxDiff = None |
|
|
|
(date(2020, 10, 13), [Event(EventType.OPPOSITION, [ASTERS[4]], datetime(2020, 10, 13, 23, 25))]), |
|
|
|
|
|
|
|
expected_events_provider = lambda: ( |
|
|
|
(date(2020, 2, 7), []), |
|
|
|
(date(2022, 12, 8), |
|
|
|
[Event(EventType.CONJUNCTION, [ASTERS[1], ASTERS[4]], datetime(2022, 12, 8, 4, 18)), |
|
|
|
Event(EventType.OPPOSITION, [ASTERS[4]], datetime(2022, 12, 8, 5, 41))]), |
|
|
|
|
|
|
|
(date(2020, 10, 13), [Event(EventType.OPPOSITION, [ASTERS[4]], datetime(2020, 10, 13, 23, 25))]), |
|
|
|
(date(2025, 1, 16), [Event(EventType.OPPOSITION, [ASTERS[4]], datetime(2025, 1, 16, 2, 38))]), |
|
|
|
|
|
|
|
(date(2022, 12, 8), [Event(EventType.CONJUNCTION, [ASTERS[1], ASTERS[4]], datetime(2022, 12, 8, 4, 18)), |
|
|
|
Event(EventType.OPPOSITION, [ASTERS[4]], datetime(2022, 12, 8, 5, 41))]), |
|
|
|
(date(2027, 2, 19), [Event(EventType.MOON_PERIGEE, [ASTERS[1]], datetime(2027, 2, 19, 7, 38)), |
|
|
|
Event(EventType.OPPOSITION, [ASTERS[4]], datetime(2027, 2, 19, 15, 50))]), |
|
|
|
|
|
|
|
(date(2025, 1, 16), [Event(EventType.OPPOSITION, [ASTERS[4]], datetime(2025, 1, 16, 2, 38))]), |
|
|
|
(date(2020, 1, 2), [Event(EventType.MOON_APOGEE, [ASTERS[1]], datetime(2020, 1, 2, 1, 32)), |
|
|
|
Event(EventType.CONJUNCTION, [ASTERS[2], ASTERS[5]], |
|
|
|
datetime(2020, 1, 2, 16, 41))]), |
|
|
|
|
|
|
|
(date(2027, 2, 19), [Event(EventType.MOON_PERIGEE, [ASTERS[1]], datetime(2027, 2, 19, 7, 38)), |
|
|
|
Event(EventType.OPPOSITION, [ASTERS[4]], datetime(2027, 2, 19, 15, 50))]), |
|
|
|
(date(2020, 1, 12), |
|
|
|
[Event(EventType.CONJUNCTION, [ASTERS[2], ASTERS[6]], datetime(2020, 1, 12, 9, 51)), |
|
|
|
Event(EventType.CONJUNCTION, [ASTERS[2], ASTERS[9]], datetime(2020, 1, 12, 10, 13)), |
|
|
|
Event(EventType.CONJUNCTION, [ASTERS[6], ASTERS[9]], datetime(2020, 1, 12, 16, 57))]), |
|
|
|
|
|
|
|
(date(2020, 1, 2), [Event(EventType.MOON_APOGEE, [ASTERS[1]], datetime(2020, 1, 2, 1, 32)), |
|
|
|
Event(EventType.CONJUNCTION, [ASTERS[2], ASTERS[5]], datetime(2020, 1, 2, 16, 41))]), |
|
|
|
(date(2020, 2, 10), |
|
|
|
[Event(EventType.MAXIMAL_ELONGATION, [ASTERS[2]], datetime(2020, 2, 10, 13, 46), details='18.2°'), |
|
|
|
Event(EventType.MOON_PERIGEE, [ASTERS[1]], datetime(2020, 2, 10, 20, 34))]), |
|
|
|
|
|
|
|
(date(2020, 1, 12), [Event(EventType.CONJUNCTION, [ASTERS[2], ASTERS[6]], datetime(2020, 1, 12, 9, 51)), |
|
|
|
Event(EventType.CONJUNCTION, [ASTERS[2], ASTERS[9]], datetime(2020, 1, 12, 10, 13)), |
|
|
|
Event(EventType.CONJUNCTION, [ASTERS[6], ASTERS[9]], datetime(2020, 1, 12, 16, 57))]), |
|
|
|
(date(2020, 3, 24), |
|
|
|
[Event(EventType.MAXIMAL_ELONGATION, [ASTERS[2]], datetime(2020, 3, 24, 1, 56), details='27.8°'), |
|
|
|
Event(EventType.MOON_APOGEE, [ASTERS[1]], datetime(2020, 3, 24, 15, 39)), |
|
|
|
Event(EventType.MAXIMAL_ELONGATION, [ASTERS[3]], datetime(2020, 3, 24, 21, 58), |
|
|
|
details='46.1°')]), |
|
|
|
|
|
|
|
(date(2020, 2, 10), [Event(EventType.MAXIMAL_ELONGATION, [ASTERS[2]], datetime(2020, 2, 10, 13, 46), details='18.2°'), |
|
|
|
Event(EventType.MOON_PERIGEE, [ASTERS[1]], datetime(2020, 2, 10, 20, 34))]), |
|
|
|
(date(2005, 6, 16), |
|
|
|
[Event(EventType.OCCULTATION, [ASTERS[1], ASTERS[5]], datetime(2005, 6, 16, 6, 31))]), |
|
|
|
|
|
|
|
(date(2020, 3, 24), [Event(EventType.MAXIMAL_ELONGATION, [ASTERS[2]], datetime(2020, 3, 24, 1, 56), details='27.8°'), |
|
|
|
Event(EventType.MOON_APOGEE, [ASTERS[1]], datetime(2020, 3, 24, 15, 39)), |
|
|
|
Event(EventType.MAXIMAL_ELONGATION, [ASTERS[3]], datetime(2020, 3, 24, 21, 58), details='46.1°')]), |
|
|
|
(date(2020, 4, 7), [Event(EventType.MOON_PERIGEE, [ASTERS[1]], datetime(2020, 4, 7, 18, 14))]), |
|
|
|
|
|
|
|
(date(2005, 6, 16), [Event(EventType.OCCULTATION, [ASTERS[1], ASTERS[5]], datetime(2005, 6, 16, 6, 31))]), |
|
|
|
(date(2020, 1, 29), [Event(EventType.MOON_APOGEE, [ASTERS[1]], datetime(2020, 1, 29, 21, 32))]) |
|
|
|
] |
|
|
|
|
|
|
|
(date(2020, 4, 7), [Event(EventType.MOON_PERIGEE, [ASTERS[1]], datetime(2020, 4, 7, 18, 14))]), |
|
|
|
|
|
|
|
(date(2020, 1, 29), [Event(EventType.MOON_APOGEE, [ASTERS[1]], datetime(2020, 1, 29, 21, 32))]) |
|
|
|
) |
|
|
|
class EventTestCase(unittest.TestCase): |
|
|
|
def setUp(self) -> None: |
|
|
|
self.maxDiff = None |
|
|
|
|
|
|
|
@data_provider(expected_events_provider) |
|
|
|
@parameterized.expand(EXPECTED_EVENTS) |
|
|
|
def test_search_events(self, d: date, expected_events: [Event]): |
|
|
|
actual_events = events.search_events(d) |
|
|
|
self.assertEqual(len(expected_events), len(actual_events), |
|
|
|
|