def test_insert_row_at_multiple_beyond(self): model = TableModel() expected = [RowEntries(sample_scatter=i) for i in range(2)] model.replace_table_entry(row_index=0, row_entry=expected[0]) self.assertTrue(1, model.get_number_of_rows()) model.insert_row_at(4, expected[1]) # Remember that the number of rows is counted from 1, but we use 0 based indexing self.assertTrue(5, model.get_number_of_rows()) self.assertEqual(expected, model.get_multiple_rows([0, 4])) self.assertTrue( all(i.is_empty() for i in model.get_multiple_rows([1, 2, 3])))
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))
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))
def test_get_multiple_rows(self): row_1, row_2 = RowEntries(), RowEntries() instance = TableModel() instance.add_multiple_table_entries([row_1, row_2]) self.assertEqual([row_1, row_2], instance.get_multiple_rows([0, 1]))