/// <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"); } }); }