Example #1
0
 def setUp(self):
     table = ht.createTable("test", column_name=COLUMN1)
     self.api = APIFormulas(table)
     ht.setupTableInitialization(self)
Example #2
0
 def setUp(self):
   table = ht.createTable("test", column_name=COLUMN1)
   self.api = APIFormulas(table)
   ht.setupTableInitialization(self)
Example #3
0
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"])