Пример #1
0
    def test_that_process_selected_only_processes_selected_rows(self):
        # Naive test. Doesn't check that we are processing the correct processed rows,
        # just that we are processing the same number of rows as we have selected.
        # This would only really fail if on_process_selected_clicked and on_process_all_clicked
        # get muddled-up

        view = mock.MagicMock()
        view.get_selected_rows = mock.MagicMock(return_value=[0, 2, 3])

        self.presenter.set_view(view)
        self.presenter._process_rows = mock.Mock()

        table_model = TableModel()

        for i in range(5):
            table_model.append_table_entry(RowEntries(sample_scatter='74040'))
        self.presenter._table_model = table_model

        self.presenter.on_process_selected_clicked()

        expected = [
            table_model.get_row(0),
            table_model.get_row(2),
            table_model.get_row(3)
        ]

        self.presenter._process_rows.assert_called_with(expected)
Пример #2
0
    def test_copy_paste_single_appends_to_end(self):
        table_model = TableModel()
        table_model.append_table_entry(RowEntries(sample_transmission="1"))
        table_model.append_table_entry(RowEntries(sample_transmission="2"))

        table_model.copy_rows([0])
        table_model.paste_rows([])
        self.assertEqual(3, table_model.get_number_of_rows())
        self.assertEqual(table_model.get_row(0), table_model.get_row(2))
Пример #3
0
    def test_copy_paste_modify_append(self):
        table_model = TableModel()
        table_model.append_table_entry(RowEntries(sample_transmission="1"))
        table_model.copy_rows([0])
        table_model.paste_rows([])

        row_1 = table_model.get_row(1)
        self.assertEqual(table_model.get_row(0), row_1)
        row_1.sample_transmission = 2
        self.assertNotEqual(table_model.get_row(0), row_1)
Пример #4
0
    def test_copy_paste_overwrite(self):
        for paste_location in [0, 1]:
            table_model = TableModel()
            for entry_i in range(3):
                table_model.append_table_entry(
                    RowEntries(sample_transmission=entry_i))

            table_model.copy_rows([2])
            table_model.paste_rows([paste_location])
            self.assertEqual(table_model.get_row(2),
                             table_model.get_row(paste_location))
Пример #5
0
    def test_copy_paste_modify_overwrite(self):
        # Check we aren't doing a shallow copy, which cause a user to
        # see two rows get modified at once
        table_model = TableModel()
        table_model.append_table_entry(RowEntries(sample_transmission="1"))
        table_model.append_table_entry(RowEntries(sample_transmission="2"))
        table_model.copy_rows([0])
        table_model.paste_rows([1])

        row_1 = table_model.get_row(1)
        self.assertEqual(table_model.get_row(0), row_1)
        row_1.sample_transmission = 2
        self.assertNotEqual(table_model.get_row(0), row_1)
Пример #6
0
    def test_copy_paste_overwrites_partial(self):
        table_model = TableModel()
        num_rows = 6
        for entry_i in range(num_rows):
            table_model.append_table_entry(
                RowEntries(sample_transmission=entry_i))

        # When a partial range of rows is selected that doesn't match the copied length
        # overwrite to match the behaviour of other spreadsheet tools
        copied_rows = [0, 1, 2]
        table_model.copy_rows(copied_rows)
        table_model.paste_rows([3, 4])

        self.assertEqual(num_rows, table_model.get_number_of_rows())
        for i in copied_rows:
            # We pasted to offset 3
            self.assertEqual(table_model.get_row(i),
                             table_model.get_row(i + 3))
Пример #7
0
    def test_copy_paste_beyond_table_range(self):
        table_model = TableModel()
        num_elements = 4

        for entry_i in range(num_elements):
            table_model.append_table_entry(
                RowEntries(sample_transmission=entry_i))

        copied_indices = [0, 1, 2]
        table_model.copy_rows(copied_indices)
        paste_location = 3
        table_model.paste_rows([paste_location])

        # We override row 4, and should have + rows now too
        self.assertEqual(num_elements + 2, table_model.get_number_of_rows())
        for paste_index in copied_indices:
            self.assertEqual(table_model.get_row(paste_index),
                             table_model.get_row(paste_index + paste_location))
