import unittest
from mystudy.lecture import Lecture, parse_lecture_line

EPSILON = 0.01

class LectureTestCase(unittest.TestCase):
    def test_constructor(self):
        n = "Mathematik"
        ects = 5
        f = 2.5
        mathe2 = Lecture(n, ects, f)
        english = Lecture("English", 2, 1)
        print(mathe2)
        print(english)
        text = f"{mathe2} am Montag"
        text2 = f"{mathe2} im Studiengang MAM"
        print(text)


    def test_cal_effort(self):
        n = "Mathematik",
        ects = 5
        f = 2.5
        mathe2 = Lecture(n, ects, f)
        e1 = mathe2.cal_effort()
        # self.assertEqual(e1, 6)
        diff = abs(e1 - 6.25)
        self.assertTrue(diff < EPSILON)

        e2 = mathe2.cal_effort(time_per_ects=20)
        diff = abs(e2 - 2.92)
        # self.assertEqual(e2, 7)
        self.assertTrue(diff < EPSILON)

    def test_parse_lecture_line(self):
        data = "English; 3 ; 2"
        english = parse_lecture_line(data)
        text = "Vorlesungsname English ECTS: 2"
        self.assertEqual(text, f"{english}")


if __name__ == '__main__':
    unittest.main()