Esempio n. 1
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))
Esempio n. 2
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)
Esempio n. 3
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))
Esempio n. 4
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)
Esempio n. 5
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))
Esempio n. 6
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))
Esempio n. 7
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))
Esempio n. 8
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))
Esempio n. 9
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))