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);
    }
Beispiel #3
0
    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"));
    }
Beispiel #5
0
 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();
     }
 }
Beispiel #6
0
 private void ClearFormulaEngine()
 {
     MyFormulaEngine.Clear();
     MyFormulaEngine.Sheets.Add(MyGrid);
 }