From e8fcbed38d38808554edfad8c70f318c78b147fd Mon Sep 17 00:00:00 2001 From: Anastasia Timonova Date: Sun, 6 Dec 2015 19:33:21 +0300 Subject: [PATCH 01/15] modified architecture --- .../src/{ => gui_view}/guiview.py | 3 +- code/timonova-anastasia/src/main.py | 2 +- .../src/{ => model}/matrix.py | 0 .../src/model/tests_for_matrix.py | 7 +- .../src/tests_for_matrix.py | 87 ------------------- .../{ => view_model}/tests_for_viewmodel.py | 2 +- .../src/{ => view_model}/viewmodel.py | 2 +- 7 files changed, 8 insertions(+), 95 deletions(-) rename code/timonova-anastasia/src/{ => gui_view}/guiview.py (99%) rename code/timonova-anastasia/src/{ => model}/matrix.py (100%) delete mode 100644 code/timonova-anastasia/src/tests_for_matrix.py rename code/timonova-anastasia/src/{ => view_model}/tests_for_viewmodel.py (97%) rename code/timonova-anastasia/src/{ => view_model}/viewmodel.py (96%) diff --git a/code/timonova-anastasia/src/guiview.py b/code/timonova-anastasia/src/gui_view/guiview.py similarity index 99% rename from code/timonova-anastasia/src/guiview.py rename to code/timonova-anastasia/src/gui_view/guiview.py index 78b4935dc..1229a340f 100644 --- a/code/timonova-anastasia/src/guiview.py +++ b/code/timonova-anastasia/src/gui_view/guiview.py @@ -1,5 +1,6 @@ import tkinter as tk -import viewmodel + +from view_model import viewmodel class SimpleTableInput(tk.Frame): diff --git a/code/timonova-anastasia/src/main.py b/code/timonova-anastasia/src/main.py index 2e2448728..3bf480613 100644 --- a/code/timonova-anastasia/src/main.py +++ b/code/timonova-anastasia/src/main.py @@ -1,4 +1,4 @@ -import guiview +from gui_view import guiview if __name__ == '__main__': guiview.GuiView().mainloop() diff --git a/code/timonova-anastasia/src/matrix.py b/code/timonova-anastasia/src/model/matrix.py similarity index 100% rename from code/timonova-anastasia/src/matrix.py rename to code/timonova-anastasia/src/model/matrix.py diff --git a/code/timonova-anastasia/src/model/tests_for_matrix.py b/code/timonova-anastasia/src/model/tests_for_matrix.py index 886654618..dff2f1ec8 100644 --- a/code/timonova-anastasia/src/model/tests_for_matrix.py +++ b/code/timonova-anastasia/src/model/tests_for_matrix.py @@ -1,15 +1,14 @@ import unittest -from matrix import Matrix -from matrix import MatrixError +from model.matrix import Matrix +from model.matrix import MatrixError class MatrixTests(unittest.TestCase): def test_check_constructor(self): test_matrix = Matrix.make_from_list([[1, 1]]) - self.assertTrue(test_matrix.cols == 2 and test_matrix.rows == 1) - self.assertTrue(test_matrix.data_lines[0][0] == + self.assertTrue(test_matrix.cols == 2 and test_matrix.rows == 1 and test_matrix.data_lines[0][0] == test_matrix.data_lines[0][1] == 1) def test_create_matrix_with_not_full_last_string(self): diff --git a/code/timonova-anastasia/src/tests_for_matrix.py b/code/timonova-anastasia/src/tests_for_matrix.py deleted file mode 100644 index ed183ce19..000000000 --- a/code/timonova-anastasia/src/tests_for_matrix.py +++ /dev/null @@ -1,87 +0,0 @@ -import unittest - -from matrix import Matrix -from matrix import MatrixError - - -class MatrixTests(unittest.TestCase): - - def test_check_constructor(self): - test_matrix = Matrix.make_from_list([[1, 1]]) - self.assertTrue(test_matrix.cols == 2 and test_matrix.rows == 1 and test_matrix.data_lines[0][0] == - test_matrix.data_lines[0][1] == 1) - - def test_create_matrix_with_not_full_last_string(self): - with self.assertRaises(MatrixError): - Matrix.make_from_list([[1, 1, 1], [1, 1, 1], [1, 1]]) - - def test_create_matrix_with_not_full_first_string(self): - with self.assertRaises(MatrixError): - Matrix.make_from_list([[1, 1], [1, 1, 1], [1, 2, 1]]) - - def test_can_calculate_determinant_of_matrix1x1(self): - test_matrix = Matrix.make_random(1, 1) - det = test_matrix.calculate_det() - self.assertTrue(test_matrix.data_lines[0][0] == det) - - def test_can_write_matrix_as_string(self): - test_matrix = Matrix.make_from_list([[1, 3], [5, 7]]) - self.assertEqual(str(test_matrix), '1 3\n5 7\n') - - def test_check_exception(self): - with self.assertRaises(MatrixError): - test_matrix = Matrix.make_from_list([[1, 3]]) - test_matrix.calculate_det() - - def test_is_matrix_square(self): - test_matrix = Matrix.make_random(3, 3) - self.assertEqual(test_matrix.is_matrix_square(), True) - - def test_is_correct_index(self): - test_matrix = Matrix.make_random(3, 3) - self.assertEqual(test_matrix.is_correct_index(4, 3), False) - - def test_is_matrix_not_square(self): - test_matrix = Matrix.make_random(3, 2) - self.assertEqual(test_matrix.is_matrix_square(), 0) - - def test_can_not_delete_incorrect_col_or_row(self): - test_matrix = Matrix.make_from_list([[1, 3], [5, 7], [5, 7]]) - with self.assertRaises(MatrixError): - Matrix.delete_col_and_row(test_matrix, -100, -500) - - def test_can_calculate_determinant_of_matrix2x2(self): - test_matrix = Matrix.make_from_list([[1, 3], [5, 7]]) - det = test_matrix.calculate_det() - self.assertEqual(det, -8) - - def test_delete_zero_row_and_zero_col_in_matrix(self): - test_matrix = Matrix.delete_col_and_row( - Matrix.make_from_list([[1, 3], [5, 7]]), 0, 0) - det = test_matrix.calculate_det() - self.assertEqual(det, 7) - - def test_can_calculate_determinant_of_matrix3x3(self): - test_matrix = Matrix.make_from_list([[7, 2, 0], [5, 8, 7], [1, 2, 3]]) - det = test_matrix.calculate_det() - self.assertEqual(det, 54) - - def test_can_calculate_minor_0_1(self): - test_matrix = Matrix.delete_col_and_row( - Matrix.make_from_list([[1, 0, -3], [0, 0, 2], [-1, -2, 0]]), 0, 1) - det = test_matrix.calculate_det() - self.assertEqual(det, 2) - - def test_can_calculate_determinant_of_matrix6x6(self): - test_matrix = Matrix.make_from_list([[-1, 2, 3, 4, 5, 6], - [7, 0, 4, -1, 0, -3], - [0, 5, -6, 0, 0, 3], - [1, 0, 3, 4, 5, 6], - [0, 8, 0, 1, 2, 0], - [-4, 0, 6, 0, 0, -5]]) - det = test_matrix.calculate_det() - self.assertEqual(det, -96) - - def test_get_data_line(self): - test_matrix = Matrix.make_from_list([[7, 0], [5, 8]]) - self.assertEqual(test_matrix.get_data_lines(), [[7, 0], [5, 8]]) diff --git a/code/timonova-anastasia/src/tests_for_viewmodel.py b/code/timonova-anastasia/src/view_model/tests_for_viewmodel.py similarity index 97% rename from code/timonova-anastasia/src/tests_for_viewmodel.py rename to code/timonova-anastasia/src/view_model/tests_for_viewmodel.py index ce1e6bed1..553b2ed5f 100644 --- a/code/timonova-anastasia/src/tests_for_viewmodel.py +++ b/code/timonova-anastasia/src/view_model/tests_for_viewmodel.py @@ -1,6 +1,6 @@ import unittest -from viewmodel import ViewModel +from view_model.viewmodel import ViewModel class TestForViewModel(unittest.TestCase): diff --git a/code/timonova-anastasia/src/viewmodel.py b/code/timonova-anastasia/src/view_model/viewmodel.py similarity index 96% rename from code/timonova-anastasia/src/viewmodel.py rename to code/timonova-anastasia/src/view_model/viewmodel.py index 86ddb9114..98ee99036 100644 --- a/code/timonova-anastasia/src/viewmodel.py +++ b/code/timonova-anastasia/src/view_model/viewmodel.py @@ -1,4 +1,4 @@ -from matrix import Matrix +from model.matrix import Matrix class ViewError(Exception): From 831b46ffb30567f43f08108cc0f4e21a382d9079 Mon Sep 17 00:00:00 2001 From: Anastasia Timonova Date: Sun, 6 Dec 2015 19:47:34 +0300 Subject: [PATCH 02/15] rm --cached --- code/timonova-anastasia/src/view_model/tests_for_viewmodel.py | 1 - 1 file changed, 1 deletion(-) diff --git a/code/timonova-anastasia/src/view_model/tests_for_viewmodel.py b/code/timonova-anastasia/src/view_model/tests_for_viewmodel.py index 553b2ed5f..68d966101 100644 --- a/code/timonova-anastasia/src/view_model/tests_for_viewmodel.py +++ b/code/timonova-anastasia/src/view_model/tests_for_viewmodel.py @@ -1,5 +1,4 @@ import unittest - from view_model.viewmodel import ViewModel From c07a179ed4aab821ff90804a2410fa3a7802380b Mon Sep 17 00:00:00 2001 From: Anastasia Timonova Date: Sun, 6 Dec 2015 19:50:32 +0300 Subject: [PATCH 03/15] convert model to my_model --- code/timonova-anastasia/src/main.py | 2 +- .../src/{gui_view => my_gui_view}/__init__.py | 0 .../src/{gui_view => my_gui_view}/guiview.py | 2 +- code/timonova-anastasia/src/{model => my_model}/__init__.py | 0 code/timonova-anastasia/src/{model => my_model}/matrix.py | 0 .../src/{model => my_model}/tests_for_matrix.py | 4 ++-- .../src/{view_model => my_view_model}/__init__.py | 0 .../src/{view_model => my_view_model}/tests_for_viewmodel.py | 2 +- .../src/{view_model => my_view_model}/viewmodel.py | 2 +- 9 files changed, 6 insertions(+), 6 deletions(-) rename code/timonova-anastasia/src/{gui_view => my_gui_view}/__init__.py (100%) rename code/timonova-anastasia/src/{gui_view => my_gui_view}/guiview.py (99%) rename code/timonova-anastasia/src/{model => my_model}/__init__.py (100%) rename code/timonova-anastasia/src/{model => my_model}/matrix.py (100%) rename code/timonova-anastasia/src/{model => my_model}/tests_for_matrix.py (97%) rename code/timonova-anastasia/src/{view_model => my_view_model}/__init__.py (100%) rename code/timonova-anastasia/src/{view_model => my_view_model}/tests_for_viewmodel.py (97%) rename code/timonova-anastasia/src/{view_model => my_view_model}/viewmodel.py (96%) diff --git a/code/timonova-anastasia/src/main.py b/code/timonova-anastasia/src/main.py index 3bf480613..6c20266d5 100644 --- a/code/timonova-anastasia/src/main.py +++ b/code/timonova-anastasia/src/main.py @@ -1,4 +1,4 @@ -from gui_view import guiview +from my_gui_view import guiview if __name__ == '__main__': guiview.GuiView().mainloop() diff --git a/code/timonova-anastasia/src/gui_view/__init__.py b/code/timonova-anastasia/src/my_gui_view/__init__.py similarity index 100% rename from code/timonova-anastasia/src/gui_view/__init__.py rename to code/timonova-anastasia/src/my_gui_view/__init__.py diff --git a/code/timonova-anastasia/src/gui_view/guiview.py b/code/timonova-anastasia/src/my_gui_view/guiview.py similarity index 99% rename from code/timonova-anastasia/src/gui_view/guiview.py rename to code/timonova-anastasia/src/my_gui_view/guiview.py index 1229a340f..1f7cee799 100644 --- a/code/timonova-anastasia/src/gui_view/guiview.py +++ b/code/timonova-anastasia/src/my_gui_view/guiview.py @@ -1,6 +1,6 @@ import tkinter as tk -from view_model import viewmodel +from my_view_model import viewmodel class SimpleTableInput(tk.Frame): diff --git a/code/timonova-anastasia/src/model/__init__.py b/code/timonova-anastasia/src/my_model/__init__.py similarity index 100% rename from code/timonova-anastasia/src/model/__init__.py rename to code/timonova-anastasia/src/my_model/__init__.py diff --git a/code/timonova-anastasia/src/model/matrix.py b/code/timonova-anastasia/src/my_model/matrix.py similarity index 100% rename from code/timonova-anastasia/src/model/matrix.py rename to code/timonova-anastasia/src/my_model/matrix.py diff --git a/code/timonova-anastasia/src/model/tests_for_matrix.py b/code/timonova-anastasia/src/my_model/tests_for_matrix.py similarity index 97% rename from code/timonova-anastasia/src/model/tests_for_matrix.py rename to code/timonova-anastasia/src/my_model/tests_for_matrix.py index dff2f1ec8..dbd85de06 100644 --- a/code/timonova-anastasia/src/model/tests_for_matrix.py +++ b/code/timonova-anastasia/src/my_model/tests_for_matrix.py @@ -1,7 +1,7 @@ import unittest -from model.matrix import Matrix -from model.matrix import MatrixError +from my_model.matrix import Matrix +from my_model.matrix import MatrixError class MatrixTests(unittest.TestCase): diff --git a/code/timonova-anastasia/src/view_model/__init__.py b/code/timonova-anastasia/src/my_view_model/__init__.py similarity index 100% rename from code/timonova-anastasia/src/view_model/__init__.py rename to code/timonova-anastasia/src/my_view_model/__init__.py diff --git a/code/timonova-anastasia/src/view_model/tests_for_viewmodel.py b/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py similarity index 97% rename from code/timonova-anastasia/src/view_model/tests_for_viewmodel.py rename to code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py index 68d966101..6f6ea0f92 100644 --- a/code/timonova-anastasia/src/view_model/tests_for_viewmodel.py +++ b/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py @@ -1,5 +1,5 @@ import unittest -from view_model.viewmodel import ViewModel +from my_view_model.viewmodel import ViewModel class TestForViewModel(unittest.TestCase): diff --git a/code/timonova-anastasia/src/view_model/viewmodel.py b/code/timonova-anastasia/src/my_view_model/viewmodel.py similarity index 96% rename from code/timonova-anastasia/src/view_model/viewmodel.py rename to code/timonova-anastasia/src/my_view_model/viewmodel.py index 98ee99036..1fc4af54d 100644 --- a/code/timonova-anastasia/src/view_model/viewmodel.py +++ b/code/timonova-anastasia/src/my_view_model/viewmodel.py @@ -1,4 +1,4 @@ -from model.matrix import Matrix +from my_model.matrix import Matrix class ViewError(Exception): From 7889642c246e85b985d04e11b413282aad0630b0 Mon Sep 17 00:00:00 2001 From: timonov Date: Sun, 13 Dec 2015 16:36:59 +0300 Subject: [PATCH 04/15] added infrastructure layer --- code/timonova-anastasia/src/main.py | 4 +- .../my_gui_view/{guiview.py => gui_view.py} | 45 ++++++++-------- .../src/my_infrastructure/__init__.py | 0 .../src/my_infrastructure/fake_logger.py | 5 ++ .../src/my_infrastructure/i_logger.py | 13 +++++ .../src/my_infrastructure/real_logger.py | 13 +++++ .../src/my_view_model/tests_for_viewmodel.py | 53 ++++++++++++++++++- .../src/my_view_model/view_model.py | 45 ++++++++++++++++ .../src/my_view_model/viewmodel.py | 35 ------------ 9 files changed, 152 insertions(+), 61 deletions(-) rename code/timonova-anastasia/src/my_gui_view/{guiview.py => gui_view.py} (75%) create mode 100644 code/timonova-anastasia/src/my_infrastructure/__init__.py create mode 100644 code/timonova-anastasia/src/my_infrastructure/fake_logger.py create mode 100644 code/timonova-anastasia/src/my_infrastructure/i_logger.py create mode 100644 code/timonova-anastasia/src/my_infrastructure/real_logger.py create mode 100644 code/timonova-anastasia/src/my_view_model/view_model.py delete mode 100644 code/timonova-anastasia/src/my_view_model/viewmodel.py diff --git a/code/timonova-anastasia/src/main.py b/code/timonova-anastasia/src/main.py index 6c20266d5..c8efa8b24 100644 --- a/code/timonova-anastasia/src/main.py +++ b/code/timonova-anastasia/src/main.py @@ -1,4 +1,4 @@ -from my_gui_view import guiview +from my_gui_view import gui_view if __name__ == '__main__': - guiview.GuiView().mainloop() + gui_view.GuiView().mainloop() diff --git a/code/timonova-anastasia/src/my_gui_view/guiview.py b/code/timonova-anastasia/src/my_gui_view/gui_view.py similarity index 75% rename from code/timonova-anastasia/src/my_gui_view/guiview.py rename to code/timonova-anastasia/src/my_gui_view/gui_view.py index 1f7cee799..5859741bd 100644 --- a/code/timonova-anastasia/src/my_gui_view/guiview.py +++ b/code/timonova-anastasia/src/my_gui_view/gui_view.py @@ -1,11 +1,11 @@ -import tkinter as tk +import Tkinter as Tk -from my_view_model import viewmodel +from my_view_model import view_model -class SimpleTableInput(tk.Frame): +class SimpleTableInput(Tk.Frame): def __init__(self, parent, rows, value): - tk.Frame.__init__(self, parent) + Tk.Frame.__init__(self, parent) self._entry = {} self.rows = rows @@ -15,8 +15,8 @@ def __init__(self, parent, rows, value): for row in range(self.rows): for column in range(self.rows): index = row, column - e = tk.Entry(self, validate="key", validatecommand=check_input) - e.insert(tk.END, str(value[row][column])) + e = Tk.Entry(self, validate="key", validatecommand=check_input) + e.insert(Tk.END, str(value[row][column])) e.grid(row=row, column=column, stick="nsew") self._entry[index] = e for column in range(self.rows): @@ -33,7 +33,8 @@ def get(self): result.append(current_row) return result - def _validate(self, p): + @classmethod + def _validate(cls, p): if p.strip() == "": return True try: @@ -43,40 +44,40 @@ def _validate(self, p): return True -class GuiView(tk.Frame): +class GuiView(Tk.Frame): def __init__(self): - tk.Frame.__init__(self) + Tk.Frame.__init__(self) - self.view_model = viewmodel.ViewModel() - self.view_model_error = viewmodel.ViewError() + self.view_model = view_model.ViewModel() + self.view_model_error = view_model.ViewError() self.master.title("Determinant calculator") self.master.minsize(width=150, height=150) - self.grid(sticky=tk.W + tk.E + tk.N + tk.S) - self.rows_label = tk.Label(self, text=" Enter rows and columns numbers ", fg='black', + self.grid(sticky=Tk.W + Tk.E + Tk.N + Tk.S) + self.rows_label = Tk.Label(self, text=" Enter rows and columns numbers ", fg='black', font="Arial 12", bg="light yellow") self.rows_label.pack() - self.rows = tk.Text(self, height=1, width=20) + self.rows = Tk.Text(self, height=1, width=20) self.rows.pack() - self.enter = tk.Button(self, text="Change matrix rank", width=15, height=1, font="Arial 12", + self.enter = Tk.Button(self, text="Change matrix rank", width=15, height=1, font="Arial 12", bg="light blue", command=self.on_change) self.enter.pack() self.table = SimpleTableInput(self, self.view_model.get_number_of_rows(), self.view_model.get_matrix_as_list()) self.table.pack(side="top", fill="both", expand=True) - self.submit_matrix_for_calc_det = tk.Button(self, text="Submit", width=15, height=1, font="Arial 12", + self.submit_matrix_for_calc_det = Tk.Button(self, text="Submit", width=15, height=1, font="Arial 12", bg="light blue", command=self.on_submit) self.submit_matrix_for_calc_det.pack() - self.answer = tk.Label(self, text="You result", fg='black', font="Arial 12", bg="light yellow") + self.answer = Tk.Label(self, text="You result", fg='black', font="Arial 12", bg="light yellow") self.answer.pack() - self.error_msg = tk.Label(self, text="", fg='black', font="Arial 12", bg="light yellow") + self.error_msg = Tk.Label(self, text="", fg='black', font="Arial 12", bg="light yellow") self.error_msg.pack() self.my_back_bind() def on_submit(self): - if self.view_model.get_number_of_rows() == int(self.rows.get("1.0", tk.END).strip()): + if self.view_model.get_number_of_rows() == int(self.rows.get("1.0", Tk.END).strip()): self.my_bind() self.view_model.calculate_determinant() self.my_back_bind() @@ -88,7 +89,7 @@ def on_change(self): def my_bind(self): try: - self.view_model.set_number_of_rows(int(self.rows.get("1.0", tk.END).strip())) + self.view_model.set_number_of_rows(int(self.rows.get("1.0", Tk.END).strip())) self.error_msg.config(text="") except ValueError: self.error_msg.config(text="Rows count should be number!") @@ -100,8 +101,8 @@ def my_bind(self): self.view_model.update_matrix_content(good_table) def my_back_bind(self): - self.rows.delete("1.0", tk.END) - self.rows.insert(tk.END, self.view_model.get_number_of_rows()) + self.rows.delete("1.0", Tk.END) + self.rows.insert(Tk.END, self.view_model.get_number_of_rows()) matrix_as_list = self.view_model.get_matrix_as_list() self.table.pack_forget() self.table = SimpleTableInput(self, self.view_model.rows, matrix_as_list) diff --git a/code/timonova-anastasia/src/my_infrastructure/__init__.py b/code/timonova-anastasia/src/my_infrastructure/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/code/timonova-anastasia/src/my_infrastructure/fake_logger.py b/code/timonova-anastasia/src/my_infrastructure/fake_logger.py new file mode 100644 index 000000000..becde081b --- /dev/null +++ b/code/timonova-anastasia/src/my_infrastructure/fake_logger.py @@ -0,0 +1,5 @@ +from my_infrastructure.i_logger import ILogger + + +class FakeLogger(ILogger): + pass diff --git a/code/timonova-anastasia/src/my_infrastructure/i_logger.py b/code/timonova-anastasia/src/my_infrastructure/i_logger.py new file mode 100644 index 000000000..7da14e79f --- /dev/null +++ b/code/timonova-anastasia/src/my_infrastructure/i_logger.py @@ -0,0 +1,13 @@ +class ILogger(object): + + def __init__(self): + self.logs_list = [] + + def get_log_messages(self): + return self.logs_list + + def append_messages_in_logs_list(self, message): + self.logs_list.append(message) + + def get_last_message_from_logs_list(self): + return self.logs_list[-1] diff --git a/code/timonova-anastasia/src/my_infrastructure/real_logger.py b/code/timonova-anastasia/src/my_infrastructure/real_logger.py new file mode 100644 index 000000000..1f574235e --- /dev/null +++ b/code/timonova-anastasia/src/my_infrastructure/real_logger.py @@ -0,0 +1,13 @@ +import logging + +from my_infrastructure.i_logger import ILogger + + +class RealLogger(ILogger): + def __init__(self): + super(RealLogger, self).__init__() + logging.basicConfig(filename='matrix.log', level=logging.INFO) + + def append_messages_in_logs_list(self, message): + self.logs_list.append(message) + logging.info(message) diff --git a/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py b/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py index 6f6ea0f92..1958ba872 100644 --- a/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py +++ b/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py @@ -1,11 +1,13 @@ import unittest -from my_view_model.viewmodel import ViewModel +from my_view_model.view_model import ViewModel +from my_infrastructure.fake_logger import FakeLogger +from my_infrastructure.real_logger import RealLogger class TestForViewModel(unittest.TestCase): def setUp(self): - self.view_model = ViewModel() + self.view_model = ViewModel(FakeLogger()) def test_check_number_or_rows_in_init(self): self.assertEqual(self.view_model.get_number_of_rows(), 3) @@ -41,3 +43,50 @@ def test_check_correct_answer(self): self.view_model.update_matrix_content(content) self.view_model.calculate_determinant() self.assertEqual(self.view_model.answer, -12) + + +class TestForViewModeWithFakeLogging(unittest.TestCase): + def setUp(self): + self.view_model = ViewModel(FakeLogger()) + + def test_start_logging(self): + self.assertEqual('Start logging...', self.view_model.my_logger.get_last_message_from_logs_list()) + + def test_get_number_of_rows_logging(self): + self.view_model.get_number_of_rows() + self.assertEqual('Getting matrix\'s rows: 3', self.view_model.my_logger.get_last_message_from_logs_list()) + + def test_set_number_of_rows(self): + self.view_model.set_number_of_rows(4) + self.assertEqual('Setting matrix\'s rows: 4', self.view_model.my_logger.get_last_message_from_logs_list()) + + def test_get_matrix_as_list(self): + self.view_model.get_matrix_as_list() + self.assertEqual('Getting matrix as data lines: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]', + self.view_model.my_logger.get_last_message_from_logs_list()) + + def test_set_answer(self): + self.view_model.set_answer('0') + self.assertEqual('Setting answer: 0', self.view_model.my_logger.get_last_message_from_logs_list()) + + def test_update_matrix_content(self): + content = [[2, 1, 2], [0, 3, 0], [3, 1, 1]] + self.view_model.update_matrix_content(content) + self.assertEqual('Updating matrix\'s content: [[2, 1, 2], [0, 3, 0], [3, 1, 1]]', + self.view_model.my_logger.get_last_message_from_logs_list()) + + def test_calculate_determinant(self): + content = [[2, 1, 2], [0, 3, 0], [3, 1, 1]] + self.view_model.update_matrix_content(content) + self.view_model.calculate_determinant() + self.assertEqual('Calculating determinant: -12', self.view_model.my_logger.get_last_message_from_logs_list()) + + def test_init_zero_matrix_with_new_rank_value(self): + self.view_model.init_zero_matrix_with_new_rank_value() + self.assertEqual('Getting matrix as data lines: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]', + self.view_model.my_logger.get_last_message_from_logs_list()) + + +class TestForViewModeWithRealLogging(TestForViewModeWithFakeLogging): + def setUp(self): + self.view_model = ViewModel(RealLogger()) diff --git a/code/timonova-anastasia/src/my_view_model/view_model.py b/code/timonova-anastasia/src/my_view_model/view_model.py new file mode 100644 index 000000000..9641130a1 --- /dev/null +++ b/code/timonova-anastasia/src/my_view_model/view_model.py @@ -0,0 +1,45 @@ +from my_model.matrix import Matrix +from my_infrastructure.real_logger import RealLogger + + +class ViewError(Exception): + pass + + +class ViewModel: + def __init__(self, my_logger=RealLogger()): + self.matrix = Matrix.make_from_list([[0]*3]*3) + self.rows = 3 + self.answer = '' + self.my_logger = my_logger # RealLogger() + self.my_logger.append_messages_in_logs_list('\n\n## Start logging... ##') + + def get_number_of_rows(self): + self.my_logger.append_messages_in_logs_list('Getting matrix\'s rows: %s' % self.rows) + return self.rows + + def set_number_of_rows(self, rows): + self.rows = rows + self.my_logger.append_messages_in_logs_list('Setting matrix\'s rows: %s' % self.rows) + + def get_matrix_as_list(self): + self.my_logger.append_messages_in_logs_list('Getting matrix as data lines: %s' % self.matrix.get_data_lines()) + return self.matrix.get_data_lines() + + def set_answer(self, answer_str): + self.answer = answer_str + self.my_logger.append_messages_in_logs_list('Setting answer: %s' % self.answer) + + def update_matrix_content(self, content): + self.matrix = Matrix.make_from_list(content) + self.my_logger.append_messages_in_logs_list('Updating matrix\'s content: %s' % self.get_matrix_as_list()) + + def calculate_determinant(self): + self.answer = Matrix.calculate_det(self.matrix) + self.my_logger.append_messages_in_logs_list('Calculating determinant: %s' % self.answer) + return self.answer + + def init_zero_matrix_with_new_rank_value(self): + self.matrix = Matrix.make_random(self.rows, self.rows, 0, 1) + self.my_logger.append_messages_in_logs_list('Initialization zero matrix with new rank value.') + return self.get_matrix_as_list() diff --git a/code/timonova-anastasia/src/my_view_model/viewmodel.py b/code/timonova-anastasia/src/my_view_model/viewmodel.py deleted file mode 100644 index 1fc4af54d..000000000 --- a/code/timonova-anastasia/src/my_view_model/viewmodel.py +++ /dev/null @@ -1,35 +0,0 @@ -from my_model.matrix import Matrix - - -class ViewError(Exception): - pass - - -class ViewModel(): - def __init__(self): - self.matrix = Matrix.make_from_list([[0]*3]*3) - self.rows = 3 - self.answer = '' - - def get_number_of_rows(self): - return self.rows - - def set_number_of_rows(self, rows): - self.rows = rows - - def get_matrix_as_list(self): - return self.matrix.get_data_lines() - - def set_answer(self, answer_str): - self.answer = answer_str - - def update_matrix_content(self, content): - self.matrix = Matrix.make_from_list(content) - - def calculate_determinant(self): - self.answer = Matrix.calculate_det(self.matrix) - return self.answer - - def init_zero_matrix_with_new_rank_value(self): - self.matrix = Matrix.make_random(self.rows, self.rows, 0, 1) - return self.get_matrix_as_list() From 4d7e836f1dc28e78842700d83e65e9823b56ff88 Mon Sep 17 00:00:00 2001 From: timonov Date: Sun, 13 Dec 2015 16:42:51 +0300 Subject: [PATCH 05/15] modified test_start_logging --- .../timonova-anastasia/src/my_view_model/tests_for_viewmodel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py b/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py index 1958ba872..5ac94ddc1 100644 --- a/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py +++ b/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py @@ -50,7 +50,7 @@ def setUp(self): self.view_model = ViewModel(FakeLogger()) def test_start_logging(self): - self.assertEqual('Start logging...', self.view_model.my_logger.get_last_message_from_logs_list()) + self.assertEqual('\n\n## Start logging... ##', self.view_model.my_logger.get_last_message_from_logs_list()) def test_get_number_of_rows_logging(self): self.view_model.get_number_of_rows() From faaba2759b3e7436ebdba9304362ce46f6031e8d Mon Sep 17 00:00:00 2001 From: timonov Date: Sun, 13 Dec 2015 16:48:52 +0300 Subject: [PATCH 06/15] code style --- .../src/my_view_model/tests_for_viewmodel.py | 12 ++++++++---- .../src/my_view_model/view_model.py | 6 ++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py b/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py index 5ac94ddc1..5665bd4d8 100644 --- a/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py +++ b/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py @@ -50,15 +50,18 @@ def setUp(self): self.view_model = ViewModel(FakeLogger()) def test_start_logging(self): - self.assertEqual('\n\n## Start logging... ##', self.view_model.my_logger.get_last_message_from_logs_list()) + self.assertEqual('\n\n## Start logging... ##', + self.view_model.my_logger.get_last_message_from_logs_list()) def test_get_number_of_rows_logging(self): self.view_model.get_number_of_rows() - self.assertEqual('Getting matrix\'s rows: 3', self.view_model.my_logger.get_last_message_from_logs_list()) + self.assertEqual('Getting matrix\'s rows: 3', + self.view_model.my_logger.get_last_message_from_logs_list()) def test_set_number_of_rows(self): self.view_model.set_number_of_rows(4) - self.assertEqual('Setting matrix\'s rows: 4', self.view_model.my_logger.get_last_message_from_logs_list()) + self.assertEqual('Setting matrix\'s rows: 4', + self.view_model.my_logger.get_last_message_from_logs_list()) def test_get_matrix_as_list(self): self.view_model.get_matrix_as_list() @@ -79,7 +82,8 @@ def test_calculate_determinant(self): content = [[2, 1, 2], [0, 3, 0], [3, 1, 1]] self.view_model.update_matrix_content(content) self.view_model.calculate_determinant() - self.assertEqual('Calculating determinant: -12', self.view_model.my_logger.get_last_message_from_logs_list()) + self.assertEqual('Calculating determinant: -12', + self.view_model.my_logger.get_last_message_from_logs_list()) def test_init_zero_matrix_with_new_rank_value(self): self.view_model.init_zero_matrix_with_new_rank_value() diff --git a/code/timonova-anastasia/src/my_view_model/view_model.py b/code/timonova-anastasia/src/my_view_model/view_model.py index 9641130a1..e43903279 100644 --- a/code/timonova-anastasia/src/my_view_model/view_model.py +++ b/code/timonova-anastasia/src/my_view_model/view_model.py @@ -23,7 +23,8 @@ def set_number_of_rows(self, rows): self.my_logger.append_messages_in_logs_list('Setting matrix\'s rows: %s' % self.rows) def get_matrix_as_list(self): - self.my_logger.append_messages_in_logs_list('Getting matrix as data lines: %s' % self.matrix.get_data_lines()) + self.my_logger.append_messages_in_logs_list('Getting matrix as data lines: %s' + % self.matrix.get_data_lines()) return self.matrix.get_data_lines() def set_answer(self, answer_str): @@ -32,7 +33,8 @@ def set_answer(self, answer_str): def update_matrix_content(self, content): self.matrix = Matrix.make_from_list(content) - self.my_logger.append_messages_in_logs_list('Updating matrix\'s content: %s' % self.get_matrix_as_list()) + self.my_logger.append_messages_in_logs_list('Updating matrix\'s content: %s' + % self.get_matrix_as_list()) def calculate_determinant(self): self.answer = Matrix.calculate_det(self.matrix) From 08b5bc11b49868dd5074f25f8ddd4e879ffd4712 Mon Sep 17 00:00:00 2001 From: timonov Date: Sun, 13 Dec 2015 17:04:14 +0300 Subject: [PATCH 07/15] added tests for logger --- .../src/my_infrastructure/i_logger.py | 2 +- .../my_infrastructure/test_for_real_logger.py | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 code/timonova-anastasia/src/my_infrastructure/test_for_real_logger.py diff --git a/code/timonova-anastasia/src/my_infrastructure/i_logger.py b/code/timonova-anastasia/src/my_infrastructure/i_logger.py index 7da14e79f..64eac1f7a 100644 --- a/code/timonova-anastasia/src/my_infrastructure/i_logger.py +++ b/code/timonova-anastasia/src/my_infrastructure/i_logger.py @@ -3,7 +3,7 @@ class ILogger(object): def __init__(self): self.logs_list = [] - def get_log_messages(self): + def get_logs_list(self): return self.logs_list def append_messages_in_logs_list(self, message): diff --git a/code/timonova-anastasia/src/my_infrastructure/test_for_real_logger.py b/code/timonova-anastasia/src/my_infrastructure/test_for_real_logger.py new file mode 100644 index 000000000..0bbee3413 --- /dev/null +++ b/code/timonova-anastasia/src/my_infrastructure/test_for_real_logger.py @@ -0,0 +1,29 @@ +import unittest + +from my_infrastructure.fake_logger import FakeLogger + + +class TestForLogger(unittest.TestCase): + def setUp(self): + self.my_logger = FakeLogger() + + def test_can_create_logger(self): + self.assertTrue(isinstance(self.my_logger, FakeLogger)) + + def test_by_default_log_is_empty(self): + log = self.my_logger.get_logs_list() + self.assertEqual(log, []) + + def test_state_after_append_messages_in_logs_list(self): + self.my_logger.append_messages_in_logs_list('## testing line0 ##') + self.assertEqual('## testing line0 ##', self.my_logger.get_last_message_from_logs_list()) + + def test_can_get_last_log(self): + self.my_logger.append_messages_in_logs_list('## testing line1 ##') + self.my_logger.append_messages_in_logs_list('## testing line2 ##') + self.assertEqual('## testing line2 ##', self.my_logger.get_last_message_from_logs_list()) + + def test_can_log_several_messages(self): + self.my_logger.append_messages_in_logs_list('## testing line3 ##') + self.my_logger.append_messages_in_logs_list('## testing line4 ##') + self.assertEqual(['## testing line3 ##', '## testing line4 ##'], self.my_logger.get_logs_list()) \ No newline at end of file From bd71178dddb6b52522844aeedb18a342215a3ec6 Mon Sep 17 00:00:00 2001 From: timonov Date: Sun, 13 Dec 2015 17:11:14 +0300 Subject: [PATCH 08/15] added tests for logger --- .../src/my_infrastructure/test_for_real_logger.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/timonova-anastasia/src/my_infrastructure/test_for_real_logger.py b/code/timonova-anastasia/src/my_infrastructure/test_for_real_logger.py index 0bbee3413..914764fcb 100644 --- a/code/timonova-anastasia/src/my_infrastructure/test_for_real_logger.py +++ b/code/timonova-anastasia/src/my_infrastructure/test_for_real_logger.py @@ -26,4 +26,4 @@ def test_can_get_last_log(self): def test_can_log_several_messages(self): self.my_logger.append_messages_in_logs_list('## testing line3 ##') self.my_logger.append_messages_in_logs_list('## testing line4 ##') - self.assertEqual(['## testing line3 ##', '## testing line4 ##'], self.my_logger.get_logs_list()) \ No newline at end of file + self.assertEqual(['## testing line3 ##', '## testing line4 ##'], self.my_logger.get_logs_list()) From ef3bec652eb973a997287e3ede2feb981b6f0d8f Mon Sep 17 00:00:00 2001 From: Anastasia Timonova Date: Mon, 14 Dec 2015 09:46:02 +0300 Subject: [PATCH 09/15] added label for writing logs on gui --- .../src/my_gui_view/gui_view.py | 10 ++++++++- .../src/my_infrastructure/fake_logger.py | 2 +- .../{i_logger.py => ilogger.py} | 2 +- .../src/my_infrastructure/real_logger.py | 2 +- ..._for_real_logger.py => test_for_logger.py} | 12 +++++----- .../src/my_view_model/view_model.py | 22 +++++++++---------- 6 files changed, 29 insertions(+), 21 deletions(-) rename code/timonova-anastasia/src/my_infrastructure/{i_logger.py => ilogger.py} (82%) rename code/timonova-anastasia/src/my_infrastructure/{test_for_real_logger.py => test_for_logger.py} (64%) diff --git a/code/timonova-anastasia/src/my_gui_view/gui_view.py b/code/timonova-anastasia/src/my_gui_view/gui_view.py index 5859741bd..e8cc708a3 100644 --- a/code/timonova-anastasia/src/my_gui_view/gui_view.py +++ b/code/timonova-anastasia/src/my_gui_view/gui_view.py @@ -7,6 +7,7 @@ class SimpleTableInput(Tk.Frame): def __init__(self, parent, rows, value): Tk.Frame.__init__(self, parent) + self._entry = {} self._entry = {} self.rows = rows @@ -73,7 +74,8 @@ def __init__(self): self.answer.pack() self.error_msg = Tk.Label(self, text="", fg='black', font="Arial 12", bg="light yellow") self.error_msg.pack() - + self.log_label = Tk.Label(self, text="", fg='black', font="Arial 12", bg="light yellow") + self.log_label.pack() self.my_back_bind() def on_submit(self): @@ -93,6 +95,9 @@ def my_bind(self): self.error_msg.config(text="") except ValueError: self.error_msg.config(text="Rows count should be number!") + logger_text = self.view_model.my_logger.get_last_message_from_logs_list() + print("logger_text", logger_text) + self.log_label.config(text=logger_text) self.view_model.set_answer('') table_raw_text = self.table.get() good_table = list() @@ -101,6 +106,9 @@ def my_bind(self): self.view_model.update_matrix_content(good_table) def my_back_bind(self): + logger_text = self.view_model.my_logger.get_last_message_from_logs_list() + print("logger_text", logger_text) + self.log_label.config(text=logger_text) self.rows.delete("1.0", Tk.END) self.rows.insert(Tk.END, self.view_model.get_number_of_rows()) matrix_as_list = self.view_model.get_matrix_as_list() diff --git a/code/timonova-anastasia/src/my_infrastructure/fake_logger.py b/code/timonova-anastasia/src/my_infrastructure/fake_logger.py index becde081b..e4dd72da0 100644 --- a/code/timonova-anastasia/src/my_infrastructure/fake_logger.py +++ b/code/timonova-anastasia/src/my_infrastructure/fake_logger.py @@ -1,4 +1,4 @@ -from my_infrastructure.i_logger import ILogger +from my_infrastructure.ilogger import ILogger class FakeLogger(ILogger): diff --git a/code/timonova-anastasia/src/my_infrastructure/i_logger.py b/code/timonova-anastasia/src/my_infrastructure/ilogger.py similarity index 82% rename from code/timonova-anastasia/src/my_infrastructure/i_logger.py rename to code/timonova-anastasia/src/my_infrastructure/ilogger.py index 64eac1f7a..bbf865adf 100644 --- a/code/timonova-anastasia/src/my_infrastructure/i_logger.py +++ b/code/timonova-anastasia/src/my_infrastructure/ilogger.py @@ -6,7 +6,7 @@ def __init__(self): def get_logs_list(self): return self.logs_list - def append_messages_in_logs_list(self, message): + def append_message_to_logs_list(self, message): self.logs_list.append(message) def get_last_message_from_logs_list(self): diff --git a/code/timonova-anastasia/src/my_infrastructure/real_logger.py b/code/timonova-anastasia/src/my_infrastructure/real_logger.py index 1f574235e..3df4337a4 100644 --- a/code/timonova-anastasia/src/my_infrastructure/real_logger.py +++ b/code/timonova-anastasia/src/my_infrastructure/real_logger.py @@ -1,6 +1,6 @@ import logging -from my_infrastructure.i_logger import ILogger +from my_infrastructure.ilogger import ILogger class RealLogger(ILogger): diff --git a/code/timonova-anastasia/src/my_infrastructure/test_for_real_logger.py b/code/timonova-anastasia/src/my_infrastructure/test_for_logger.py similarity index 64% rename from code/timonova-anastasia/src/my_infrastructure/test_for_real_logger.py rename to code/timonova-anastasia/src/my_infrastructure/test_for_logger.py index 914764fcb..4a02453cc 100644 --- a/code/timonova-anastasia/src/my_infrastructure/test_for_real_logger.py +++ b/code/timonova-anastasia/src/my_infrastructure/test_for_logger.py @@ -14,16 +14,16 @@ def test_by_default_log_is_empty(self): log = self.my_logger.get_logs_list() self.assertEqual(log, []) - def test_state_after_append_messages_in_logs_list(self): - self.my_logger.append_messages_in_logs_list('## testing line0 ##') + def test_state_after_append_message_to_logs_list(self): + self.my_logger.append_message_to_logs_list('## testing line0 ##') self.assertEqual('## testing line0 ##', self.my_logger.get_last_message_from_logs_list()) def test_can_get_last_log(self): - self.my_logger.append_messages_in_logs_list('## testing line1 ##') - self.my_logger.append_messages_in_logs_list('## testing line2 ##') + self.my_logger.append_message_to_logs_list('## testing line1 ##') + self.my_logger.append_message_to_logs_list('## testing line2 ##') self.assertEqual('## testing line2 ##', self.my_logger.get_last_message_from_logs_list()) def test_can_log_several_messages(self): - self.my_logger.append_messages_in_logs_list('## testing line3 ##') - self.my_logger.append_messages_in_logs_list('## testing line4 ##') + self.my_logger.append_message_to_logs_list('## testing line3 ##') + self.my_logger.append_message_to_logs_list('## testing line4 ##') self.assertEqual(['## testing line3 ##', '## testing line4 ##'], self.my_logger.get_logs_list()) diff --git a/code/timonova-anastasia/src/my_view_model/view_model.py b/code/timonova-anastasia/src/my_view_model/view_model.py index e43903279..db14c6440 100644 --- a/code/timonova-anastasia/src/my_view_model/view_model.py +++ b/code/timonova-anastasia/src/my_view_model/view_model.py @@ -11,37 +11,37 @@ def __init__(self, my_logger=RealLogger()): self.matrix = Matrix.make_from_list([[0]*3]*3) self.rows = 3 self.answer = '' - self.my_logger = my_logger # RealLogger() - self.my_logger.append_messages_in_logs_list('\n\n## Start logging... ##') + self.my_logger = my_logger + self.my_logger.append_message_to_logs_list('\n\n## Start logging... ##') def get_number_of_rows(self): - self.my_logger.append_messages_in_logs_list('Getting matrix\'s rows: %s' % self.rows) + self.my_logger.append_message_to_logs_list('Getting matrix\'s rows: %s' % self.rows) return self.rows def set_number_of_rows(self, rows): self.rows = rows - self.my_logger.append_messages_in_logs_list('Setting matrix\'s rows: %s' % self.rows) + self.my_logger.append_message_to_logs_list('Setting matrix\'s rows: %s' % self.rows) def get_matrix_as_list(self): - self.my_logger.append_messages_in_logs_list('Getting matrix as data lines: %s' - % self.matrix.get_data_lines()) + self.my_logger.append_message_to_logs_list('Getting matrix as data lines: %s' + % self.matrix.get_data_lines()) return self.matrix.get_data_lines() def set_answer(self, answer_str): self.answer = answer_str - self.my_logger.append_messages_in_logs_list('Setting answer: %s' % self.answer) + self.my_logger.append_message_to_logs_list('Setting answer: %s' % self.answer) def update_matrix_content(self, content): self.matrix = Matrix.make_from_list(content) - self.my_logger.append_messages_in_logs_list('Updating matrix\'s content: %s' - % self.get_matrix_as_list()) + self.my_logger.append_message_to_logs_list('Updating matrix\'s content: %s' + % self.get_matrix_as_list()) def calculate_determinant(self): self.answer = Matrix.calculate_det(self.matrix) - self.my_logger.append_messages_in_logs_list('Calculating determinant: %s' % self.answer) + self.my_logger.append_message_to_logs_list('Calculating determinant: %s' % self.answer) return self.answer def init_zero_matrix_with_new_rank_value(self): self.matrix = Matrix.make_random(self.rows, self.rows, 0, 1) - self.my_logger.append_messages_in_logs_list('Initialization zero matrix with new rank value.') + self.my_logger.append_message_to_logs_list('Initialization zero matrix with new rank value.') return self.get_matrix_as_list() From 7c4cf34dc2ad155b8345521c775d28d3a83f17f6 Mon Sep 17 00:00:00 2001 From: Anastasia Timonova Date: Mon, 14 Dec 2015 09:48:30 +0300 Subject: [PATCH 10/15] fixed some issues --- code/timonova-anastasia/src/my_infrastructure/real_logger.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/timonova-anastasia/src/my_infrastructure/real_logger.py b/code/timonova-anastasia/src/my_infrastructure/real_logger.py index 3df4337a4..b35aed7b3 100644 --- a/code/timonova-anastasia/src/my_infrastructure/real_logger.py +++ b/code/timonova-anastasia/src/my_infrastructure/real_logger.py @@ -8,6 +8,6 @@ def __init__(self): super(RealLogger, self).__init__() logging.basicConfig(filename='matrix.log', level=logging.INFO) - def append_messages_in_logs_list(self, message): + def append_message_to_logs_list(self, message): self.logs_list.append(message) logging.info(message) From 0998c774aa465cd8da3bcbf2382d804951c5b75e Mon Sep 17 00:00:00 2001 From: Anastasia Timonova Date: Mon, 14 Dec 2015 10:30:23 +0300 Subject: [PATCH 11/15] fixed some issues --- code/timonova-anastasia/src/my_gui_view/gui_view.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/timonova-anastasia/src/my_gui_view/gui_view.py b/code/timonova-anastasia/src/my_gui_view/gui_view.py index e8cc708a3..0bd715a9d 100644 --- a/code/timonova-anastasia/src/my_gui_view/gui_view.py +++ b/code/timonova-anastasia/src/my_gui_view/gui_view.py @@ -7,7 +7,6 @@ class SimpleTableInput(Tk.Frame): def __init__(self, parent, rows, value): Tk.Frame.__init__(self, parent) - self._entry = {} self._entry = {} self.rows = rows @@ -96,7 +95,6 @@ def my_bind(self): except ValueError: self.error_msg.config(text="Rows count should be number!") logger_text = self.view_model.my_logger.get_last_message_from_logs_list() - print("logger_text", logger_text) self.log_label.config(text=logger_text) self.view_model.set_answer('') table_raw_text = self.table.get() @@ -107,7 +105,6 @@ def my_bind(self): def my_back_bind(self): logger_text = self.view_model.my_logger.get_last_message_from_logs_list() - print("logger_text", logger_text) self.log_label.config(text=logger_text) self.rows.delete("1.0", Tk.END) self.rows.insert(Tk.END, self.view_model.get_number_of_rows()) From 49c9dc3677ad91e93d4bededebaf9ffce0f91f3a Mon Sep 17 00:00:00 2001 From: Anastasia Timonova Date: Mon, 14 Dec 2015 17:42:30 +0300 Subject: [PATCH 12/15] fixed some issues --- code/timonova-anastasia/src/my_gui_view/gui_view.py | 1 - 1 file changed, 1 deletion(-) diff --git a/code/timonova-anastasia/src/my_gui_view/gui_view.py b/code/timonova-anastasia/src/my_gui_view/gui_view.py index 0bd715a9d..43662f079 100644 --- a/code/timonova-anastasia/src/my_gui_view/gui_view.py +++ b/code/timonova-anastasia/src/my_gui_view/gui_view.py @@ -49,7 +49,6 @@ def __init__(self): Tk.Frame.__init__(self) self.view_model = view_model.ViewModel() - self.view_model_error = view_model.ViewError() self.master.title("Determinant calculator") self.master.minsize(width=150, height=150) From 0d40568e287ea2a1917b66a869881dacca3d5bd5 Mon Sep 17 00:00:00 2001 From: Anastasia Timonova Date: Mon, 14 Dec 2015 18:34:17 +0300 Subject: [PATCH 13/15] modified log method for writing some logs in the same time --- .../src/my_gui_view/gui_view.py | 5 ++-- .../src/my_infrastructure/ilogger.py | 4 +-- .../src/my_infrastructure/test_for_logger.py | 4 +-- .../src/my_view_model/tests_for_viewmodel.py | 30 +++++++++---------- .../src/my_view_model/view_model.py | 4 --- 5 files changed, 21 insertions(+), 26 deletions(-) diff --git a/code/timonova-anastasia/src/my_gui_view/gui_view.py b/code/timonova-anastasia/src/my_gui_view/gui_view.py index 43662f079..d8340be6c 100644 --- a/code/timonova-anastasia/src/my_gui_view/gui_view.py +++ b/code/timonova-anastasia/src/my_gui_view/gui_view.py @@ -93,8 +93,6 @@ def my_bind(self): self.error_msg.config(text="") except ValueError: self.error_msg.config(text="Rows count should be number!") - logger_text = self.view_model.my_logger.get_last_message_from_logs_list() - self.log_label.config(text=logger_text) self.view_model.set_answer('') table_raw_text = self.table.get() good_table = list() @@ -103,7 +101,8 @@ def my_bind(self): self.view_model.update_matrix_content(good_table) def my_back_bind(self): - logger_text = self.view_model.my_logger.get_last_message_from_logs_list() + count_log_messages = 6 + logger_text = '\n'.join(self.view_model.my_logger.get_last_message_from_logs_list(count_log_messages)) self.log_label.config(text=logger_text) self.rows.delete("1.0", Tk.END) self.rows.insert(Tk.END, self.view_model.get_number_of_rows()) diff --git a/code/timonova-anastasia/src/my_infrastructure/ilogger.py b/code/timonova-anastasia/src/my_infrastructure/ilogger.py index bbf865adf..d147092f2 100644 --- a/code/timonova-anastasia/src/my_infrastructure/ilogger.py +++ b/code/timonova-anastasia/src/my_infrastructure/ilogger.py @@ -9,5 +9,5 @@ def get_logs_list(self): def append_message_to_logs_list(self, message): self.logs_list.append(message) - def get_last_message_from_logs_list(self): - return self.logs_list[-1] + def get_last_message_from_logs_list(self, count): + return self.logs_list[-count:] diff --git a/code/timonova-anastasia/src/my_infrastructure/test_for_logger.py b/code/timonova-anastasia/src/my_infrastructure/test_for_logger.py index 4a02453cc..3062e0493 100644 --- a/code/timonova-anastasia/src/my_infrastructure/test_for_logger.py +++ b/code/timonova-anastasia/src/my_infrastructure/test_for_logger.py @@ -16,12 +16,12 @@ def test_by_default_log_is_empty(self): def test_state_after_append_message_to_logs_list(self): self.my_logger.append_message_to_logs_list('## testing line0 ##') - self.assertEqual('## testing line0 ##', self.my_logger.get_last_message_from_logs_list()) + self.assertEqual(['## testing line0 ##'], self.my_logger.get_last_message_from_logs_list(1)) def test_can_get_last_log(self): self.my_logger.append_message_to_logs_list('## testing line1 ##') self.my_logger.append_message_to_logs_list('## testing line2 ##') - self.assertEqual('## testing line2 ##', self.my_logger.get_last_message_from_logs_list()) + self.assertEqual(['## testing line2 ##'], self.my_logger.get_last_message_from_logs_list(1)) def test_can_log_several_messages(self): self.my_logger.append_message_to_logs_list('## testing line3 ##') diff --git a/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py b/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py index 5665bd4d8..5af6cdfbb 100644 --- a/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py +++ b/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py @@ -50,45 +50,45 @@ def setUp(self): self.view_model = ViewModel(FakeLogger()) def test_start_logging(self): - self.assertEqual('\n\n## Start logging... ##', - self.view_model.my_logger.get_last_message_from_logs_list()) + self.assertEqual(['\n\n## Start logging... ##'], + self.view_model.my_logger.get_last_message_from_logs_list(1)) def test_get_number_of_rows_logging(self): self.view_model.get_number_of_rows() - self.assertEqual('Getting matrix\'s rows: 3', - self.view_model.my_logger.get_last_message_from_logs_list()) + self.assertEqual(['Getting matrix\'s rows: 3'], + self.view_model.my_logger.get_last_message_from_logs_list(1)) def test_set_number_of_rows(self): self.view_model.set_number_of_rows(4) - self.assertEqual('Setting matrix\'s rows: 4', - self.view_model.my_logger.get_last_message_from_logs_list()) + self.assertEqual(['Setting matrix\'s rows: 4'], + self.view_model.my_logger.get_last_message_from_logs_list(1)) def test_get_matrix_as_list(self): self.view_model.get_matrix_as_list() - self.assertEqual('Getting matrix as data lines: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]', - self.view_model.my_logger.get_last_message_from_logs_list()) + self.assertEqual(['Getting matrix as data lines: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]'], + self.view_model.my_logger.get_last_message_from_logs_list(1)) def test_set_answer(self): self.view_model.set_answer('0') - self.assertEqual('Setting answer: 0', self.view_model.my_logger.get_last_message_from_logs_list()) + self.assertEqual(['Setting answer: 0'], self.view_model.my_logger.get_last_message_from_logs_list(1)) def test_update_matrix_content(self): content = [[2, 1, 2], [0, 3, 0], [3, 1, 1]] self.view_model.update_matrix_content(content) - self.assertEqual('Updating matrix\'s content: [[2, 1, 2], [0, 3, 0], [3, 1, 1]]', - self.view_model.my_logger.get_last_message_from_logs_list()) + self.assertEqual(['Updating matrix\'s content: [[2, 1, 2], [0, 3, 0], [3, 1, 1]]'], + self.view_model.my_logger.get_last_message_from_logs_list(1)) def test_calculate_determinant(self): content = [[2, 1, 2], [0, 3, 0], [3, 1, 1]] self.view_model.update_matrix_content(content) self.view_model.calculate_determinant() - self.assertEqual('Calculating determinant: -12', - self.view_model.my_logger.get_last_message_from_logs_list()) + self.assertEqual(['Calculating determinant: -12'], + self.view_model.my_logger.get_last_message_from_logs_list(1)) def test_init_zero_matrix_with_new_rank_value(self): self.view_model.init_zero_matrix_with_new_rank_value() - self.assertEqual('Getting matrix as data lines: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]', - self.view_model.my_logger.get_last_message_from_logs_list()) + self.assertEqual(['Getting matrix as data lines: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]'], + self.view_model.my_logger.get_last_message_from_logs_list(1)) class TestForViewModeWithRealLogging(TestForViewModeWithFakeLogging): diff --git a/code/timonova-anastasia/src/my_view_model/view_model.py b/code/timonova-anastasia/src/my_view_model/view_model.py index db14c6440..a9ee33686 100644 --- a/code/timonova-anastasia/src/my_view_model/view_model.py +++ b/code/timonova-anastasia/src/my_view_model/view_model.py @@ -2,10 +2,6 @@ from my_infrastructure.real_logger import RealLogger -class ViewError(Exception): - pass - - class ViewModel: def __init__(self, my_logger=RealLogger()): self.matrix = Matrix.make_from_list([[0]*3]*3) From 53f142eb1b575293b3bb41ffd7fc9f9072db54fd Mon Sep 17 00:00:00 2001 From: Anastasia Timonova Date: Tue, 15 Dec 2015 11:48:57 +0300 Subject: [PATCH 14/15] renamed method and modified local variable --- .../src/my_gui_view/gui_view.py | 5 +++-- .../src/my_infrastructure/ilogger.py | 2 +- .../src/my_infrastructure/test_for_logger.py | 4 ++-- .../src/my_view_model/tests_for_viewmodel.py | 16 ++++++++-------- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/code/timonova-anastasia/src/my_gui_view/gui_view.py b/code/timonova-anastasia/src/my_gui_view/gui_view.py index d8340be6c..42c1c152b 100644 --- a/code/timonova-anastasia/src/my_gui_view/gui_view.py +++ b/code/timonova-anastasia/src/my_gui_view/gui_view.py @@ -47,6 +47,7 @@ def _validate(cls, p): class GuiView(Tk.Frame): def __init__(self): Tk.Frame.__init__(self) + self.count_log_messages = 6 self.view_model = view_model.ViewModel() self.master.title("Determinant calculator") @@ -101,8 +102,8 @@ def my_bind(self): self.view_model.update_matrix_content(good_table) def my_back_bind(self): - count_log_messages = 6 - logger_text = '\n'.join(self.view_model.my_logger.get_last_message_from_logs_list(count_log_messages)) + + logger_text = '\n'.join(self.view_model.my_logger.get_last_message_from_logs_list(self.count_log_messages)) self.log_label.config(text=logger_text) self.rows.delete("1.0", Tk.END) self.rows.insert(Tk.END, self.view_model.get_number_of_rows()) diff --git a/code/timonova-anastasia/src/my_infrastructure/ilogger.py b/code/timonova-anastasia/src/my_infrastructure/ilogger.py index d147092f2..bbe4875a8 100644 --- a/code/timonova-anastasia/src/my_infrastructure/ilogger.py +++ b/code/timonova-anastasia/src/my_infrastructure/ilogger.py @@ -9,5 +9,5 @@ def get_logs_list(self): def append_message_to_logs_list(self, message): self.logs_list.append(message) - def get_last_message_from_logs_list(self, count): + def get_last_messages_from_logs_list(self, count): return self.logs_list[-count:] diff --git a/code/timonova-anastasia/src/my_infrastructure/test_for_logger.py b/code/timonova-anastasia/src/my_infrastructure/test_for_logger.py index 3062e0493..2027a4871 100644 --- a/code/timonova-anastasia/src/my_infrastructure/test_for_logger.py +++ b/code/timonova-anastasia/src/my_infrastructure/test_for_logger.py @@ -16,12 +16,12 @@ def test_by_default_log_is_empty(self): def test_state_after_append_message_to_logs_list(self): self.my_logger.append_message_to_logs_list('## testing line0 ##') - self.assertEqual(['## testing line0 ##'], self.my_logger.get_last_message_from_logs_list(1)) + self.assertEqual(['## testing line0 ##'], self.my_logger.get_last_messages_from_logs_list(1)) def test_can_get_last_log(self): self.my_logger.append_message_to_logs_list('## testing line1 ##') self.my_logger.append_message_to_logs_list('## testing line2 ##') - self.assertEqual(['## testing line2 ##'], self.my_logger.get_last_message_from_logs_list(1)) + self.assertEqual(['## testing line2 ##'], self.my_logger.get_last_messages_from_logs_list(1)) def test_can_log_several_messages(self): self.my_logger.append_message_to_logs_list('## testing line3 ##') diff --git a/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py b/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py index 5af6cdfbb..10b9183b9 100644 --- a/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py +++ b/code/timonova-anastasia/src/my_view_model/tests_for_viewmodel.py @@ -51,44 +51,44 @@ def setUp(self): def test_start_logging(self): self.assertEqual(['\n\n## Start logging... ##'], - self.view_model.my_logger.get_last_message_from_logs_list(1)) + self.view_model.my_logger.get_last_messages_from_logs_list(1)) def test_get_number_of_rows_logging(self): self.view_model.get_number_of_rows() self.assertEqual(['Getting matrix\'s rows: 3'], - self.view_model.my_logger.get_last_message_from_logs_list(1)) + self.view_model.my_logger.get_last_messages_from_logs_list(1)) def test_set_number_of_rows(self): self.view_model.set_number_of_rows(4) self.assertEqual(['Setting matrix\'s rows: 4'], - self.view_model.my_logger.get_last_message_from_logs_list(1)) + self.view_model.my_logger.get_last_messages_from_logs_list(1)) def test_get_matrix_as_list(self): self.view_model.get_matrix_as_list() self.assertEqual(['Getting matrix as data lines: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]'], - self.view_model.my_logger.get_last_message_from_logs_list(1)) + self.view_model.my_logger.get_last_messages_from_logs_list(1)) def test_set_answer(self): self.view_model.set_answer('0') - self.assertEqual(['Setting answer: 0'], self.view_model.my_logger.get_last_message_from_logs_list(1)) + self.assertEqual(['Setting answer: 0'], self.view_model.my_logger.get_last_messages_from_logs_list(1)) def test_update_matrix_content(self): content = [[2, 1, 2], [0, 3, 0], [3, 1, 1]] self.view_model.update_matrix_content(content) self.assertEqual(['Updating matrix\'s content: [[2, 1, 2], [0, 3, 0], [3, 1, 1]]'], - self.view_model.my_logger.get_last_message_from_logs_list(1)) + self.view_model.my_logger.get_last_messages_from_logs_list(1)) def test_calculate_determinant(self): content = [[2, 1, 2], [0, 3, 0], [3, 1, 1]] self.view_model.update_matrix_content(content) self.view_model.calculate_determinant() self.assertEqual(['Calculating determinant: -12'], - self.view_model.my_logger.get_last_message_from_logs_list(1)) + self.view_model.my_logger.get_last_messages_from_logs_list(1)) def test_init_zero_matrix_with_new_rank_value(self): self.view_model.init_zero_matrix_with_new_rank_value() self.assertEqual(['Getting matrix as data lines: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]'], - self.view_model.my_logger.get_last_message_from_logs_list(1)) + self.view_model.my_logger.get_last_messages_from_logs_list(1)) class TestForViewModeWithRealLogging(TestForViewModeWithFakeLogging): From 6fa3d41ff042d62a59446191f723c408c0f7095d Mon Sep 17 00:00:00 2001 From: Anastasia Timonova Date: Tue, 15 Dec 2015 11:52:21 +0300 Subject: [PATCH 15/15] sty code issue --- code/timonova-anastasia/src/my_gui_view/gui_view.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/timonova-anastasia/src/my_gui_view/gui_view.py b/code/timonova-anastasia/src/my_gui_view/gui_view.py index 42c1c152b..1bb154b06 100644 --- a/code/timonova-anastasia/src/my_gui_view/gui_view.py +++ b/code/timonova-anastasia/src/my_gui_view/gui_view.py @@ -103,7 +103,8 @@ def my_bind(self): def my_back_bind(self): - logger_text = '\n'.join(self.view_model.my_logger.get_last_message_from_logs_list(self.count_log_messages)) + logger_text = '\n'.join(self.view_model.my_logger. + get_last_messages_from_logs_list(self.count_log_messages)) self.log_label.config(text=logger_text) self.rows.delete("1.0", Tk.END) self.rows.insert(Tk.END, self.view_model.get_number_of_rows())