def setUp(self): table = ht.createTable("test", column_name=COLUMN1) self.api = APIFormulas(table) ht.setupTableInitialization(self)
class TestAPIFormulas(unittest.TestCase): def setUp(self): table = ht.createTable("test", column_name=COLUMN1) self.api = APIFormulas(table) ht.setupTableInitialization(self) def testGetValidatedColumn(self): if IGNORE_TEST: return column = self.api.getColumn(COLUMN1) self.assertEqual(column.getName(), COLUMN1) def _createColumn(self): self.api.createColumn(COLUMN2) return self.api.getColumn(COLUMN2) def testCreateColumn(self): if IGNORE_TEST: return column = self._createColumn() self.assertEqual(column.getName(), COLUMN2) def testDeleteColumn(self): if IGNORE_TEST: return _ = self._createColumn() self.api.deleteColumn(COLUMN2) is_absent = all([c.getName() != COLUMN2 for c in self.api._table.getColumns()]) self.assertTrue(is_absent) _ = self._createColumn() self.api.deleteColumn(2) is_absent = all([c.getName() != COLUMN2 for c in self.api._table.getColumns()]) self.assertTrue(is_absent) def testCreateTruthTable(self): return # Don't test TruthTable since not completed self._createTruthTable() for n in range(len(TRUTH_COLUMNS)): self.assertTrue(any([c.getName() == TRUTH_COLUMNS[n] for c in self.api._table.getColumns()])) def _OldcreateDataframe(self, prefix="", names=None): df = pd.DataFrame() data = {} if names is None: names = [c.getNames() for c in self.api.getTable().getColumns()] if len(names) >= 3: data[names[2]] = [100.0, 200.0, 300.0] if len(names) >= 2: data[names[1]] = [10.1, 20.0, 30.0] if len(names) >= 1: data[names[0]] = ["one", "two", "three"] for name in names: df[name] = data[name] return df def _createDataframe(self, prefix="", names=None): if names is None: data = self.api.getTable().getData() if "row" in data: import pdb pdb.set_trace() pass else: data = {} if len(names) >= 3: data[names[2]] = [100.0, 200.0, 300.0, 400.0, 500.0] if len(names) >= 2: data[names[1]] = [10.1, 20.0, 30.0, 40.0, 50.0] if len(names) >= 1: data[names[0]] = ["one", "two", "three", "four", "five"] df = pd.DataFrame(data) return df def _TableContainsDataframe(self, table, dataframe, names=None): if names is None: names = list(set(dataframe.columns).union(table.getColumnNames())) for name in dataframe.columns: column = table.columnFromName(name) self.assertTrue([dataframe[name].tolist() == column.getCells()]) def testCreateFromDataframe(self): if IGNORE_TEST: return df = self._createDataframe() table = self.api.dataframeToTable("NewTable", df) num = len(df.columns) for name in df.columns: column = table.columnFromName(name) b = all([df[name][n] == column.getCells()[n] for n in range(num)]) self.assertTrue(b) def testAddColumnsToDataframeMissingTable(self): if IGNORE_TEST: return try: table = self.api.getTable() df, names = Table.getCapture(TEST_FILE1) column_names = [c.getName() for c in table.getColumns()] for name in names: self.assertFalse(name in column_names) self.api.addColumnsToTableFromDataframe(df, names=names) column_names = [c.getName() for c in table.getColumns()] for name in names: self.assertTrue(name in column_names) column = table.columnFromName(name) self.assertIsNotNone(column.getTable()) except AttributeError as err: # Can't handle the captured pickle file pass return def _testAddFromDataframe(self, prefix="", names=None): df = self._createDataframe(prefix=prefix, names=names) self.api.addColumnsToTableFromDataframe(df, names=names) num = len(df.columns) if names is None: names = list(df.columns) self._TableContainsDataframe(self.api._table, df, names=names) def testAddFromDataframe(self): if IGNORE_TEST: return self._testAddFromDataframe() # Name conflicts self._testAddFromDataframe(names=["DUMMY1_COLUMN"]) self._testAddFromDataframe(prefix="D") # No name conflicts self._testAddFromDataframe(prefix="D", names=["DDUMMY1_COLUMN", "DDUMMY2_COLUMN"]) def _testToDataframe(self, names=None): df = self.api.tableToDataframe(columns=names) if names is None: columns = self.api.getTable().getDataColumns() else: columns = [self.api.getTable().columnFromName(n) for n in names] self.assertEqual(len(df.columns), len(columns)) for name in df.columns: column = self.api.getTable().columnFromName(name) self.assertTrue(list(df[name]) == column.getCells()) def testToDataframe(self): if IGNORE_TEST: return self.api._table = self.table self._testToDataframe() self._testToDataframe(names=["DUMMY1_COLUMN"])