def testTableWithLists(self): if IGNORE_TEST: return nrow = NROW + 1 ncol = 4 formula_columns = [3, 2] formula1 = '''xx = range(1,%d) Col_2 = [] for x in xx: Col_2.append(range(x)) ''' % nrow formula2 = """Col_1 = [] for x in Col_2: Col_1.append(np.average(x)) """ base_response = self._createBaseTable(params=[NROW, ncol]) old_table = self._getTableFromResponse(base_response) # Change the first formula response = self._setFormula(old_table, formula1, formula_columns[0]) # Change the second formula response = self._setFormula(old_table, formula2, formula_columns[1]) # Check the table new_table = self._getTableFromResponse(response) error = new_table.evaluate(user_directory=TEST_DIR) self.assertEqual(new_table.numColumns(), old_table.numColumns()) self.assertTrue( compareTableData(old_table, new_table, excludes=formula_columns)) val = new_table.getColumns()[formula_columns[1]].getCells()[1] self.assertEqual(val, 0.5)
def _formulaColumn(self, column_idx, formula, isValid): # Inputs: column_idx - index of column whose formula is changed # formula - new formula for column # isValid - is a valid formula # Assumes that formula ony changes column_idx base_response = self._createBaseTable() table = self._getTableFromResponse(base_response) old_table = table.copy() column = table.columnFromIndex(column_idx) column_name = column.getName(is_global_name=False) old_formula = column.getFormula() # Reset the formula ajax_cmd = self._helper_http.ajaxCommandFactory() ajax_cmd['target'] = "Column" ajax_cmd['command'] = "Formula" ajax_cmd['columnName'] = column_name ajax_cmd['args[]'] = formula command_url = self._helper_http.createURLFromAjaxCommand( ajax_cmd, address=BASE_URL) response = self.client.get(command_url) content = json.loads(response.content) self.assertTrue(content.has_key("success")) # Check the table new_table = self._getTableFromResponse(response) new_column = new_table.childFromName(column_name, is_relative=False) if isValid: self.assertTrue(content["success"]) self.assertEqual(formula, new_column.getFormula()) else: self.assertFalse(content["success"]) self.assertEqual(formula, new_column.getFormula()) # Check the columns self.assertTrue( compareTableData(old_table, new_table, excludes=[column_idx]))
def testTableWithLists(self): if IGNORE_TEST: return nrow = NROW + 1 ncol = 4 formula_columns = [3, 2] formula1 = '''xx = range(1,%d) Col_2 = [] for x in xx: Col_2.append(range(x)) ''' % nrow formula2 = """Col_1 = [] for x in Col_2: Col_1.append(np.average(x)) """ base_response = self._createBaseTable(params=[NROW, ncol]) old_table = self._getTableFromResponse(base_response) # Change the first formula response = self._setFormula(formula1, formula_columns[0]) # Change the second formula response = self._setFormula(formula2, formula_columns[1]) # Check the table new_table = self._getTableFromResponse(response) error = new_table.evaluate(user_directory=TEST_DIR) self.assertEqual(new_table.numColumns(), old_table.numColumns()) self.assertTrue(compareTableData(old_table, new_table, excludes=formula_columns)) val = new_table.getColumns()[formula_columns[1]].getCells()[1] self.assertEqual(val, 0.5)
def _formulaColumn(self, column_idx, formula, isValid): # Inputs: column_idx - index of column whose formula is changed # formula - new formula for column # isValid - is a valid formula # Assumes that formula ony changes column_idx base_response = self._createBaseTable() table = self._getTableFromResponse(base_response) old_table = table.copy() column = table.columnFromIndex(column_idx) old_formula = column.getFormula() # Reset the formula ajax_cmd = self._ajaxCommandFactory() ajax_cmd['target'] = "Column" ajax_cmd['command'] = "Formula" ajax_cmd['column'] = column_idx ajax_cmd['args[]'] = formula command_url = self._createURLFromAjaxCommand(ajax_cmd, address=BASE_URL) response = self.client.get(command_url) content = json.loads(response.content) self.assertTrue(content.has_key("success")) # Check the table new_table = self._getTableFromResponse(response) new_column = new_table.columnFromIndex(column_idx) if isValid: self.assertTrue(content["success"]) self.assertEqual(formula, new_column.getFormula()) else: self.assertFalse(content["success"]) self.assertEqual(formula, new_column.getFormula()) # Check the columns self.assertTrue(compareTableData(old_table, new_table, excludes=[column_idx]))
def _testUndoTable(self, formula): colidx = 1 # Inputs: formula - new formula for column base_response = self._createBaseTable() old_table = self._getTableFromResponse(base_response) column = old_table.columnFromIndex(colidx) self.assertIsNone(column.getFormula()) # Change the formula changed_table = self._submitCommand("Column", "Formula", colidx, formula) column = changed_table.columnFromIndex(colidx) self.assertEqual(column.getFormula(), formula) # Undo the change undone_table = self._submitCommand("Table", "Undo", colidx, "") column = undone_table.columnFromIndex(colidx) self.assertIsNone(column.getFormula()) self.assertTrue(compareTableData(old_table, undone_table))
def _testUndoTable(self, formula): """ :param str formula: :return Table: """ colidx = 1 # Inputs: formula - new formula for column base_response = self._createBaseTable() old_table = self._getTableFromResponse(base_response) column = old_table.columnFromIndex(colidx) self.assertIsNone(column.getFormula()) # Change the formula changed_table = self._submitCommand(old_table, "Column", "Formula", colidx, formula) column = changed_table.columnFromIndex(colidx) self.assertEqual(column.getFormula(), formula) # Undo the change undone_table = self._submitCommand(changed_table, "Sheet", "Undo", colidx, "") column = undone_table.columnFromIndex(colidx) self.assertIsNone(column.getFormula()) self.assertTrue(compareTableData(old_table, undone_table)) return undone_table