def test_availability(self): """4. Wykupienie całego asortymentu, próba zakupu po wyczerpaniu towaru - oczekiwana informacja o braku.""" test_machine = Machine() test_machine.update_availability(30) test_machine.update_availability(30) test_machine.update_availability(30) test_machine.update_availability(30) test_machine.update_availability(30) state = test_machine.update_availability(30) self.assertEqual(state, False)
def test_make_change(self): """3. Wrzucenie większej kwoty, zakup towaru - oczekiwana reszta.""" test_machine2 = Operations(Tk()) test_machine2.button_click(36) test_machine2.ok_function(36) test_machine2.coin_click(1.0) test_machine2.coin_click(1.0) test_machine2.coin_click(5.0) change = Machine().make_change( fabs(test_machine2.get_current_amount_test())) # cena zwrocona w monetach powinna wygladac --> [0.2, 0.2, 2.0, 2.0] self.assertEqual(change, [0.2, 0.2, 2.0, 2.0])
def test_make_no_change(self): """2. Wrzucenie odliczonej kwoty, zakup towaru - oczekiwany brak reszty.""" test_machine = Operations(Tk()) test_machine.button_click(36) test_machine.ok_function(36) test_machine.coin_click(1.0) test_machine.coin_click(1.0) test_machine.coin_click(0.6) change = Machine().make_change( fabs(test_machine.get_current_amount_test())) self.assertEqual(change, [])
def test_buy_product_with_1gr(self): """8. Zakup towaru płacąc po 1 gr - suma stu monet ma być równa 1zł (dla floatów suma sto razy 0.01+0.01+...+0.01 nie będzie równa 1.0). Płatności można dokonać za pomocą pętli for w interpreterze.""" test_machine2 = Operations(Tk()) test_machine2.button_click(50) test_machine2.ok_function(50) for i in range(100): test_machine2.coin_click(0.01) # resta powinna byc rowna 0: change = Machine().make_change( fabs(test_machine2.get_current_amount_test())) self.assertEqual(change, [])
def button_click(self, item): """ Jesli produkt jest na stanie, wyprowadza jego cene na ekran, lub jesli wprowadzony zostal bledny numer, wyprowadzi informacji o braku dostepnosci. """ self.__stop_flag = False self.__entered_coins = [] self.__number = self.__number + str(item) self.input_text1.set(self.__number) self.__input_length = len(self.__number) if self.__input_length > 1: expression2 = copy.copy(self.__number) # info ile do zaplaty self.__master.after( 1000, lambda: self.input_text1.set("cena: " + str(Machine( ).zwroc_cene(int(expression2))))) try: check_if_number_exists(self.__number) self.__chosen_no = copy.deepcopy( self.__number) # zwrca kopie numeru wybranego # sprawdzam czy produkt jest w slowniku if not Machine().update_availability(self.__number): self.input_text1.set("produkt niedostepny") self.flag = False # clear fun self.clear_all() raise exceptions.LackOfProduct except exceptions.InputError: print("exception raised") self.__number = ""
def test_get_price(self): """1. Sprawdzenie ceny jednego towaru - oczekiwana informacja o cenie.""" self.assertEqual(Machine().zwroc_cene(32), 3.00)
def coin_click(self, which_coin): """Po wprowadzeniu monety, ile jescze trzeba doplacic aby zakupic produkt.""" entered_no = int(float(self.get_button_click())) # dziala jednorazowo self.__coin = getdouble(which_coin) self.input_coinn.set( self.__coin) # wyswietla na ekranie wrzucona monete self.__entered_coins.append(self.__coin) if self.__ok_clicked: if not self.__exit: # jesli jeszcze brakuje pieniedzy - self.__price < 0 if self.__price == 0: self.__price = round(Machine().zwroc_cene(entered_no), 2) if not self.__stop_flag: self.__price = round(self.__price - self.__coin, 2) if not self.__thrown_exception: if self.__price > 0: self.input_coinn.set( "brakuje : " + str(abs(round(self.__price, 2)))) elif self.__price < 0: try: self.clear_coin_window() coin_list = (Machine().make_change( abs(self.__price))) self.input_coinn.set("wydaje reszte: " + str(coin_list)) self.__exit = True self.__ok_clicked = False self.__master.after(1000, lambda: self.clear_all()) except exceptions.NoMoneyToMakeChange: print("tylko odliczona kwota") self.__thrown_exception = True self.clear_all() messagebox.showerror( "Error", "Prosze wprowadzic odliczona kwote.") elif self.__price == 0: time.sleep(1.00) self.input_coinn.set("prosze odebrac pordukt") self.__exit = True self.__ok_clicked = False self.__master.after(1000, lambda: self.clear_all()) else: if self.__price > 0: self.input_coinn.set( "brakuje : " + str(abs(round(self.__price, 2)))) elif self.__price == 0: time.sleep(1.00) self.input_coinn.set("prosze odebrac pordukt") self.__exit = True self.__ok_clicked = False self.__master.after(1000, lambda: self.clear_all()) elif self.__price < 0: self.__ok_clicked = False self.input_coinn.set("tylko odliczona kwota") self.__master.after(1000, lambda: self.clear_all()) raise exceptions.NoMoneyToMakeChange else: self.input_coinn.set("zatwierdz operacje")