Пример #8
0
    def test_when_last_row_is_removed_table_is_left_with_one_empty_row(self):
        table_model = TableModel()
        table_model.append_table_entry(RowEntries())
        table_model.append_table_entry(RowEntries())

        self.assertEqual(2, table_model.get_number_of_rows())

        table_model.remove_table_entries([0, 1])

        self.assertEqual(table_model.get_number_of_rows(), 0)
        self.assertTrue(table_model.get_row(0).is_empty())
Пример #9
0
    def test_when_table_is_cleared_is_left_with_one_empty_row(self):
        table_model = TableModel()
        table_model.append_table_entry(RowEntries())
        table_model.append_table_entry(RowEntries())

        self.assertEqual(2, table_model.get_number_of_rows())

        table_model.clear_table_entries()

        self.assertEqual(table_model.get_number_of_rows(), 0)
        self.assertTrue(table_model.get_row(0).is_empty())
Пример #10
0
    def test_that_set_row_to_error_sets_row_to_error_and_tool_tip(self):
        table_model = TableModel()
        table_index_model = RowEntries()

        table_model.replace_table_entry(0, table_index_model)

        row = 0
        tool_tip = 'There was an error'

        table_model.set_row_to_error(row, tool_tip)
        row_entry = table_model.get_row(0)

        self.assertTrue(RowState.ERROR, row_entry.state)
        self.assertEqual(tool_tip, row_entry.tool_tip)
Пример #11
0
    def test_copy_paste_append_mixed_selection(self):
        table_model = TableModel()
        for entry_i in range(4):
            table_model.append_table_entry(
                RowEntries(sample_transmission=entry_i))

        copied_rows = [0, 1, 3]
        table_model.copy_rows(copied_rows)
        table_model.paste_rows([])

        # 4 rows + 3 pasted
        self.assertEqual(7, table_model.get_number_of_rows())
        for dest_row, original_row in enumerate(copied_rows):
            self.assertEqual(table_model.get_row(original_row),
                             table_model.get_row(dest_row + 4))
Пример #12
0
    def test_cut_paste_sorts_order(self):
        # Qt can give is the order a user selected rows in, ensure it's always in the natural order
        table_model = TableModel()
        for entry_i in range(5):
            table_model.append_table_entry(
                RowEntries(sample_transmission=entry_i))

        input_rows = [4, 0, 2]
        expected_rows = table_model.get_multiple_rows(sorted(input_rows))

        table_model.cut_rows(input_rows)
        table_model.paste_rows([])

        for i, row in enumerate(expected_rows):
            # 5 original rows - 3 cut rows = 2 rows remaining
            self.assertEqual(row, table_model.get_row(i + 2))
Пример #13
0
    def test_copy_paste_append_mixed_selection_onto_mixed_selection(self):
        table_model = TableModel()
        num_elements = 5
        for entry_i in range(num_elements):
            table_model.append_table_entry(
                RowEntries(sample_transmission=entry_i))

        copied_indices = [0, 1, 3, 4]
        copied_rows = table_model.get_multiple_rows(copied_indices)

        table_model.copy_rows(copied_indices)
        table_model.paste_rows([0, 2, 3])

        self.assertEqual(num_elements, table_model.get_number_of_rows())
        for paste_index, original_items in enumerate(copied_rows):
            self.assertEqual(original_items, table_model.get_row(paste_index))
Пример #14
0
    def test_copy_paste_sorts_order(self):
        # Qt can give is the order a user selected rows in, ensure it's always in the natural order
        table_model = TableModel()
        num_rows = 5
        for entry_i in range(num_rows):
            table_model.append_table_entry(
                RowEntries(sample_transmission=entry_i))

        table_model.copy_rows([4, 0, 2])
        table_model.paste_rows([])

        self.assertEqual(table_model.get_row(0),
                         table_model.get_row(0 + num_rows))
        self.assertEqual(table_model.get_row(2),
                         table_model.get_row(1 + num_rows))
        self.assertEqual(table_model.get_row(4),
                         table_model.get_row(2 + num_rows))
Пример #15
0
 def test_that_can_get_table_index_model_for_valid_index(self):
     table_model = TableModel()
     table_index_model = RowEntries()
     table_model.replace_table_entry(0, table_index_model)
     returned_model = table_model.get_row(0)
     self.assertEqual(table_index_model, returned_model)