public void WorkdayWithNegativeArgShouldReturnCorrectWhenArrayOfHolidayDatesIsSupplied()
        {
            var inputDate = new DateTime(2016, 7, 27).ToOADate();
            var holidayDate1 = new DateTime(2016, 7, 11).ToOADate();
            var holidayDate2 = new DateTime(2016, 7, 8).ToOADate();
            var expectedDate = new DateTime(2016, 6, 13).ToOADate();

            var func = new Workday();
            var args = FunctionsHelper.CreateArgs(inputDate, -30, FunctionsHelper.CreateArgs(holidayDate1, holidayDate2));
            var result = func.Execute(args, _parsingContext);
            Assert.AreEqual(expectedDate, result.Result);
        }
        public void WorkdayShouldReturnCorrectResultWithFourDaysSupplied()
        {
            var inputDate = new DateTime(2014, 1, 1).ToOADate();
            var expectedDate = new DateTime(2014, 1, 7).ToOADate();

            var func = new Workday();
            var args = FunctionsHelper.CreateArgs(inputDate, 4);
            var result = func.Execute(args, _parsingContext);
            Assert.AreEqual(expectedDate, result.Result);
        }
        public void WorkdayShouldReturnCorrectResultWithNegativeArg()
        {
            var inputDate = new DateTime(2016, 6, 15).ToOADate();
            var expectedDate = new DateTime(2016, 5, 4).ToOADate();

            var func = new Workday();
            var args = FunctionsHelper.CreateArgs(inputDate, -30);
            var result = func.Execute(args, _parsingContext);
            Assert.AreEqual(DateTime.FromOADate(expectedDate), DateTime.FromOADate((double)result.Result));
        }
