def test_correct_set_value(self): model = PrimeNumberViewModel() model.set_start_value(1) model.set_end_value(10) self.assertEqual(1, model.get_start_value()) self.assertEqual(10, model.get_end_value())
def test_model_perform_logging(self): model = PrimeNumberViewModel() model.set_start_value(2) model.set_end_value(10) model.perform() self.assertEqual('Result = [2, 3, 5, 7]', model.logger.get_last_message())
def test_input_wrong_data(self): model = PrimeNumberViewModel() model.set_start_value(10) model.set_end_value(2) model.perform() wrong_message = 'Что-то пошло не так.\nВозможно первое число оказалось больше второго' self.assertEqual(wrong_message, model.logger.get_last_message())
def test_model_perform_all_message_logging(self): model = PrimeNumberViewModel() model.set_start_value(2) model.set_end_value(10) model.perform() log_message = [ 'Welcome!', 'Setting start value - 2', 'Setting end value - 10', 'Button clicked', 'Interval = range(2, 10)', 'Result = [2, 3, 5, 7]' ] self.assertEqual(log_message, model.logger.get_log_messages()[-6:])
class GUIView: view_model = PrimeNumberViewModel() def __init__(self): self.root = tk.Tk() self.root['bg'] = '#fafafa' self.root.title('Печать всех простых чисел') self.root.geometry('800x400') self.root.resizable(width=True, height=True) self.frame = tk.Frame(self.root, bg='#2b4a54') self.title = tk.Label(self.frame, text='Введите начало и конец промежутка', bg='#619eb3', font=40) self.input_start_value = tk.Entry(self.frame, bg='white', state='normal') self.input_end_value = tk.Entry(self.frame, bg='white') self.btn = tk.Button(self.frame, text='Вывод простых чисел', bg='#6dcae8') self.res = tk.Label(self.frame, text='Здесь будет результат', bg='#619eb3', font=40) self.error_field = tk.Label(self.frame, text='', fg='red', bg='#619eb3', font=('', 12, 'bold')) self.logger_field = tk.Label(self.frame, text='Log:', bg='#619eb3', font=6) self.set_weight_to_grid() self.bind_events() self.mvvm_bind() self.mvvm_back_bind() self.root.mainloop() def set_weight_to_grid(self): self.root.grid_rowconfigure(2, minsize=30) self.root.grid_rowconfigure(5, minsize=30, weight=60) self.frame.place(relx=0.05, rely=0.05, relwidth=0.9, relheight=0.9) self.title.grid(row=0, column=0, columnspan=3, stick='we', padx=5) self.input_start_value.grid(row=1, column=0, stick='wens', padx=5, pady=5) self.input_end_value.grid(row=1, column=2, stick='wens', padx=5, pady=5) self.btn.grid(row=2, column=1, stick='wens') self.res.grid(row=4, column=0, columnspan=3, stick='we', padx=5) self.error_field.grid(row=5, column=0, columnspan=3, stick='we', padx=5) self.logger_field.grid(row=0, column=3, stick='ns', rowspan=30) def bind_events(self): self.input_start_value.bind('<KeyRelease>', self.first_input_changed) self.input_end_value.bind('<KeyRelease>', self.second_input_changed) self.btn.bind('<Button-1>', self.btn_clicked) def btn_clicked(self, event): self.mvvm_bind() self.view_model.perform() self.mvvm_back_bind() def first_input_changed(self, event): self.mvvm_bind() self.mvvm_back_bind() def second_input_changed(self, event): self.mvvm_bind() self.mvvm_back_bind() def mvvm_bind(self): self.view_model.set_start_value(self.input_start_value.get()) self.view_model.set_end_value(self.input_end_value.get()) def mvvm_back_bind(self): self.input_start_value.delete(0, tk.END) self.input_start_value.insert(tk.END, self.view_model.get_start_value()) self.input_end_value.delete(0, tk.END) self.input_end_value.insert(tk.END, self.view_model.get_end_value()) self.btn.config(state=self.view_model.is_button_enable()) self.res.config(text='%s\n' % (get_result_text(self.view_model.get_result()))) self.error_field.config( text='%s\n' % (get_error_text(self.view_model.get_error_message()))) self.logger_field.config( text='%s\n' % (get_log_messages(self.view_model.logger.get_log_messages())))
def test_by_default_button_is_disable(self): model = PrimeNumberViewModel() self.assertEqual('disabled', model.is_button_enable())
def test_get_interval_if_no_values(self): model = PrimeNumberViewModel() model.perform() self.assertEqual('', model.get_interval_label())
def test_get_interval(self): model = PrimeNumberViewModel(1, 10) model.perform() self.assertEqual('range(1, 10)', model.get_interval_label())
def test_when_first_value_is_bigger_than_second(self): model = PrimeNumberViewModel(10, 1) model.perform() error_message = 'Что-то пошло не так.\nВозможно первое число оказалось больше второго' self.assertEqual(error_message, model.get_error_message()) self.assertIsNone(model.get_result())
def test_when_enter_incorrect_values(self): model = PrimeNumberViewModel('asd', '11a') self.assertEqual('disabled', model.is_button_enable())
def test_when_enter_values_display_corrected_list(self): model = PrimeNumberViewModel(1, 10) model.perform() answer = [2, 3, 5, 7] self.assertEqual(answer, model.get_result())
def test_when_clear_second_number_button_disabled(self): model = PrimeNumberViewModel(1, 10) model.set_end_value(None) self.assertEqual('disabled', model.is_button_enable())
def test_when_enter_both_number_button_enabled(self): model = PrimeNumberViewModel(1, 10) self.assertTrue(model.is_button_enable())
def test_set_end_value_logging(self): model = PrimeNumberViewModel() model.set_end_value(10) self.assertEqual('Setting end value - 10', model.logger.get_last_message())
def test_set_start_value_logging(self): model = PrimeNumberViewModel() model.set_start_value(2) self.assertEqual('Setting start value - 2', model.logger.get_last_message())
def test_init_logging(self): model = PrimeNumberViewModel(1, 10) self.assertEqual('Welcome!', model.logger.get_last_message())