Esempio n. 1
0
        public static void DbFunctions_DATEDIFF()
        {
            DbFunctionTools tools = new DbFunctionTools();

            {
                Console.WriteLine("Testing DbFunctions.DATEDIFF(year)...");

                List <DbValue> args     = new List <DbValue>();
                mstring        datepart = mstring.Prepare("year");
                args.Add(tools.AllocValue(datepart));
                DateTime startdate = new DateTime(2010, 12, 2, 10, 0, 0);
                args.Add(tools.AllocValue(startdate));
                DateTime enddate = new DateTime(2000, 9, 14, 12, 0, 0);
                args.Add(tools.AllocValue(enddate));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue   valOutput = DbFunctions.DATEDIFF(tools, fargs);
                ByteSlice bs        = valOutput.Eval();
                double    output    = tools.GetDouble(bs);
                double    expected  = -10;

                if (expected != output)
                {
                    throw new Exception("DbFunctions.DATEDIFF(year) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

            {
                Console.WriteLine("Testing DbFunctions.DATEDIFF(quarter)...");

                List <DbValue> args     = new List <DbValue>();
                mstring        datepart = mstring.Prepare("qq");
                args.Add(tools.AllocValue(datepart));
                DateTime startdate = new DateTime(2000, 7, 1, 10, 0, 0);
                args.Add(tools.AllocValue(startdate));
                DateTime enddate = new DateTime(2002, 8, 30, 12, 0, 0);
                args.Add(tools.AllocValue(enddate));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue   valOutput = DbFunctions.DATEDIFF(tools, fargs);
                ByteSlice bs        = valOutput.Eval();
                double    output    = tools.GetDouble(bs);
                double    expected  = 8;

                if (expected != output)
                {
                    throw new Exception("DbFunctions.DATEDIFF(quarter) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

            {
                Console.WriteLine("Testing DbFunctions.DATEDIFF(month)...");

                List <DbValue> args     = new List <DbValue>();
                mstring        datepart = mstring.Prepare("month");
                args.Add(tools.AllocValue(datepart));
                DateTime startdate = new DateTime(2000, 7, 1, 10, 0, 0);
                args.Add(tools.AllocValue(startdate));
                DateTime enddate = new DateTime(2002, 8, 15, 12, 0, 0);
                args.Add(tools.AllocValue(enddate));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue   valOutput = DbFunctions.DATEDIFF(tools, fargs);
                ByteSlice bs        = valOutput.Eval();
                double    output    = tools.GetDouble(bs);
                double    expected  = 25;

                if (expected != output)
                {
                    throw new Exception("DbFunctions.DATEDIFF(month) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

            {
                Console.WriteLine("Testing DbFunctions.DATEDIFF(day)...");

                List <DbValue> args     = new List <DbValue>();
                mstring        datepart = mstring.Prepare("d");
                args.Add(tools.AllocValue(datepart));
                DateTime startdate = new DateTime(2000, 7, 1, 10, 0, 0);
                args.Add(tools.AllocValue(startdate));
                DateTime enddate = new DateTime(2002, 8, 20, 12, 0, 0);
                args.Add(tools.AllocValue(enddate));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue   valOutput = DbFunctions.DATEDIFF(tools, fargs);
                ByteSlice bs        = valOutput.Eval();
                double    output    = tools.GetDouble(bs);

                double expected = 0;
                {
                    DateTime xstartdate = new DateTime(2000, 7, 1);
                    DateTime xenddate   = new DateTime(2002, 8, 20);
                    TimeSpan sp         = xenddate - xstartdate;
                    expected = sp.TotalDays;
                }

                if (expected != output)
                {
                    throw new Exception("DbFunctions.DATEDIFF(day) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

            {
                Console.WriteLine("Testing DbFunctions.DATEDIFF(week)...");

                List <DbValue> args     = new List <DbValue>();
                mstring        datepart = mstring.Prepare("week");
                args.Add(tools.AllocValue(datepart));
                DateTime startdate = new DateTime(2000, 7, 1, 10, 0, 0);
                args.Add(tools.AllocValue(startdate));
                DateTime enddate = new DateTime(2002, 8, 20, 12, 0, 0);
                args.Add(tools.AllocValue(enddate));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue   valOutput = DbFunctions.DATEDIFF(tools, fargs);
                ByteSlice bs        = valOutput.Eval();
                double    output    = tools.GetDouble(bs);

                double expected = 0;
                {
                    DateTime xstartdate = new DateTime(2000, 7, 1);
                    DateTime xenddate   = new DateTime(2002, 8, 20);
                    TimeSpan sp         = xenddate - xstartdate;
                    expected = (int)sp.TotalDays / 7;
                }

                if (expected != output)
                {
                    throw new Exception("DbFunctions.DATEDIFF(week) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

            {
                Console.WriteLine("Testing DbFunctions.DATEDIFF(hour)...");

                List <DbValue> args     = new List <DbValue>();
                mstring        datepart = mstring.Prepare("hh");
                args.Add(tools.AllocValue(datepart));
                DateTime startdate = new DateTime(2000, 7, 1, 10, 30, 1);
                args.Add(tools.AllocValue(startdate));
                DateTime enddate = new DateTime(2002, 8, 20, 12, 20, 3);
                args.Add(tools.AllocValue(enddate));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue   valOutput = DbFunctions.DATEDIFF(tools, fargs);
                ByteSlice bs        = valOutput.Eval();
                double    output    = tools.GetDouble(bs);

                double expected = 0;
                {
                    DateTime xstartdate = new DateTime(2000, 7, 1, 10, 0, 0);
                    DateTime xenddate   = new DateTime(2002, 8, 20, 12, 0, 0);
                    TimeSpan sp         = xenddate - xstartdate;
                    expected = sp.TotalHours;
                }

                if (expected != output)
                {
                    throw new Exception("DbFunctions.DATEDIFF(hour) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

            {
                Console.WriteLine("Testing DbFunctions.DATEDIFF(minute)...");

                List <DbValue> args     = new List <DbValue>();
                mstring        datepart = mstring.Prepare("minute");
                args.Add(tools.AllocValue(datepart));
                DateTime startdate = new DateTime(2000, 7, 1, 10, 30, 1);
                args.Add(tools.AllocValue(startdate));
                DateTime enddate = new DateTime(2002, 8, 20, 12, 20, 3);
                args.Add(tools.AllocValue(enddate));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue   valOutput = DbFunctions.DATEDIFF(tools, fargs);
                ByteSlice bs        = valOutput.Eval();
                double    output    = tools.GetDouble(bs);

                double expected = 0;
                {
                    DateTime xstartdate = new DateTime(2000, 7, 1, 10, 30, 0);
                    DateTime xenddate   = new DateTime(2002, 8, 20, 12, 20, 0);
                    TimeSpan sp         = xenddate - xstartdate;
                    expected = sp.TotalMinutes;
                }

                if (expected != output)
                {
                    throw new Exception("DbFunctions.DATEDIFF(minute) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

            {
                Console.WriteLine("Testing DbFunctions.DATEDIFF(second)...");

                List <DbValue> args     = new List <DbValue>();
                mstring        datepart = mstring.Prepare("ss");
                args.Add(tools.AllocValue(datepart));
                DateTime startdate = new DateTime(2000, 7, 1, 10, 30, 1);
                args.Add(tools.AllocValue(startdate));
                DateTime enddate = new DateTime(2002, 8, 20, 12, 20, 3);
                args.Add(tools.AllocValue(enddate));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue   valOutput = DbFunctions.DATEDIFF(tools, fargs);
                ByteSlice bs        = valOutput.Eval();
                double    output    = tools.GetDouble(bs);

                double expected = 0;
                {
                    DateTime xstartdate = new DateTime(2000, 7, 1, 10, 30, 1);
                    DateTime xenddate   = new DateTime(2002, 8, 20, 12, 20, 3);
                    TimeSpan sp         = xenddate - xstartdate;
                    expected = sp.TotalSeconds;
                }

                if (expected != output)
                {
                    throw new Exception("DbFunctions.DATEDIFF(second) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }

            {
                Console.WriteLine("Testing DbFunctions.DATEDIFF(millisecond)...");

                List <DbValue> args     = new List <DbValue>();
                mstring        datepart = mstring.Prepare("ms");
                args.Add(tools.AllocValue(datepart));
                DateTime startdate = new DateTime(2000, 7, 1, 10, 30, 1, 2);
                args.Add(tools.AllocValue(startdate));
                DateTime enddate = new DateTime(2002, 8, 20, 12, 20, 3, 5);
                args.Add(tools.AllocValue(enddate));
                DbFunctionArguments fargs = new DbFunctionArguments(args);

                DbValue   valOutput = DbFunctions.DATEDIFF(tools, fargs);
                ByteSlice bs        = valOutput.Eval();
                double    output    = tools.GetDouble(bs);

                double   expected = 0;
                TimeSpan sp       = enddate - startdate;
                expected = sp.TotalMilliseconds;

                if (expected != output)
                {
                    throw new Exception("DbFunctions.DATEDIFF(millisecond) has failed.  Expected result: " + expected.ToString() + ", but received: " + output.ToString());
                }
                else
                {
                    Console.WriteLine("Expected results received.");
                }
            }
        }