Ejemplo n.º 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)
Ejemplo n.º 2
0
    def test_get_num_rows(self):
        obj = TableModel()
        self.assertEqual(0, obj.get_number_of_rows())

        obj.append_table_entry(RowEntries())
        self.assertEqual(1, obj.get_number_of_rows())

        obj.remove_table_entries([0])
        self.assertEqual(0, obj.get_number_of_rows())
Ejemplo n.º 3
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))
Ejemplo n.º 4
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)
Ejemplo n.º 5
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))
Ejemplo n.º 6
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())
Ejemplo n.º 7
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())
Ejemplo n.º 8
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)
Ejemplo n.º 9
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))
Ejemplo n.º 10
0
    def test_that_process_all_ignores_empty_rows(self):

        view = mock.MagicMock()
        view.get_selected_rows = mock.MagicMock(return_value=[0, 1])
        self.presenter.set_view(view)

        table_model = TableModel()
        populated_row = RowEntries(sample_scatter=1)
        table_model.append_table_entry(populated_row)
        table_model.append_table_entry(RowEntries())

        self.presenter._table_model = table_model
        self.presenter._process_rows = mock.MagicMock()

        self.presenter.on_process_selected_clicked()
        self.presenter._process_rows.assert_called_with([populated_row])
Ejemplo n.º 11
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))
Ejemplo n.º 12
0
    def test_that_get_non_empty_rows_returns_non_empty_rows(self):
        table_model = TableModel()
        empty_row = RowEntries()

        table_model.append_table_entry(empty_row)
        table_model.append_table_entry(RowEntries(sample_scatter=123))
        table_model.append_table_entry(empty_row)
        table_model.append_table_entry(RowEntries(sample_direct=345))
        table_model.append_table_entry(empty_row)

        self.assertEqual(2, len(table_model.get_non_empty_rows()))

        for i in table_model.get_non_empty_rows():
            self.assertFalse(i.is_empty())

        self.assertEqual(5, table_model.get_number_of_rows())
Ejemplo n.º 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))
Ejemplo n.º 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))
Ejemplo n.º 15
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))
Ejemplo n.º 16
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))
Ejemplo n.º 17
0
    def test_default_obj_correctly_tracked(self):
        # We need to make sure there is always 1 object in table model, but not to get it mixed with user input
        obj = TableModel()
        self.assertEqual(0, obj.get_number_of_rows())

        obj.clear_table_entries()
        self.assertEqual(0, obj.get_number_of_rows())

        obj.append_table_entry(RowEntries())
        self.assertEqual(1, obj.get_number_of_rows())
        obj.append_table_entry(RowEntries())
        self.assertEqual(2, obj.get_number_of_rows())

        obj.clear_table_entries()
        self.assertEqual(0, obj.get_number_of_rows())
        obj.append_table_entry(RowEntries())
        self.assertEqual(1, obj.get_number_of_rows())