import unittest

from library_slots import minutes_since_midnight


class LibrarySlotTests(unittest.TestCase):
    def test_valid_times(self):
        for value, expected in (("00:00", 0), ("09:05", 545), ("23:59", 1439)):
            with self.subTest(value=value):
                self.assertEqual(minutes_since_midnight(value), expected)

    def test_rejects_bad_shape(self):
        for value in ("9:05", "09:5", " 09:05", "09:05\n", "０９:０５", "09-05"):
            with self.subTest(value=value):
                with self.assertRaises(ValueError):
                    minutes_since_midnight(value)

    def test_rejects_out_of_range_values(self):
        for value in ("24:00", "12:60", "-1:15"):
            with self.subTest(value=value):
                with self.assertRaises(ValueError):
                    minutes_since_midnight(value)
