class TestTableRowManagement(unittest.TestCase): def cellvalue(self, row, col): return self.table[row, col].value def setUp(self): self.table = Table('TEST', size=(10, 10)) add_table_prelude_content(self.table) for row in range(10): self.table[row,0].set_value('checkmark%d' % row ) invoke_cache = self.cellvalue(row, 0) def test_metrics(self): self.assertEqual(10, self.table.nrows(), "expected 10 rows") self.assertEqual(10, self.table.ncols(), "expected 10 columns") def test_append_one_row(self): self.table.append_rows(1) self.assertEqual(11, self.table.nrows(), "expected 11 rows") def test_append_two_rows(self): self.table.append_rows(2) self.assertEqual(12, self.table.nrows(), "expected 12 rows") def test_append_zero_rows_value_error(self): with self.assertRaises(ValueError): self.table.append_rows(0) def test_append_negative_rows_value_error(self): with self.assertRaises(ValueError): self.table.append_rows(-1) def test_insert_one_row(self): self.table.insert_rows(index=5, count=1) self.chk_insert_one_row() def test_insert_one_row_neg_index(self): self.table.insert_rows(index=-5, count=1) self.chk_insert_one_row() def chk_insert_one_row(self): self.assertEqual(11, self.table.nrows(), "expected 11 rows") self.assertEqual('checkmark4', self.cellvalue(4, 0), "expected checkmark4 in row 4") self.assertIsNone(self.cellvalue(5, 0), "expected None in row 5") self.assertEqual('checkmark5', self.cellvalue(6, 0), "expected checkmark5 in row 6") def test_insert_two_rows(self): self.table.insert_rows(index=5, count=2) self.chk_insert_two_rows() def test_insert_two_rows_neg_index(self): self.table.insert_rows(index=-5, count=2) self.chk_insert_two_rows() def chk_insert_two_rows(self): self.assertEqual(12, self.table.nrows(), "expected 12 rows") self.assertEqual('checkmark4', self.cellvalue(4, 0), "expected checkmark4 in row 4") self.assertIsNone(self.cellvalue(5, 0)) self.assertIsNone(self.cellvalue(6, 0)) self.assertEqual('checkmark5', self.cellvalue(7, 0), "expected checkmark5 in row 7") def test_insert_zero_rows_value_error(self): with self.assertRaises(ValueError): self.table.insert_rows(0, count=0) def test_insert_negative_rows_value_error(self): with self.assertRaises(ValueError): self.table.insert_rows(0, count=-1) def test_insert_rows_out_of_range_index_error(self): with self.assertRaises(IndexError): self.table.insert_rows(10, count=1) def test_delete_one_row(self): self.table.delete_rows(index=5, count=1) self.chk_delete_one_row() def test_delete_one_row_neg_index(self): self.table.delete_rows(index=-5, count=1) self.chk_delete_one_row() def chk_delete_one_row(self): self.assertEqual(9, self.table.nrows(), "expected 9 rows") self.assertEqual('checkmark4', self.cellvalue(4, 0), "expected checkmark4 in row 4") self.assertEqual('checkmark6', self.cellvalue(5, 0), "expected checkmark6 in row 5") def test_delete_two_rows(self): self.table.delete_rows(index=5, count=2) self.chk_delete_two_rows() def test_delete_two_rows_neg_index(self): self.table.delete_rows(index=-5, count=2) self.chk_delete_two_rows() def chk_delete_two_rows(self): self.assertEqual(8, self.table.nrows(), "expected 8 rows") self.assertEqual('checkmark4', self.cellvalue(4, 0), "expected checkmark4 in row 4") self.assertEqual('checkmark7', self.cellvalue(5, 0), "expected checkmark7 in row 5") def test_delete_last_row(self): self.table.delete_rows(index=9) self.assertEqual(9, self.table.nrows(), "expected 9 rows") def test_delete_zero_rows_value_error(self): with self.assertRaises(ValueError): self.table.delete_rows(0, count=0) def test_delete_negative_rows_value_error(self): with self.assertRaises(ValueError): self.table.delete_rows(0, count=-1) def test_delete_rows_index_out_of_range_error(self): with self.assertRaises(IndexError): self.table.delete_rows(10, count=1) def test_delete_rows_index_and_count_out_of_range_error(self): self.table.xmlnode.append(etree.Element('FakeNode')) with self.assertRaises(IndexError): self.table.delete_rows(9, count=2)