Example #4
0
 public BuiltInFunctions()
 {
     // Text
     Functions["len"] = new Len();
     Functions["lower"] = new Lower();
     Functions["upper"] = new Upper();
     Functions["left"] = new Left();
     Functions["right"] = new Right();
     Functions["mid"] = new Mid();
     Functions["replace"] = new Replace();
     Functions["rept"] = new Rept();
     Functions["substitute"] = new Substitute();
     Functions["concatenate"] = new Concatenate();
     Functions["char"] = new CharFunction();
     Functions["exact"] = new Exact();
     Functions["find"] = new Find();
     Functions["fixed"] = new Fixed();
     Functions["proper"] = new Proper();
     Functions["text"] = new Text.Text();
     Functions["t"] = new T();
     Functions["hyperlink"] = new Hyperlink();
     // Numbers
     Functions["int"] = new CInt();
     // Math
     Functions["abs"] = new Abs();
     Functions["asin"] = new Asin();
     Functions["asinh"] = new Asinh();
     Functions["cos"] = new Cos();
     Functions["cosh"] = new Cosh();
     Functions["power"] = new Power();
     Functions["sign"] = new Sign();
     Functions["sqrt"] = new Sqrt();
     Functions["sqrtpi"] = new SqrtPi();
     Functions["pi"] = new Pi();
     Functions["product"] = new Product();
     Functions["ceiling"] = new Ceiling();
     Functions["count"] = new Count();
     Functions["counta"] = new CountA();
     Functions["countblank"] = new CountBlank();
     Functions["countif"] = new CountIf();
     Functions["countifs"] = new CountIfs();
     Functions["fact"] = new Fact();
     Functions["floor"] = new Floor();
     Functions["sin"] = new Sin();
     Functions["sinh"] = new Sinh();
     Functions["sum"] = new Sum();
     Functions["sumif"] = new SumIf();
     Functions["sumifs"] = new SumIfs();
     Functions["sumproduct"] = new SumProduct();
     Functions["sumsq"] = new Sumsq();
     Functions["stdev"] = new Stdev();
     Functions["stdevp"] = new StdevP();
     Functions["stdev.s"] = new Stdev();
     Functions["stdev.p"] = new StdevP();
     Functions["subtotal"] = new Subtotal();
     Functions["exp"] = new Exp();
     Functions["log"] = new Log();
     Functions["log10"] = new Log10();
     Functions["ln"] = new Ln();
     Functions["max"] = new Max();
     Functions["maxa"] = new Maxa();
     Functions["median"] = new Median();
     Functions["min"] = new Min();
     Functions["mina"] = new Mina();
     Functions["mod"] = new Mod();
     Functions["average"] = new Average();
     Functions["averagea"] = new AverageA();
     Functions["averageif"] = new AverageIf();
     Functions["averageifs"] = new AverageIfs();
     Functions["round"] = new Round();
     Functions["rounddown"] = new Rounddown();
     Functions["roundup"] = new Roundup();
     Functions["rand"] = new Rand();
     Functions["randbetween"] = new RandBetween();
     Functions["quotient"] = new Quotient();
     Functions["trunc"] = new Trunc();
     Functions["tan"] = new Tan();
     Functions["tanh"] = new Tanh();
     Functions["atan"] = new Atan();
     Functions["atan2"] = new Atan2();
     Functions["atanh"] = new Atanh();
     Functions["acos"] = new Acos();
     Functions["acosh"] = new Acosh();
     Functions["var"] = new Var();
     Functions["varp"] = new VarP();
     Functions["large"] = new Large();
     Functions["small"] = new Small();
     Functions["degrees"] = new Degrees();
     // Information
     Functions["isblank"] = new IsBlank();
     Functions["isnumber"] = new IsNumber();
     Functions["istext"] = new IsText();
     Functions["isnontext"] = new IsNonText();
     Functions["iserror"] = new IsError();
     Functions["iserr"] = new IsErr();
     Functions["error.type"] = new ErrorType();
     Functions["iseven"] = new IsEven();
     Functions["isodd"] = new IsOdd();
     Functions["islogical"] = new IsLogical();
     Functions["isna"] = new IsNa();
     Functions["na"] = new Na();
     Functions["n"] = new N();
     // Logical
     Functions["if"] = new If();
     Functions["iferror"] = new IfError();
     Functions["ifna"] = new IfNa();
     Functions["not"] = new Not();
     Functions["and"] = new And();
     Functions["or"] = new Or();
     Functions["true"] = new True();
     Functions["false"] = new False();
     // Reference and lookup
     Functions["address"] = new Address();
     Functions["hlookup"] = new HLookup();
     Functions["vlookup"] = new VLookup();
     Functions["lookup"] = new Lookup();
     Functions["match"] = new Match();
     Functions["row"] = new Row(){SkipArgumentEvaluation = true};
     Functions["rows"] = new Rows(){SkipArgumentEvaluation = true};
     Functions["column"] = new Column(){SkipArgumentEvaluation = true};
     Functions["columns"] = new Columns(){SkipArgumentEvaluation = true};
     Functions["choose"] = new Choose();
     Functions["index"] = new Index();
     Functions["indirect"] = new Indirect();
     Functions["offset"] = new Offset(){SkipArgumentEvaluation = true};
     // Date
     Functions["date"] = new Date();
     Functions["today"] = new Today();
     Functions["now"] = new Now();
     Functions["day"] = new Day();
     Functions["month"] = new Month();
     Functions["year"] = new Year();
     Functions["time"] = new Time();
     Functions["hour"] = new Hour();
     Functions["minute"] = new Minute();
     Functions["second"] = new Second();
     Functions["weeknum"] = new Weeknum();
     Functions["weekday"] = new Weekday();
     Functions["days360"] = new Days360();
     Functions["yearfrac"] = new Yearfrac();
     Functions["edate"] = new Edate();
     Functions["eomonth"] = new Eomonth();
     Functions["isoweeknum"] = new IsoWeekNum();
     Functions["workday"] = new Workday();
     // Database
     Functions["dget"] = new Dget();
     Functions["dcount"] = new Dcount();
     Functions["dcounta"] = new DcountA();
     Functions["dmax"] = new Dmax();
     Functions["dmin"] = new Dmin();
     Functions["dsum"] = new Dsum();
     Functions["daverage"] = new Daverage();
     Functions["dvar"] = new Dvar();
     Functions["dvarp"] = new Dvarp();
 }