diff --git a/kosmorrolib/data.py b/kosmorrolib/data.py index d7e931b..fb1514c 100644 --- a/kosmorrolib/data.py +++ b/kosmorrolib/data.py @@ -48,11 +48,11 @@ class MoonPhase: return MOON_PHASES[self.identifier] def get_next_phase(self): - if self.identifier == 'NEW_MOON': + if self.identifier == 'NEW_MOON' or self.identifier == 'WAXING_CRESCENT': next_identifier = 'FIRST_QUARTER' - elif self.identifier == 'FIRST_QUARTER': + elif self.identifier == 'FIRST_QUARTER' or self.identifier == 'WAXING_GIBBOUS': next_identifier = 'FULL_MOON' - elif self.identifier == 'FULL_MOON': + elif self.identifier == 'FULL_MOON' or self.identifier == 'WANING_GIBBOUS': next_identifier = 'LAST_QUARTER' else: next_identifier = 'NEW_MOON' diff --git a/test/ephemerides.py b/test/ephemerides.py index 1eef05a..63b4c89 100644 --- a/test/ephemerides.py +++ b/test/ephemerides.py @@ -1,7 +1,7 @@ import unittest from kosmorrolib.ephemerides import EphemeridesComputer from kosmorrolib.core import get_skf_objects -from kosmorrolib.data import Star, Position +from kosmorrolib.data import Star, Position, MoonPhase from datetime import date @@ -81,6 +81,27 @@ class EphemeridesComputerTestCase(unittest.TestCase): self.assertIsNone(phase.time) self.assertRegexpMatches(phase.next_phase_date.utc_iso(), '^2019-11-26T') + def test_moon_phase_prediction(self): + phase = MoonPhase('NEW_MOON', None, None) + self.assertEqual('First Quarter', phase.get_next_phase()) + phase = MoonPhase('WAXING_CRESCENT', None, None) + self.assertEqual('First Quarter', phase.get_next_phase()) + + phase = MoonPhase('FIRST_QUARTER', None, None) + self.assertEqual('Full Moon', phase.get_next_phase()) + phase = MoonPhase('WAXING_GIBBOUS', None, None) + self.assertEqual('Full Moon', phase.get_next_phase()) + + phase = MoonPhase('FULL_MOON', None, None) + self.assertEqual('Last Quarter', phase.get_next_phase()) + phase = MoonPhase('WANING_GIBBOUS', None, None) + self.assertEqual('Last Quarter', phase.get_next_phase()) + + phase = MoonPhase('LAST_QUARTER', None, None) + self.assertEqual('New Moon', phase.get_next_phase()) + phase = MoonPhase('WANING_CRESCENT', None, None) + self.assertEqual('New Moon', phase.get_next_phase()) + if __name__ == '__main__': unittest.main()