import unittest

from app import Kosc


class TestKosc(unittest.TestCase):
    def setUp(self) -> None:
        Kosc.liczba_instancji = 0

    def test_rzut_zwraca_wartosc_od_1_do_6(self) -> None:
        kosc = Kosc(1)

        for _ in range(100):
            kosc.rzut()

            self.assertGreaterEqual(kosc.liczba_oczek, 1)
            self.assertLessEqual(kosc.liczba_oczek, 6)
            self.assertEqual(kosc.identyfikator_pliku, kosc.liczba_oczek)

    def test_rzut_nie_zmienia_wartosci_gdy_kosc_nie_jest_dostepna(self) -> None:
        kosc = Kosc(4)
        kosc.blokuj()

        oczekiwana_liczba_oczek = kosc.liczba_oczek
        oczekiwany_identyfikator_pliku = kosc.identyfikator_pliku

        for _ in range(100):
            kosc.rzut()

            self.assertEqual(kosc.liczba_oczek, oczekiwana_liczba_oczek)
            self.assertEqual(kosc.identyfikator_pliku, oczekiwany_identyfikator_pliku)


if __name__ == "__main__":
    unittest.main(verbosity=2)
