def read_schedule(self, fname): schedule = xml_parse( fname ) checker = ScheduleChecker() if not checker.validate(schedule, fname): raise MalformedProjectFile(str(checker)) activities = Table(default_value=None, col_names=['begin', 'end', 'resource', 'task', 'usage', 'src']) tasks = Table(default_value=None, col_names=['begin', 'end', 'status', 'cost', 'unit']) costs = Table(default_value=None, col_names=['task', 'resource', 'cost', 'unit']) for task in schedule.findall("task"): t_id = task.get('id') tasks.create_row( t_id ) global_cost = task.find("global-cost") tasks.set_cell_by_ids(t_id, 'unit', global_cost.get('unit')) tasks.set_cell_by_ids(t_id, 'cost', float(global_cost.text) ) tasks.set_cell_by_ids(t_id, 'status', task.find('status').text ) for cd in task.findall("contraint-date"): date = iso_date( cd.text ) if cd.get('type') == 'begin-at-date': tasks.set_cell_by_ids( t_id, 'begin', date ) elif cd.get('type') == 'end-at-date': tasks.set_cell_by_ids( t_id, 'end', date ) for ct in task.findall("constraint-task"): pass #raise NotImplementedError("constraint-task not implemented in schedule") for report in task.findall("report-list/report"): activities.append_row( (iso_date(report.get('from')), iso_date(report.get('to')), report.get('idref'), t_id, float(report.get('usage')) ) ) for cost in task.findall("costs_list/cost"): costs.append_row( (t_id, cost.attrib['idref'],float(cost.text),None) ) for milestone in schedule.findall("milestone"): t_id = milestone.get('id') cd = milestone.find("constraint-date") date = iso_date( cd.text ) self.project.milestones[t_id] = date self.project.add_schedule(activities) self.project.tasks = tasks self.project.costs = costs self.project.nb_solution = 1 # if we read a schedule from an xml file,
class TableTC(TestCase): """Table TestCase class""" def setUp(self): """Creates a default table""" # from logilab.common import table # reload(table) self.table = Table() 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.append_row([1]) self.assertEqual(tab, [[1]]) tab.append_row([2]) self.assertEqual(tab[0,0], 1) self.assertEqual(tab[1,0], 2) def test_valeur_ligne(self): tab = Table() 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.append_row([1]) tab.append_row([2]) self.assertEqual(tab, [[1],[2]]) self.assertEqual(tab[:,0], [1,2]) def test_indexation(self): """we should be able to use [] to access rows""" self.assert_(self.table[0] == self.table.data[0]) self.assert_(self.table[1] == self.table.data[1]) def test_iterable(self): """test iter(table)""" it = iter(self.table) self.assert_(it.next() == self.table.data[0]) self.assert_(it.next() == self.table.data[1]) def test_get_rows(self): """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.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.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')) def test_shape(self): """tests table shape""" self.assertEqual(self.table.shape, (3, 2)) self.table.insert_column(1, range(3), 'supp') self.assertEqual(self.table.shape, (3, 3)) def test_set_column(self): """Tests that table.set_column() works fine. """ self.table.set_column(0, range(3)) self.assertEqual(self.table[0,0], 0) self.assertEqual(self.table[1,0], 1) self.assertEqual(self.table[2,0], 2) 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.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)) 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.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') def test_insert_row(self): """tests a row insertion""" 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[1], [0, 0]) self.assertRaises(KeyError, self.table.__getitem__, 'tmprow') def test_get_column(self): """Tests that table.get_column() works fine. """ 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]) def test_get_columns(self): """Tests if table.get_columns() works fine. """ self.table.set_cell(0, 1, 12) self.table.set_cell(2, 1, 13) self.assertEqual(self.table.get_columns(), [[0,0,0], [12,0,13]]) def test_insert_column(self): """Tests that table.insert_column() works fine. """ 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']) 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[:,0], [0,0,0]) 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') ttable = self.table.transpose() 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): """Tests the table sort by column """ 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.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.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.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.assertEqual(self.table.data, [[2, 3], [1, 2], [3, 1]]) def test_pprint(self): """only tests pprint doesn't raise an exception""" self.table.pprint() str(self.table)
class TableTC(TestCase): """Table TestCase class""" def setUp(self): """Creates a default table""" # from logilab.common import table # reload(table) self.table = Table() 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.append_row([1]) self.assertEqual(tab, [[1]]) tab.append_row([2]) self.assertEqual(tab[0, 0], 1) self.assertEqual(tab[1, 0], 2) def test_valeur_ligne(self): tab = Table() 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.append_row([1]) tab.append_row([2]) self.assertEqual(tab, [[1], [2]]) self.assertEqual(tab[:, 0], [1, 2]) def test_indexation(self): """we should be able to use [] to access rows""" self.assert_(self.table[0] == self.table.data[0]) self.assert_(self.table[1] == self.table.data[1]) def test_iterable(self): """test iter(table)""" it = iter(self.table) self.assert_(it.next() == self.table.data[0]) self.assert_(it.next() == self.table.data[1]) def test_get_rows(self): """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.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.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')) def test_shape(self): """tests table shape""" self.assertEqual(self.table.shape, (3, 2)) self.table.insert_column(1, range(3), 'supp') self.assertEqual(self.table.shape, (3, 3)) def test_set_column(self): """Tests that table.set_column() works fine. """ self.table.set_column(0, range(3)) self.assertEqual(self.table[0, 0], 0) self.assertEqual(self.table[1, 0], 1) self.assertEqual(self.table[2, 0], 2) 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.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)) 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.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') def test_insert_row(self): """tests a row insertion""" 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[1], [0, 0]) self.assertRaises(KeyError, self.table.__getitem__, 'tmprow') def test_get_column(self): """Tests that table.get_column() works fine. """ 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]) def test_get_columns(self): """Tests if table.get_columns() works fine. """ self.table.set_cell(0, 1, 12) self.table.set_cell(2, 1, 13) self.assertEqual(self.table.get_columns(), [[0, 0, 0], [12, 0, 13]]) def test_insert_column(self): """Tests that table.insert_column() works fine. """ 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']) 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[:, 0], [0, 0, 0]) 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') ttable = self.table.transpose() 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): """Tests the table sort by column """ 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.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.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.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.assertEqual(self.table.data, [[2, 3], [1, 2], [3, 1]]) def test_pprint(self): """only tests pprint doesn't raise an exception""" self.table.pprint() str(self.table)
class TableTC(TestCase): """Table TestCase class""" def setUp(self): """Creates a default table""" # from logilab.common import table # reload(table) self.table = Table() 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.append_row([1]) self.assertEqual(tab, [[1]]) tab.append_row([2]) self.assertEqual(tab[0, 0], 1) self.assertEqual(tab[1, 0], 2) def test_valeur_ligne(self): tab = Table() 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.append_row([1]) tab.append_row([2]) self.assertEqual(tab, [[1], [2]]) self.assertEqual(tab[:, 0], [1, 2]) def test_indexation(self): """we should be able to use [] to access rows""" self.assert_(self.table[0] == self.table.data[0]) self.assert_(self.table[1] == self.table.data[1]) def test_iterable(self): """test iter(table)""" it = iter(self.table) self.assert_(it.next() == self.table.data[0]) self.assert_(it.next() == self.table.data[1]) def test_get_rows(self): """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.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.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")) def test_shape(self): """tests table shape""" self.assertEqual(self.table.shape, (3, 2)) self.table.insert_column(1, range(3), "supp") self.assertEqual(self.table.shape, (3, 3)) def test_set_column(self): """Tests that table.set_column() works fine. """ self.table.set_column(0, range(3)) self.assertEqual(self.table[0, 0], 0) self.assertEqual(self.table[1, 0], 1) self.assertEqual(self.table[2, 0], 2) 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.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)) 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.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") def test_insert_row(self): """tests a row insertion""" 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[1], [0, 0]) self.assertRaises(KeyError, self.table.__getitem__, "tmprow") def test_get_column(self): """Tests that table.get_column() works fine. """ 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]) def test_get_columns(self): """Tests if table.get_columns() works fine. """ self.table.set_cell(0, 1, 12) self.table.set_cell(2, 1, 13) self.assertEqual(self.table.get_columns(), [[0, 0, 0], [12, 0, 13]]) def test_insert_column(self): """Tests that table.insert_column() works fine. """ 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"]) 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[:, 0], [0, 0, 0]) 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") ttable = self.table.transpose() 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): """Tests the table sort by column """ 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.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.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.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.assertEqual(self.table.data, [[2, 3], [1, 2], [3, 1]]) def test_pprint(self): """only tests pprint doesn't raise an exception""" self.table.pprint() str(self.table)