def test_remove_table(self): test_table_1 = Table('test_table_1', 2, 3, {'col_1': 'Liczba całkowita', 'col_2': 'Tekst'}, [[1, 'row_1'], [2, 'row_2'], [3, 'row_3']]) test_table_2 = Table('test_table_2', 2, 3, {'col_1': 'Liczba całkowita', 'col_2': 'Tekst'}, [[1, 'row_1'], [2, 'row_2'], [3, 'row_3']]) project_model = ProjectModel() project_model.add_table(test_table_1) project_model.add_table(test_table_2) project_model.remove_table('test_table_1') self.assertNotIn(test_table_1, project_model.get_structure()) self.assertIn(test_table_2, project_model.get_structure())
def test_add_table(self): test_table = Table('test_table', 2, 3, {'col_1': 'Liczba całkowita', 'col_2': 'Tekst'}, [[1, 'row_1'], [2, 'row_2'], [3, 'row_3']]) project_model = ProjectModel() project_model.add_table(test_table) self.assertEqual(str(test_table), str(project_model.get_table('test_table')))
def edit_row(self): """ edit row method this method checks if table and raw were chosen from combo boxes and initializes new EditRowsWindow object :return: """ try: current_table = self.__combo_box_1.currentText() current_row = self.__combo_box_2.currentText() self.__project_controller.check_removed_table_name(current_table) self.__project_controller.check_removed_row(current_row) new_table = Table( current_table, self.__project_model.get_table( current_table).get_number_of_columns(), 1, self.__project_model.get_table( current_table).get_column_dict(), [ self.__project_model.get_table_row( current_table, self.__project_model.get_row_index( current_table, current_row)) ]) edit_row_window = EditRowsWindow(self.__project_model, new_table) edit_row_window.setModal(True) edit_row_window.exec() self.set_combo_box_2() except Exception as exception: warning = WarningWindow(str(exception)) warning.setModal(True) warning.exec()
def test_add_row(self): test_table_1 = Table('test_table_1', 2, 3, {'col_1': 'Liczba całkowita', 'col_2': 'Tekst'}, [[1, 'row_1'], [2, 'row_2'], [3, 'row_3']]) project_model = ProjectModel() project_model.add_table(test_table_1) project_model.add_row('test_table_1', [4, 'row_4']) self.assertEqual(project_model.get_table('test_table_1').get_number_of_rows(), 4)
def test_edit_row(self): test_table_1 = Table('test_table_1', 2, 3, {'col_1': 'Liczba całkowita', 'col_2': 'Tekst'}, [[1, 'row_1'], [2, 'row_2'], [3, 'row_3']]) project_model = ProjectModel() project_model.add_table(test_table_1) project_model.edit_row('test_table_1', [2, 'row_2'], [2, 'row_2_edited']) edited_row = project_model.get_table('test_table_1').get_row(1) self.assertEqual(edited_row, [2, 'row_2_edited'])
def __init__(self, project_model: ProjectModel): """ Add table class constructor :param ProjectModel: ProjectModel """ super().__init__() self.__title = 'Stwórz tabelę' self.__top = 400 self.__left = 400 self.__width = 405 self.__height = 200 self.__buttons = MyButton(self) self.__labels = MyLabel(self) self.__project_model = project_model self.__project_controller = ProjectController() self.__new_table = Table() self.get_table_name = lambda: self.__new_table.get_table_name() self.get_number_of_columns = lambda: self.__new_table.get_number_of_columns( ) self.init_window()
def test_file(self): table_attributes = ('test_table', 2, 3, {'col_1': 'Liczba całkowita', 'col_2': 'Tekst'}, [[1, 'row_1'], [2, 'row_2'], [3, 'row_3']]) table_to_save = Table(*table_attributes) project_model_1 = ProjectModel() project_model_1.add_table(table_to_save) project_model_1.write_to_file('test_file.txt') project_model_2 = ProjectModel() project_model_2.read_from_file('test_file.txt') get_table = project_model_2.get_table('test_table') self.assertEqual(str(table_to_save), str(get_table))
def test_lambda(self): project_model = ProjectModel() project_model.add_table(Table('test_table', 2, 3, {'col_1': 'Liczba całkowita', 'col_2': 'Tekst'}, [[1, 'row_1'], [2, 'row_2'], [3, 'row_3']])) lambda_expression = project_model.generate_lambda_expression('test_table') self.assertNotEqual(lambda_expression, None) records_1 = project_model.lambda_browse('test_table', lambda_expression) self.assertGreaterEqual(len(records_1), 0) records_2 = project_model.lambda_browse('test_table', 'lambda col_1:col_1>1') self.assertEqual(records_2, [[2, 'row_2'], [3, 'row_3']])
def browse(self): """ Browse method this method loads lambda-expression (typed by user) and displays table only with rows returned by lambda_browse method from ProjectModel :return: """ try: new_table = self.__project_model.lambda_browse( self.__table_name, self.__lineedit.text()) self.close() try: editTable = EditRowsWindow( self.__project_model, Table( self.__table_name, self.__project_model.get_table( self.__table_name).get_number_of_columns(), len(new_table), self.__project_model.get_table( self.__table_name).get_column_dict(), new_table)) except: raise BadLambdaExpressionException(expression=new_table) else: editTable.setModal(True) editTable.exec() except BadLambdaExpressionException as exception: warning = WarningWindow(str(exception)) warning.setModal(True) warning.exec() except Exception: warning = WarningWindow("Wystąpił problem z wyszukiwaniem danych") warning.setModal(True) warning.exec()
class AddTableWindow(QDialog): """ Add table class """ def __init__(self, project_model: ProjectModel): """ Add table class constructor :param ProjectModel: ProjectModel """ super().__init__() self.__title = 'Stwórz tabelę' self.__top = 400 self.__left = 400 self.__width = 405 self.__height = 200 self.__buttons = MyButton(self) self.__labels = MyLabel(self) self.__project_model = project_model self.__project_controller = ProjectController() self.__new_table = Table() self.get_table_name = lambda: self.__new_table.get_table_name() self.get_number_of_columns = lambda: self.__new_table.get_number_of_columns( ) self.init_window() def init_window(self): """ Init Window method this method sets all window widgets """ self.setWindowTitle('Dodaj tabele') self.setGeometry(self.__left, self.__top, self.__width, self.__height) self.setFixedSize(self.__width, self.__height) self.__lineedit = QLineEdit(self) self.__lineedit.move(130, 50) self.create_counter_label( str(self.__new_table.get_number_of_columns()), 130, 100) self.__labels.createLabel('Nazwa tabeli', 50, 50) self.__labels.createLabel('Liczba kolumn', 50, 100) self.button_1 = self.__buttons.create_button( 'Dodaj kolumne', 10, 160, 120.3, 30, 'Kliknij aby dodać nową kolumne do tabeli', self.add_column) self.button_2 = self.__buttons.create_button( 'Dodaj tabele', 143.3, 160, 120.3, 30, 'Kliknij aby dodać tabele', self.add_table) self.button_3 = self.__buttons.create_button( 'Anuluj', 276.6, 160, 120.3, 30, 'Kliknij aby dodać tabele', self.close) self.show() def create_counter_label(self, text, x_coordinate, y_coordinate): """ Create counter label method this method creates new label which displays number of columns in created table :param text: str :param x_coordinate: int :param y_coordinate: int """ self.counter_label = QLabel(self) self.counter_label.setText(text) self.counter_label.adjustSize() self.counter_label.move(x_coordinate, y_coordinate) def add_column(self): """ Add column method this method initializes new AddColumnWindow Object and sets counter label """ self.__addColumn = AddColumnWindow(self.__project_model, self.__new_table) self.__addColumn.setModal(True) self.__addColumn.exec() self.counter_label.setText( str(self.__new_table.get_number_of_columns())) def add_table(self): """ Add table method this method loads table name and checks if created table number of columns is not equal 0. If there was no exception, add_table method from ProjectModel is called """ try: self.__project_controller.check_table_name(self.__lineedit.text()) self.__project_controller.check_number_of_columns( self.__new_table.get_number_of_columns()) self.__new_table.set_table_name(self.__lineedit.text()) self.__project_model.add_table(self.__new_table) self.close() except (EmptyTableNameException, NoColumnTableException, ExistingTableException) as exception: warning = WarningWindow(str(exception)) warning.setModal(True) warning.exec() except Exception: warning = WarningWindow("Wystąpiły problemy z dodawaniem tabeli") warning.setModal(True) warning.exec()