Пример #1
0
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)