private void Clear() { MyFormulaEngine.Clear(); MyFormulaEngine.Sheets.Add(MySheet1); MyFormulaEngine.Sheets.Add(MySheet2); MyCircularReferenceFlag = false; }
private void DoAddFormula(Formula f, IReference @ref) { bool sawException = false; try { MyFormulaEngine.AddFormula(f, @ref); } catch (Exception ex) { sawException = true; } Assert.IsTrue(sawException); }
private void ProcessFormulaEvaluateAgainstExcel(string formula) { this.ClearFormulaEngine(); //Console.WriteLine(formula) try { object formulaResult = MyFormulaEngine.Evaluate(formula); object excelResult = this.EvaluateFormulaInExcel(formula); this.CompareResults(formulaResult, excelResult, formula); } catch (Exception ex) { Console.WriteLine("Failed formula: {0}", formula); throw ex; } }
public void TestAddFormula() { // Null formula this.DoAddFormula(null, MyFormulaEngine.ReferenceFactory.Parse("a1")); Formula f = MyFormulaEngine.CreateFormula("1+1"); // Null ref this.DoAddFormula(f, null); // Invalid references this.DoAddFormula(f, MyFormulaEngine.ReferenceFactory.Cells(2, 2, 4, 4)); this.DoAddFormula(f, MyFormulaEngine.ReferenceFactory.Columns(3, 4)); this.DoAddFormula(f, MyFormulaEngine.ReferenceFactory.Rows(5, 6)); // Add with duplicate reference MyFormulaEngine.AddFormula(f, MyFormulaEngine.ReferenceFactory.Parse("A1")); this.DoAddFormula(f, MyFormulaEngine.ReferenceFactory.Parse("A1")); }
public void TestCultureSensitiveParse() { // Test that we set the decimal point and argument separator based on the current culture System.Globalization.CultureInfo oldCi = System.Threading.Thread.CurrentThread.CurrentCulture; System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("et-EE"); System.Threading.Thread.CurrentThread.CurrentCulture = ci; Formula.RecreateParser(); try { Formula f = MyFormulaEngine.CreateFormula("13,45 + sum(1;2;3)"); double result = (double)f.Evaluate(); Assert.AreEqual(19.45, result); } catch (InvalidFormulaException ex) { Assert.IsTrue(false); } finally { // Reset this or excel will give us problems System.Threading.Thread.CurrentThread.CurrentCulture = oldCi; // Recreate parser in default culture for other tests Formula.RecreateParser(); } }
private void ClearFormulaEngine() { MyFormulaEngine.Clear(); MyFormulaEngine.Sheets.Add(MyGrid); }