# vim: set fileencoding=utf-8
import unittest
from freezegun import freeze_time

from bemani.common.time import Time


class TestTime(unittest.TestCase):

    def test_days_since_epoch(self) -> None:
        # Verify that we just get the right number of days.
        with freeze_time('2016-01-01'):
            self.assertEqual(16797, Time.week_in_days_since_epoch())

        # Verify that adding a day doesn't change the value, because it rounds to nearest week.
        with freeze_time('2016-01-02'):
            self.assertEqual(16797, Time.week_in_days_since_epoch())

        # Verify that adding a week makes the value go up by 7 days.
        with freeze_time('2016-01-08'):
            self.assertEqual(16804, Time.week_in_days_since_epoch())

    def test_end_of_this_week(self) -> None:
        # Verify that we can detect the end of the month properly
        with freeze_time('2017-10-16'):
            self.assertEqual(1508716800, Time.end_of_this_week())

    def test_beginning_of_this_week(self) -> None:
        # Verify that we can detect the end of the month properly
        with freeze_time('2017-10-16'):
            self.assertEqual(1508112000, Time.beginning_of_this_week())

    def test_end_of_this_month(self) -> None:
        # Verify that we can detect the end of the month properly
        with freeze_time('2017-10-16'):
            self.assertEqual(1509494400, Time.end_of_this_month())

    def test_beginning_of_this_month(self) -> None:
        # Verify that we can detect the end of the month properly
        with freeze_time('2017-10-16'):
            self.assertEqual(1506816000, Time.beginning_of_this_month())
