def test_get_row(self):
        container = TableRowController(etree.XML(TABLE_REP_7x7))
        for col in range(container.ncols()):
            container.set_cell((3, col), setdata('x'))

        result = ''.join([getdata(element) for element in container.row(3)])
        self.assertEqual('xxxxxxx', result)
    def test_get_row(self):
        container = TableRowController(etree.XML(TABLE_REP_7x7))
        for col in range(container.ncols()):
            container.set_cell((3, col), setdata('x'))

        result = ''.join([getdata(element) for element in container.row(3)])
        self.assertEqual('xxxxxxx', result)
class TestTableRowContainer(unittest.TestCase):
    def setUp(self):
        table = etree.Element(CN('table:table'))
        self.container = TableRowController(table)

    def test_init_None_error(self):
        with self.assertRaises(ValueError):
            TableRowController(xmlnode=None)

    def test_init_node_error(self):
        with self.assertRaises(ValueError):
            TableRowController(xmlnode=etree.Element(CN('error')))

    def test_init_size(self):
        self.container.reset(size=(10, 20))
        self.assertEqual(10, self.container.nrows())
        self.assertEqual(20, self.container.ncols())

    def test_uncompressed_content(self):
        container = TableRowController(etree.XML(TABLE_5x3))
        self.assertEqual(5, container.nrows())
        self.assertEqual(3, container.ncols())

    def test_expand_content(self):
        container = TableRowController(etree.XML(TABLE_REP_7x7))
        self.assertEqual(7, container.nrows())
        self.assertEqual(7, container.ncols())

    def test_get_cell(self):
        self.container.reset(size=(10, 10))
        element = self.container.get_cell((3, 3))
        self.assertEqual(CN('table:table-cell'), element.tag)

    def test_get_set_value(self):
        self.container.reset(size=(10, 10))
        self.container.set_cell((3, 3), setdata('test'))
        element = self.container.get_cell((3, 3))
        self.assertEqual(getdata(element), 'test')

    def test_row_index_error(self):
        self.container.reset(size=(10, 10))
        with self.assertRaises(IndexError):
            self.container.get_cell((10, 0))

    def test_neg_row_index_error(self):
        self.container.reset(size=(10, 10))
        self.container.set_cell((9, 0), setdata('neg(9,0)'))
        self.assertEqual('neg(9,0)', getdata(self.container.get_cell((-1, 0))))

    def test_col_index_error(self):
        self.container.reset(size=(10, 10))
        with self.assertRaises(IndexError):
            self.container.get_cell((0, 10))

    def test_neg_col_index(self):
        self.container.reset(size=(10, 10))
        self.container.set_cell((0, 9), setdata('neg(0,9)'))
        self.assertEqual('neg(0,9)', getdata(self.container.get_cell((0, -1))))

    def test_get_table_row(self):
        self.container.reset(size=(10, 10))
        table_row = self.container.row(0)
        self.assertEqual(CN('table:table-row'), table_row.tag)

    def test_is_not_consistent(self):
        self.container.reset(size=(10, 10))
        self.container._rows[0] = None  # white box test
        self.assertFalse(self.container.is_consistent())
class TestTableRowContainer(unittest.TestCase):

    def setUp(self):
        table = etree.Element(CN('table:table'))
        self.container = TableRowController(table)

    def test_init_None_error(self):
        with self.assertRaises(ValueError):
            TableRowController(xmlnode=None)

    def test_init_node_error(self):
        with self.assertRaises(ValueError):
            TableRowController(xmlnode=etree.Element(CN('error')))

    def test_init_size(self):
        self.container.reset(size=(10, 20))
        self.assertEqual(10, self.container.nrows())
        self.assertEqual(20, self.container.ncols())

    def test_uncompressed_content(self):
        container = TableRowController(etree.XML(TABLE_5x3))
        self.assertEqual(5, container.nrows())
        self.assertEqual(3, container.ncols())

    def test_expand_content(self):
        container = TableRowController(etree.XML(TABLE_REP_7x7))
        self.assertEqual(7, container.nrows())
        self.assertEqual(7, container.ncols())

    def test_get_cell(self):
        self.container.reset(size=(10, 10))
        element = self.container.get_cell((3, 3))
        self.assertEqual(CN('table:table-cell'), element.tag)

    def test_get_set_value(self):
        self.container.reset(size=(10, 10))
        self.container.set_cell((3, 3), setdata('test'))
        element = self.container.get_cell((3, 3))
        self.assertEqual(getdata(element), 'test')

    def test_row_index_error(self):
        self.container.reset(size=(10, 10))
        with self.assertRaises(IndexError):
            self.container.get_cell((10, 0))

    def test_neg_row_index_error(self):
        self.container.reset(size=(10, 10))
        self.container.set_cell((9, 0), setdata('neg(9,0)'))
        self.assertEqual('neg(9,0)', getdata(self.container.get_cell((-1, 0))))

    def test_col_index_error(self):
        self.container.reset(size=(10, 10))
        with self.assertRaises(IndexError):
            self.container.get_cell((0, 10))

    def test_neg_col_index(self):
        self.container.reset(size=(10, 10))
        self.container.set_cell((0, 9), setdata('neg(0,9)'))
        self.assertEqual('neg(0,9)', getdata(self.container.get_cell((0, -1))))

    def test_get_table_row(self):
        self.container.reset(size=(10, 10))
        table_row = self.container.row(0)
        self.assertEqual(CN('table:table-row'), table_row.tag)

    def test_is_not_consistent(self):
        self.container.reset(size=(10, 10))
        self.container._rows[0] = None # white box test
        self.assertFalse(self.container.is_consistent())