public void CountPostfixOperations()
 {
     var fa = new FormulaAnalyzer("A6%");
     var ops = fa.Functions().ToList();
     Assert.AreEqual(1, ops.Count());
     CollectionAssert.Contains(ops, "%");
 }
 public void CountFunctionOperations()
 {
     var fa = new FormulaAnalyzer("SUM(3,5)");
     var ops = fa.Functions().ToList();
     Assert.AreEqual(1, ops.Count());
     CollectionAssert.Contains(ops, "SUM");
 }
 public void FixedInt()
 {
     var fa = new FormulaAnalyzer("3");
     var nums = fa.Numbers().ToList();
     CollectionAssert.Contains(nums, 3.0);
     Assert.AreEqual(1, nums.Count());
 }
 public void CountInfixOperations()
 {
     var fa = new FormulaAnalyzer("3+4/5");
     var ops = fa.Functions().ToList();
     Assert.AreEqual(2, ops.Count());
     CollectionAssert.Contains(ops, "+");
     CollectionAssert.Contains(ops, "/");
 }
 public void CountComparisons()
 {
     var fa = new FormulaAnalyzer("IF(A1>A2,3,4)");
     var ops = fa.Functions().Distinct().ToList();
     Assert.AreEqual(2, ops.Count());
     CollectionAssert.Contains(ops, ">");
     CollectionAssert.Contains(ops, "IF");
 }
        public void FixedNumbers()
        {
            var fa = new FormulaAnalyzer("SUM(A1,3.1+4)");
            var nums = fa.Numbers().ToList();

            CollectionAssert.Contains(nums, 3.1);
            CollectionAssert.Contains(nums, 4.0);
            Assert.AreEqual(2, nums.Count());
        }
 public void DontCountSheetReferenes()
 {
     string formula = "Weight!B1";
     var fa = new FormulaAnalyzer(formula);
     Assert.AreEqual(0, fa.Functions().Count());
 }
 public void ComparisonIsFunction()
 {
     var fa = new FormulaAnalyzer("IF(A1<=A2,A1+1,A2)");
     CollectionAssert.Contains(fa.Functions().ToList(), "<=");
 }
 public void TestConditionalComplexity()
 {
     var fa1 = new FormulaAnalyzer("1");
     Assert.AreEqual(fa1.ConditionalComplexity(), 0);
     var fa2 = new FormulaAnalyzer("IF(TRUE,IF(FALSE,1,0),0)");
     Assert.AreEqual(fa2.ConditionalComplexity(), 2);
 }
 public void OnlyDirectReferences()
 {
     // Make sure A1:A10 isn't returned as "A1:A10", "A1" and "A10"
     var fa = new FormulaAnalyzer("SUM(A1:A10)");
     var references = fa.References().ToList();
     Assert.AreEqual(1, references.Count());
     CollectionAssert.Contains(references.Select(ExcelFormulaParser.Print).ToList(), "A1:A10");
 }
 public void NoFixedNumbers()
 {
     var fa = new FormulaAnalyzer("A1+B2");
     var nums = fa.Numbers().ToList();
     Assert.AreEqual(0, nums.Count());
 }
 public void IntersectIsFunction()
 {
     var fa = new FormulaAnalyzer("SUM(A1:A3 A2:A3)");
     var functions = fa.Functions().Distinct().ToList();
     CollectionAssert.Contains(functions, "INTERSECT");
 }
 public void NegativeNumber()
 {
     var fa = new FormulaAnalyzer("=-8+A1");
     var nums = fa.Numbers().ToList();
     CollectionAssert.AreEqual(new[] { -8.0 }, nums);
 }
 public void TestConstants()
 {
     var fa = new FormulaAnalyzer("1*3-8-(-9)+VLOOKUP($A:$B,5,10)&\"ABC\"+TRUE*-3");
     var constants = fa.Constants().ToList();
     CollectionAssert.AreEqual(new[] { "1", "3", "8", "-9", "5", "10", "\"ABC\"", "TRUE", "-3"}, constants);
 }
 public void Duplicate()
 {
     var fa = new FormulaAnalyzer("3+3");
     var nums = fa.Numbers().ToList();
     Assert.AreEqual(2, nums.Count());
 }
 public void TestDepth()
 {
     var fa = new FormulaAnalyzer("SUM(1,2+SUM(3),3)");
     Assert.AreEqual(fa.Depth(), 4);
     Assert.AreEqual(fa.OperatorDepth(), 3);
 }
 public void OnlyDirectReferences()
 {
     // Make sure A1:A10 isn't returned as "A1:A10", "A1" and "A10"
     var fa = new FormulaAnalyzer("SUM(A1:A10)");
     var references = fa.References().ToList();
     CollectionAssert.AreEqual(references.Select(ExcelFormulaParser.Print).ToList(), new [] { "A1:A10" });
     fa = new FormulaAnalyzer("(A1)+2");
     references = fa.References().ToList();
     CollectionAssert.AreEqual(references.Select(ExcelFormulaParser.Print).ToList(), new [] {"A1" });
 }