Esempio n. 1
0
        /// <summary>
        /// Checks if DateTime structure represents valid date and time.
        /// </summary>
        /// <param name="serverDateTime">Date and time gone from the DUT</param>
        /// <param name="fieldName">Field name (for generation failure reason)</param>
        /// <param name="reason">Failure reason.</param>
        /// <returns></returns>
        public static bool IsValidDateTime(this Proxies.Device.DateTime serverDateTime, string fieldName, out string reason)
        {
            bool bDateTimeValid = true;

            reason = string.Empty;

            if (serverDateTime.Date == null)
            {
                reason = "Date is null";
            }
            else if (serverDateTime.Time == null)
            {
                reason = "Time is null";
            }
            else
            {
                try
                {
                    System.DateTime dt = new System.DateTime(serverDateTime.Date.Year,
                                                             serverDateTime.Date.Month,
                                                             serverDateTime.Date.Day,
                                                             serverDateTime.Time.Hour,
                                                             serverDateTime.Time.Minute,
                                                             serverDateTime.Time.Second);
                }
                catch (Exception)
                {
                    bDateTimeValid = false;
                    reason         =
                        string.Format(
                            "{0} is invalid (Year: {1}, Month: {2}, Day: {3}, Hour: {4}, Minute: {5}, Seconds: {6}",
                            fieldName,
                            serverDateTime.Date.Year, serverDateTime.Date.Month, serverDateTime.Date.Day,
                            serverDateTime.Time.Hour, serverDateTime.Time.Minute, serverDateTime.Time.Second);
                }
            }
            return(bDateTimeValid);
        }
        public void SetSystemDateTimeInvalidDateTimeTest()
        {
            RunTest(() =>
            {
                SystemDateTime testDateTimeSettins = new SystemDateTime();
                Proxies.Device.DateTime dateTime   = new Proxies.Device.DateTime();

                Proxies.Device.TimeZone timeZone = new Proxies.Device.TimeZone();

                timeZone.TZ = "PST8PDT,M3.2.0,M11.1.0";

                dateTime.Date = new Date();
                dateTime.Time = new Time();

                dateTime.Date.Day   = 32;
                dateTime.Date.Month = 13;
                dateTime.Date.Year  = 2001;

                dateTime.Time.Hour   = 25;
                dateTime.Time.Minute = 65;
                dateTime.Time.Second = 70;

                testDateTimeSettins.DateTimeType    = SetDateTimeType.Manual;
                testDateTimeSettins.DaylightSavings = false;
                testDateTimeSettins.TimeZone        = timeZone;
                testDateTimeSettins.UTCDateTime     = dateTime;

                bool fault    = false;
                string reason = "The DUT did not return SOAP FAULT";
                try
                {
                    SetSystemDateAndTime(testDateTimeSettins);
                }
                catch (FaultException exc)
                {
                    string faultDump;
                    fault = exc.IsValidOnvifFault("Sender/InvalidArgVal/InvalidDateTime", out faultDump);
                    if (!fault)
                    {
                        reason = string.Format("The SOAP FAULT returned from the DUT is invalid: {0}", faultDump);
                    }
                    SaveStepFault(exc);
                    StepPassed();
                }

                Assert(fault, reason, "Verify that correct SOAP FAULT is returned");

                SystemDateTime actualDateTime = GetSystemDateAndTime();

                Assert(actualDateTime != null, "Date and time settings not found",
                       "Check that DUT returned date and time settings");

                //Assert(actualDateTime.TimeZone != null, "The DUT did not return TimeZone settings",
                //       "Check that DUT returned TimeZone settings");

                //ValidateTimeZone(testDateTimeSettins.TimeZone.TZ, actualDateTime.TimeZone.TZ);

                if (actualDateTime.TimeZone != null)
                {
                    TimeZoneDescription actualDescription = new TimeZoneDescription();
                    string tzdump;
                    bool bParseOk = ParseTimeZone(actualDateTime.TimeZone.TZ, actualDescription, out tzdump);
                    Assert(bParseOk, string.Format("Time zone format is not correct: {0}", tzdump),
                           "Validate TimeZone string", string.Format("TimeZone: {0}", actualDateTime.TimeZone.TZ));
                }
                else
                {
                    WriteStep("Validate TimeZone", "TimeZone is null");
                }

                bool bCorrect = true;
                string dump   = null;

                if (actualDateTime.DateTimeType == SetDateTimeType.Manual)
                {
                    bCorrect = (actualDateTime.UTCDateTime != null);
                    dump     = string.Format("DateTimeType: Manual; LocalDateTime: {0}; UTCDateTime: {1}",
                                             actualDateTime.LocalDateTime == null ? "NOT PRESENT" : "PRESENT",
                                             actualDateTime.UTCDateTime == null ? "NOT PRESENT" : "PRESENT");
                }
                else
                {
                    dump = "DateTimeType: NTP";
                }

                Assert(bCorrect, "DateTimeType is Manual but UTCDateTime is not set", "Check if settings are self-consistent", dump);

                if (actualDateTime.LocalDateTime != null)
                {
                    string errorMessage;
                    bool bDateTimeValid = actualDateTime.LocalDateTime.IsValidDateTime("LocalDateTime", out errorMessage);
                    Assert(bDateTimeValid, errorMessage, "Validate LocalDateTime");
                }
                else
                {
                    WriteStep("Validate LocalDateTime", "LocalDateTime is NULL");
                }

                if (actualDateTime.UTCDateTime != null)
                {
                    string errorMessage;
                    bool bDateTimeValid = actualDateTime.UTCDateTime.IsValidDateTime("UTCDateTime", out errorMessage);
                    Assert(bDateTimeValid, errorMessage, "Validate UTCDateTime");
                }
                else
                {
                    WriteStep("Validate UTCDateTime", "UTCDateTime is NULL");
                }
            });
        }