summaryrefslogtreecommitdiff
path: root/test/test_table.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_table.py')
-rw-r--r--test/test_table.py287
1 files changed, 149 insertions, 138 deletions
diff --git a/test/test_table.py b/test/test_table.py
index 0c40a7c..5c0ac19 100644
--- a/test/test_table.py
+++ b/test/test_table.py
@@ -25,8 +25,16 @@ import os
from logilab.common.compat import StringIO
from logilab.common.testlib import TestCase, unittest_main
-from logilab.common.table import Table, TableStyleSheet, DocbookTableWriter, \
- DocbookRenderer, TableStyle, TableWriter, TableCellRenderer
+from logilab.common.table import (
+ Table,
+ TableStyleSheet,
+ DocbookTableWriter,
+ DocbookRenderer,
+ TableStyle,
+ TableWriter,
+ TableCellRenderer,
+)
+
class TableTC(TestCase):
"""Table TestCase class"""
@@ -36,12 +44,12 @@ class TableTC(TestCase):
# from logilab.common import table
# reload(table)
self.table = Table()
- self.table.create_rows(['row1', 'row2', 'row3'])
- self.table.create_columns(['col1', 'col2'])
+ self.table.create_rows(["row1", "row2", "row3"])
+ self.table.create_columns(["col1", "col2"])
def test_valeur_scalaire(self):
tab = Table()
- tab.create_columns(['col1'])
+ tab.create_columns(["col1"])
tab.append_row([1])
self.assertEqual(tab, [[1]])
tab.append_row([2])
@@ -50,13 +58,13 @@ class TableTC(TestCase):
def test_valeur_ligne(self):
tab = Table()
- tab.create_columns(['col1', 'col2'])
+ tab.create_columns(["col1", "col2"])
tab.append_row([1, 2])
self.assertEqual(tab, [[1, 2]])
def test_valeur_colonne(self):
tab = Table()
- tab.create_columns(['col1'])
+ tab.create_columns(["col1"])
tab.append_row([1])
tab.append_row([2])
self.assertEqual(tab, [[1], [2]])
@@ -77,25 +85,25 @@ class TableTC(TestCase):
"""tests Table.get_rows()"""
self.assertEqual(self.table, [[0, 0], [0, 0], [0, 0]])
self.assertEqual(self.table[:], [[0, 0], [0, 0], [0, 0]])
- self.table.insert_column(1, range(3), 'supp')
+ self.table.insert_column(1, range(3), "supp")
self.assertEqual(self.table, [[0, 0, 0], [0, 1, 0], [0, 2, 0]])
self.assertEqual(self.table[:], [[0, 0, 0], [0, 1, 0], [0, 2, 0]])
def test_get_cells(self):
- self.table.insert_column(1, range(3), 'supp')
+ self.table.insert_column(1, range(3), "supp")
self.assertEqual(self.table[0, 1], 0)
self.assertEqual(self.table[1, 1], 1)
self.assertEqual(self.table[2, 1], 2)
- self.assertEqual(self.table['row1', 'supp'], 0)
- self.assertEqual(self.table['row2', 'supp'], 1)
- self.assertEqual(self.table['row3', 'supp'], 2)
- self.assertRaises(KeyError, self.table.__getitem__, ('row1', 'foo'))
- self.assertRaises(KeyError, self.table.__getitem__, ('foo', 'bar'))
+ self.assertEqual(self.table["row1", "supp"], 0)
+ self.assertEqual(self.table["row2", "supp"], 1)
+ self.assertEqual(self.table["row3", "supp"], 2)
+ self.assertRaises(KeyError, self.table.__getitem__, ("row1", "foo"))
+ self.assertRaises(KeyError, self.table.__getitem__, ("foo", "bar"))
def test_shape(self):
"""tests table shape"""
self.assertEqual(self.table.shape, (3, 2))
- self.table.insert_column(1, range(3), 'supp')
+ self.table.insert_column(1, range(3), "supp")
self.assertEqual(self.table.shape, (3, 3))
def test_set_column(self):
@@ -109,33 +117,33 @@ class TableTC(TestCase):
def test_set_column_by_id(self):
"""Tests that table.set_column_by_id() works fine.
"""
- self.table.set_column_by_id('col1', range(3))
+ self.table.set_column_by_id("col1", range(3))
self.assertEqual(self.table[0, 0], 0)
self.assertEqual(self.table[1, 0], 1)
self.assertEqual(self.table[2, 0], 2)
- self.assertRaises(KeyError, self.table.set_column_by_id, 'col123', range(3))
+ self.assertRaises(KeyError, self.table.set_column_by_id, "col123", range(3))
def test_cells_ids(self):
"""tests that we can access cells by giving row/col ids"""
- self.assertRaises(KeyError, self.table.set_cell_by_ids, 'row12', 'col1', 12)
- self.assertRaises(KeyError, self.table.set_cell_by_ids, 'row1', 'col12', 12)
+ self.assertRaises(KeyError, self.table.set_cell_by_ids, "row12", "col1", 12)
+ self.assertRaises(KeyError, self.table.set_cell_by_ids, "row1", "col12", 12)
self.assertEqual(self.table[0, 0], 0)
- self.table.set_cell_by_ids('row1', 'col1', 'DATA')
- self.assertEqual(self.table[0, 0], 'DATA')
- self.assertRaises(KeyError, self.table.set_row_by_id, 'row12', [])
- self.table.set_row_by_id('row1', ['1.0', '1.1'])
- self.assertEqual(self.table[0, 0], '1.0')
+ self.table.set_cell_by_ids("row1", "col1", "DATA")
+ self.assertEqual(self.table[0, 0], "DATA")
+ self.assertRaises(KeyError, self.table.set_row_by_id, "row12", [])
+ self.table.set_row_by_id("row1", ["1.0", "1.1"])
+ self.assertEqual(self.table[0, 0], "1.0")
def test_insert_row(self):
"""tests a row insertion"""
- tmp_data = ['tmp1', 'tmp2']
- self.table.insert_row(1, tmp_data, 'tmprow')
+ tmp_data = ["tmp1", "tmp2"]
+ self.table.insert_row(1, tmp_data, "tmprow")
self.assertEqual(self.table[1], tmp_data)
- self.assertEqual(self.table['tmprow'], tmp_data)
- self.table.delete_row_by_id('tmprow')
- self.assertRaises(KeyError, self.table.delete_row_by_id, 'tmprow')
+ self.assertEqual(self.table["tmprow"], tmp_data)
+ self.table.delete_row_by_id("tmprow")
+ self.assertRaises(KeyError, self.table.delete_row_by_id, "tmprow")
self.assertEqual(self.table[1], [0, 0])
- self.assertRaises(KeyError, self.table.__getitem__, 'tmprow')
+ self.assertRaises(KeyError, self.table.__getitem__, "tmprow")
def test_get_column(self):
"""Tests that table.get_column() works fine.
@@ -143,7 +151,7 @@ class TableTC(TestCase):
self.table.set_cell(0, 1, 12)
self.table.set_cell(2, 1, 13)
self.assertEqual(self.table[:, 1], [12, 0, 13])
- self.assertEqual(self.table[:, 'col2'], [12, 0, 13])
+ self.assertEqual(self.table[:, "col2"], [12, 0, 13])
def test_get_columns(self):
"""Tests if table.get_columns() works fine.
@@ -157,26 +165,25 @@ class TableTC(TestCase):
"""
self.table.insert_column(1, range(3), "inserted_column")
self.assertEqual(self.table[:, 1], [0, 1, 2])
- self.assertEqual(self.table.col_names,
- ['col1', 'inserted_column', 'col2'])
+ self.assertEqual(self.table.col_names, ["col1", "inserted_column", "col2"])
def test_delete_column(self):
"""Tests that table.delete_column() works fine.
"""
self.table.delete_column(1)
- self.assertEqual(self.table.col_names, ['col1'])
+ self.assertEqual(self.table.col_names, ["col1"])
self.assertEqual(self.table[:, 0], [0, 0, 0])
- self.assertRaises(KeyError, self.table.delete_column_by_id, 'col2')
- self.table.delete_column_by_id('col1')
+ self.assertRaises(KeyError, self.table.delete_column_by_id, "col2")
+ self.table.delete_column_by_id("col1")
self.assertEqual(self.table.col_names, [])
def test_transpose(self):
"""Tests that table.transpose() works fine.
"""
- self.table.append_column(range(5, 8), 'col3')
+ self.table.append_column(range(5, 8), "col3")
ttable = self.table.transpose()
- self.assertEqual(ttable.row_names, ['col1', 'col2', 'col3'])
- self.assertEqual(ttable.col_names, ['row1', 'row2', 'row3'])
+ self.assertEqual(ttable.row_names, ["col1", "col2", "col3"])
+ self.assertEqual(ttable.col_names, ["row1", "row2", "row3"])
self.assertEqual(ttable.data, [[0, 0, 0], [0, 0, 0], [5, 6, 7]])
def test_sort_table(self):
@@ -185,22 +192,22 @@ class TableTC(TestCase):
self.table.set_column(0, [3, 1, 2])
self.table.set_column(1, [1, 2, 3])
self.table.sort_by_column_index(0)
- self.assertEqual(self.table.row_names, ['row2', 'row3', 'row1'])
+ self.assertEqual(self.table.row_names, ["row2", "row3", "row1"])
self.assertEqual(self.table.data, [[1, 2], [2, 3], [3, 1]])
- self.table.sort_by_column_index(1, 'desc')
- self.assertEqual(self.table.row_names, ['row3', 'row2', 'row1'])
+ self.table.sort_by_column_index(1, "desc")
+ self.assertEqual(self.table.row_names, ["row3", "row2", "row1"])
self.assertEqual(self.table.data, [[2, 3], [1, 2], [3, 1]])
def test_sort_by_id(self):
"""tests sort_by_column_id()"""
- self.table.set_column_by_id('col1', [3, 1, 2])
- self.table.set_column_by_id('col2', [1, 2, 3])
- self.table.sort_by_column_id('col1')
- self.assertRaises(KeyError, self.table.sort_by_column_id, 'col123')
- self.assertEqual(self.table.row_names, ['row2', 'row3', 'row1'])
+ self.table.set_column_by_id("col1", [3, 1, 2])
+ self.table.set_column_by_id("col2", [1, 2, 3])
+ self.table.sort_by_column_id("col1")
+ self.assertRaises(KeyError, self.table.sort_by_column_id, "col123")
+ self.assertEqual(self.table.row_names, ["row2", "row3", "row1"])
self.assertEqual(self.table.data, [[1, 2], [2, 3], [3, 1]])
- self.table.sort_by_column_id('col2', 'desc')
- self.assertEqual(self.table.row_names, ['row3', 'row2', 'row1'])
+ self.table.sort_by_column_id("col2", "desc")
+ self.assertEqual(self.table.row_names, ["row3", "row2", "row1"])
self.assertEqual(self.table.data, [[2, 3], [1, 2], [3, 1]])
def test_pprint(self):
@@ -211,67 +218,74 @@ class TableTC(TestCase):
class GroupByTC(TestCase):
"""specific test suite for groupby()"""
+
def setUp(self):
t = Table()
- t.create_columns(['date', 'res', 'task', 'usage'])
- t.append_row(['date1', 'ing1', 'task1', 0.3])
- t.append_row(['date1', 'ing2', 'task2', 0.3])
- t.append_row(['date2', 'ing3', 'task3', 0.3])
- t.append_row(['date3', 'ing4', 'task2', 0.3])
- t.append_row(['date1', 'ing1', 'task3', 0.3])
- t.append_row(['date3', 'ing1', 'task3', 0.3])
+ t.create_columns(["date", "res", "task", "usage"])
+ t.append_row(["date1", "ing1", "task1", 0.3])
+ t.append_row(["date1", "ing2", "task2", 0.3])
+ t.append_row(["date2", "ing3", "task3", 0.3])
+ t.append_row(["date3", "ing4", "task2", 0.3])
+ t.append_row(["date1", "ing1", "task3", 0.3])
+ t.append_row(["date3", "ing1", "task3", 0.3])
self.table = t
def test_single_groupby(self):
"""tests groupby() on several columns"""
- grouped = self.table.groupby('date')
+ grouped = self.table.groupby("date")
self.assertEqual(len(grouped), 3)
- self.assertEqual(len(grouped['date1']), 3)
- self.assertEqual(len(grouped['date2']), 1)
- self.assertEqual(len(grouped['date3']), 2)
- self.assertEqual(grouped['date1'], [
- ('date1', 'ing1', 'task1', 0.3),
- ('date1', 'ing2', 'task2', 0.3),
- ('date1', 'ing1', 'task3', 0.3),
- ])
- self.assertEqual(grouped['date2'], [('date2', 'ing3', 'task3', 0.3)])
- self.assertEqual(grouped['date3'], [
- ('date3', 'ing4', 'task2', 0.3),
- ('date3', 'ing1', 'task3', 0.3),
- ])
+ self.assertEqual(len(grouped["date1"]), 3)
+ self.assertEqual(len(grouped["date2"]), 1)
+ self.assertEqual(len(grouped["date3"]), 2)
+ self.assertEqual(
+ grouped["date1"],
+ [
+ ("date1", "ing1", "task1", 0.3),
+ ("date1", "ing2", "task2", 0.3),
+ ("date1", "ing1", "task3", 0.3),
+ ],
+ )
+ self.assertEqual(grouped["date2"], [("date2", "ing3", "task3", 0.3)])
+ self.assertEqual(
+ grouped["date3"], [("date3", "ing4", "task2", 0.3), ("date3", "ing1", "task3", 0.3),]
+ )
def test_multiple_groupby(self):
"""tests groupby() on several columns"""
- grouped = self.table.groupby('date', 'task')
+ grouped = self.table.groupby("date", "task")
self.assertEqual(len(grouped), 3)
- self.assertEqual(len(grouped['date1']), 3)
- self.assertEqual(len(grouped['date2']), 1)
- self.assertEqual(len(grouped['date3']), 2)
- self.assertEqual(grouped['date1']['task1'], [('date1', 'ing1', 'task1', 0.3)])
- self.assertEqual(grouped['date2']['task3'], [('date2', 'ing3', 'task3', 0.3)])
- self.assertEqual(grouped['date3']['task2'], [('date3', 'ing4', 'task2', 0.3)])
- date3 = grouped['date3']
- self.assertRaises(KeyError, date3.__getitem__, 'task1')
-
+ self.assertEqual(len(grouped["date1"]), 3)
+ self.assertEqual(len(grouped["date2"]), 1)
+ self.assertEqual(len(grouped["date3"]), 2)
+ self.assertEqual(grouped["date1"]["task1"], [("date1", "ing1", "task1", 0.3)])
+ self.assertEqual(grouped["date2"]["task3"], [("date2", "ing3", "task3", 0.3)])
+ self.assertEqual(grouped["date3"]["task2"], [("date3", "ing4", "task2", 0.3)])
+ date3 = grouped["date3"]
+ self.assertRaises(KeyError, date3.__getitem__, "task1")
def test_select(self):
"""tests Table.select() method"""
- rows = self.table.select('date', 'date1')
- self.assertEqual(rows, [
- ('date1', 'ing1', 'task1', 0.3),
- ('date1', 'ing2', 'task2', 0.3),
- ('date1', 'ing1', 'task3', 0.3),
- ])
+ rows = self.table.select("date", "date1")
+ self.assertEqual(
+ rows,
+ [
+ ("date1", "ing1", "task1", 0.3),
+ ("date1", "ing2", "task2", 0.3),
+ ("date1", "ing1", "task3", 0.3),
+ ],
+ )
+
class TableStyleSheetTC(TestCase):
"""The Stylesheet test case
"""
+
def setUp(self):
"""Builds a simple table to test the stylesheet
"""
self.table = Table()
- self.table.create_row('row1')
- self.table.create_columns(['a', 'b', 'c'])
+ self.table.create_row("row1")
+ self.table.create_columns(["a", "b", "c"])
self.stylesheet = TableStyleSheet()
# We don't want anything to be printed
self.stdout_backup = sys.stdout
@@ -283,20 +297,20 @@ class TableStyleSheetTC(TestCase):
def test_add_rule(self):
"""Tests that the regex pattern works as expected.
"""
- rule = '0_2 = sqrt(0_0**2 + 0_1**2)'
+ rule = "0_2 = sqrt(0_0**2 + 0_1**2)"
self.stylesheet.add_rule(rule)
self.table.set_row(0, [3, 4, 0])
self.table.apply_stylesheet(self.stylesheet)
self.assertEqual(self.table[0], [3, 4, 5])
self.assertEqual(len(self.stylesheet.rules), 1)
- self.stylesheet.add_rule('some bad rule with bad syntax')
+ self.stylesheet.add_rule("some bad rule with bad syntax")
self.assertEqual(len(self.stylesheet.rules), 1, "Ill-formed rule mustn't be added")
self.assertEqual(len(self.stylesheet.instructions), 1, "Ill-formed rule mustn't be added")
def test_stylesheet_init(self):
"""tests Stylesheet.__init__"""
- rule = '0_2 = 1'
- sheet = TableStyleSheet([rule, 'bad rule'])
+ rule = "0_2 = 1"
+ sheet = TableStyleSheet([rule, "bad rule"])
self.assertEqual(len(sheet.rules), 1, "Ill-formed rule mustn't be added")
self.assertEqual(len(sheet.instructions), 1, "Ill-formed rule mustn't be added")
@@ -309,7 +323,6 @@ class TableStyleSheetTC(TestCase):
val = self.table[0, 2]
self.assertEqual(int(val), 15)
-
def test_rowsum_rule(self):
"""Tests that add_rowsum_rule works as expected
"""
@@ -319,116 +332,114 @@ class TableStyleSheetTC(TestCase):
val = self.table[0, 2]
self.assertEqual(val, 30)
-
def test_colavg_rule(self):
"""Tests that add_colavg_rule works as expected
"""
self.table.set_row(0, [10, 20, 0])
- self.table.append_row([12, 8, 3], 'row2')
- self.table.create_row('row3')
+ self.table.append_row([12, 8, 3], "row2")
+ self.table.create_row("row3")
self.stylesheet.add_colavg_rule((2, 0), 0, 0, 1)
self.table.apply_stylesheet(self.stylesheet)
val = self.table[2, 0]
self.assertEqual(int(val), 11)
-
def test_colsum_rule(self):
"""Tests that add_colsum_rule works as expected
"""
self.table.set_row(0, [10, 20, 0])
- self.table.append_row([12, 8, 3], 'row2')
- self.table.create_row('row3')
+ self.table.append_row([12, 8, 3], "row2")
+ self.table.create_row("row3")
self.stylesheet.add_colsum_rule((2, 0), 0, 0, 1)
self.table.apply_stylesheet(self.stylesheet)
val = self.table[2, 0]
self.assertEqual(val, 22)
-
class TableStyleTC(TestCase):
"""Test suite for TableSuite"""
+
def setUp(self):
self.table = Table()
- self.table.create_rows(['row1', 'row2', 'row3'])
- self.table.create_columns(['col1', 'col2'])
+ self.table.create_rows(["row1", "row2", "row3"])
+ self.table.create_columns(["col1", "col2"])
self.style = TableStyle(self.table)
- self._tested_attrs = (('size', '1*'),
- ('alignment', 'right'),
- ('unit', ''))
+ self._tested_attrs = (("size", "1*"), ("alignment", "right"), ("unit", ""))
def test_getset(self):
"""tests style's get and set methods"""
for attrname, default_value in self._tested_attrs:
- getter = getattr(self.style, 'get_%s' % attrname)
- setter = getattr(self.style, 'set_%s' % attrname)
- self.assertRaises(KeyError, getter, 'badcol')
- self.assertEqual(getter('col1'), default_value)
- setter('FOO', 'col1')
- self.assertEqual(getter('col1'), 'FOO')
+ getter = getattr(self.style, "get_%s" % attrname)
+ setter = getattr(self.style, "set_%s" % attrname)
+ self.assertRaises(KeyError, getter, "badcol")
+ self.assertEqual(getter("col1"), default_value)
+ setter("FOO", "col1")
+ self.assertEqual(getter("col1"), "FOO")
def test_getset_index(self):
"""tests style's get and set by index methods"""
for attrname, default_value in self._tested_attrs:
- getter = getattr(self.style, 'get_%s' % attrname)
- setter = getattr(self.style, 'set_%s' % attrname)
- igetter = getattr(self.style, 'get_%s_by_index' % attrname)
- isetter = getattr(self.style, 'set_%s_by_index' % attrname)
- self.assertEqual(getter('__row_column__'), default_value)
- isetter('FOO', 0)
- self.assertEqual(getter('__row_column__'), 'FOO')
- self.assertEqual(igetter(0), 'FOO')
- self.assertEqual(getter('col1'), default_value)
- isetter('FOO', 1)
- self.assertEqual(getter('col1'), 'FOO')
- self.assertEqual(igetter(1), 'FOO')
+ getter = getattr(self.style, "get_%s" % attrname)
+ setter = getattr(self.style, "set_%s" % attrname)
+ igetter = getattr(self.style, "get_%s_by_index" % attrname)
+ isetter = getattr(self.style, "set_%s_by_index" % attrname)
+ self.assertEqual(getter("__row_column__"), default_value)
+ isetter("FOO", 0)
+ self.assertEqual(getter("__row_column__"), "FOO")
+ self.assertEqual(igetter(0), "FOO")
+ self.assertEqual(getter("col1"), default_value)
+ isetter("FOO", 1)
+ self.assertEqual(getter("col1"), "FOO")
+ self.assertEqual(igetter(1), "FOO")
class RendererTC(TestCase):
"""Test suite for DocbookRenderer"""
+
def setUp(self):
- self.renderer = DocbookRenderer(alignment = True)
+ self.renderer = DocbookRenderer(alignment=True)
self.table = Table()
- self.table.create_rows(['row1', 'row2', 'row3'])
- self.table.create_columns(['col1', 'col2'])
+ self.table.create_rows(["row1", "row2", "row3"])
+ self.table.create_columns(["col1", "col2"])
self.style = TableStyle(self.table)
self.base_renderer = TableCellRenderer()
def test_cell_content(self):
"""test how alignment is rendered"""
- entry_xml = self.renderer._render_cell_content('data', self.style, 1)
+ entry_xml = self.renderer._render_cell_content("data", self.style, 1)
self.assertEqual(entry_xml, "<entry align='right'>data</entry>\n")
- self.style.set_alignment_by_index('left', 1)
- entry_xml = self.renderer._render_cell_content('data', self.style, 1)
+ self.style.set_alignment_by_index("left", 1)
+ entry_xml = self.renderer._render_cell_content("data", self.style, 1)
self.assertEqual(entry_xml, "<entry align='left'>data</entry>\n")
def test_default_content_rendering(self):
"""tests that default rendering just prints the cell's content"""
- rendered_cell = self.base_renderer._render_cell_content('data', self.style, 1)
+ rendered_cell = self.base_renderer._render_cell_content("data", self.style, 1)
self.assertEqual(rendered_cell, "data")
def test_replacement_char(self):
"""tests that 0 is replaced when asked for"""
cell_content = self.base_renderer._make_cell_content(0, self.style, 1)
self.assertEqual(cell_content, 0)
- self.base_renderer.properties['skip_zero'] = '---'
+ self.base_renderer.properties["skip_zero"] = "---"
cell_content = self.base_renderer._make_cell_content(0, self.style, 1)
- self.assertEqual(cell_content, '---')
+ self.assertEqual(cell_content, "---")
def test_unit(self):
"""tests if units are added"""
- self.base_renderer.properties['units'] = True
- self.style.set_unit_by_index('EUR', 1)
+ self.base_renderer.properties["units"] = True
+ self.style.set_unit_by_index("EUR", 1)
cell_content = self.base_renderer._make_cell_content(12, self.style, 1)
- self.assertEqual(cell_content, '12 EUR')
+ self.assertEqual(cell_content, "12 EUR")
class DocbookTableWriterTC(TestCase):
"""TestCase for table's writer"""
+
def setUp(self):
self.stream = StringIO()
self.table = Table()
- self.table.create_rows(['row1', 'row2', 'row3'])
- self.table.create_columns(['col1', 'col2'])
+ self.table.create_rows(["row1", "row2", "row3"])
+ self.table.create_columns(["col1", "col2"])
self.writer = DocbookTableWriter(self.stream, self.table, None)
self.writer.set_renderer(DocbookRenderer())
@@ -442,5 +453,5 @@ class DocbookTableWriterTC(TestCase):
self.assertRaises(NotImplementedError, writer.write_table)
-if __name__ == '__main__':
+if __name__ == "__main__":
unittest_main()