Exemplo n.º 1
0
        public DvDateTime Subtract(DvDuration duration)
        {
            Iso8601Duration isoDuration = new Iso8601Duration(duration.Value);
            Iso8601DateTime newDateTime = this.isoDateTime.Subtract(isoDuration);

            return(new DvDateTime(newDateTime.ToString()));
        }
Exemplo n.º 2
0
        public void Valid_duration(string iso8601, SerializableTimeSpan expected)
        {
            TimeSpan result;

            Iso8601Duration.TryParse(iso8601, out result).ShouldBe(true);

            result.ShouldBe(expected);
        }
Exemplo n.º 3
0
        public override DvDuration Diff(DvTemporal <DvDate> b)
        {
            DesignByContract.Check.Require(b is DvDate, "Expected a DvDate instance in Diff function.");

            DvDate      bObj        = b as DvDate;
            Iso8601Date bObjIsoDate = bObj.isoDate;

            if (bObj == this)
            {
                return(new DvDuration("PT0S"));
            }

            double fractionalSecondsDiff = 0;
            int    secondsDiff           = 0;
            int    hoursDiff             = 0;
            int    minutesDiff           = 0;
            int    daysDiff   = 0;
            int    weeksDiff  = 0;
            int    monthsDiff = 0;
            int    yearsDiff  = 0;

            Iso8601Date leftOperand  = new Iso8601Date(this.Value);
            Iso8601Date rightOperand = new Iso8601Date(bObj.Value);

            if (leftOperand < rightOperand)
            {
                leftOperand  = new Iso8601Date(bObj.Value);;
                rightOperand = new Iso8601Date(this.Value);
            }

            if (!leftOperand.DayUnknown && !rightOperand.DayUnknown)
            {
                daysDiff = leftOperand.Day - rightOperand.Day;
            }

            int daysInMonth = 0;

            if (!leftOperand.MonthUnknown && !rightOperand.MonthUnknown)
            {
                monthsDiff = leftOperand.Month - rightOperand.Month;
                if (leftOperand.Month > 1)
                {
                    daysInMonth = System.DateTime.DaysInMonth(leftOperand.Year, leftOperand.Month - 1);
                }
                else
                {
                    daysInMonth = System.DateTime.DaysInMonth(leftOperand.Year - 1, leftOperand.Month - 1 + Iso8601DateTime.monthsInYear);
                }
            }
            yearsDiff = leftOperand.Year - rightOperand.Year;

            Iso8601Duration diff = Date.NormaliseDuration(yearsDiff, monthsDiff, weeksDiff, daysDiff, hoursDiff, minutesDiff, secondsDiff, fractionalSecondsDiff, daysInMonth);

            return(new DvDuration(diff.ToString()));
        }
Exemplo n.º 4
0
        public override DvAbsoluteQuantity <DvDate, DvDuration> Add(DvAmount <DvDuration> b)
        {
            DesignByContract.Check.Require(b is DvDuration, "b object must be a DvDuration instance");

            DvDuration duration = b as DvDuration;

            Iso8601Duration isoDuration = new Iso8601Duration(duration.Value);
            Iso8601Date     newIsoDate  = this.isoDate.Add(isoDuration);

            return(new DvDate(newIsoDate.ToString()));
        }
Exemplo n.º 5
0
        public override DvDuration Diff(DvTemporal <DvTime> b)
        {
            DesignByContract.Check.Require(b is DvTime, "Expected a DvTime instance in Diff function.");

            DvTime bObj = b as DvTime;

            if (bObj == this)
            {
                return(new DvDuration("PT0S"));
            }

            double fractionalSecondsDiff = 0;
            int    secondsDiff           = 0;
            int    hoursDiff             = 0;
            int    minutesDiff           = 0;
            int    daysDiff   = 0;
            int    weeksDiff  = 0;
            int    monthsDiff = 0;
            int    yearsDiff  = 0;

            Iso8601Time leftOperand  = new Iso8601Time(this.Value);
            Iso8601Time rightOperand = new Iso8601Time(bObj.Value);

            if (leftOperand < rightOperand)
            {
                leftOperand  = new Iso8601Time(bObj.Value);;
                rightOperand = new Iso8601Time(this.Value);
            }

            if (leftOperand.HasFractionalSecond && rightOperand.HasFractionalSecond)
            {
                fractionalSecondsDiff = leftOperand.FractionalSecond - rightOperand.FractionalSecond;
            }

            if (!leftOperand.SecondUnknown && !rightOperand.SecondUnknown)
            {
                secondsDiff = leftOperand.Second - rightOperand.Second;
            }

            if (!leftOperand.MinuteUnknown && !rightOperand.MinuteUnknown)
            {
                minutesDiff = leftOperand.Minute - rightOperand.Minute;
            }

            hoursDiff = leftOperand.Hour - rightOperand.Hour;

            int daysInMonth = 0;

            Iso8601Duration diff = Date.NormaliseDuration(yearsDiff, monthsDiff, weeksDiff, daysDiff, hoursDiff, minutesDiff, secondsDiff, fractionalSecondsDiff, daysInMonth);

            DesignByContract.Check.Assert(diff.Years == 0 && diff.Months == 0 && diff.Days == 0);

            return(new DvDuration(diff.ToString()));
        }
Exemplo n.º 6
0
        public void GetObservationTime_WhenStartTimeOrResolutionIsNull_ShouldThrow(bool startTimeIsNull, string resolutionDuration)
        {
            // Arrange
            var startTime = startTimeIsNull ? null as Instant? : Instant.FromUtc(2020, 1, 1, 1, 1);
            var position  = 1;

            // Act
            Action act = () => Iso8601Duration.GetObservationTime(startTime, resolutionDuration, position);

            // Assert
            Assert.Throws <NullReferenceException>(act);
        }
Exemplo n.º 7
0
 private static bool TryDeserializeIso8601(string serialized, out TimeSpan?value)
 {
     try
     {
         return(Iso8601Duration.TryParse(serialized, out value));
     }
     catch (FormatException)
     {
         value = null;
         return(false);
     }
 }
Exemplo n.º 8
0
        public void GetObservationTime_WhenCalledWithCertainPosition_ShouldGiveCorrectTime(string resolutionDuration, int position, int startHour, int expectedHour, int expectedMinute)
        {
            // Arrange
            var startTime = Instant.FromUtc(2020, 1, 1, startHour, 0);

            // Act
            var instant = Iso8601Duration.GetObservationTime(startTime, resolutionDuration, position);

            // Assert
            var result = instant.InUtc();

            result.Hour.Should().Be(expectedHour);
            result.Minute.Should().Be(expectedMinute);
        }
        private static void WriteTimeSeriesPoint(
            Utf8JsonWriter writer, TimeSeriesPoint point, RSM012Fragments fragments)
        {
            writer.WriteStartObject();

            writer.WriteNumber("Position", point.Position);
            writer.WriteNumber("Quantity", point.GetCimEnergyQuantity());
            writer.WriteString("Quality", point.GetCimQuantityQuality());
            writer.WriteString(
                "Time",
                Iso8601Duration.GetObservationTime(
                    fragments.ObservationTimeSeriesPeriod?.Start,
                    fragments.ObservationTimeSeriesPeriod?.ResolutionDuration,
                    point.Position).ToString());

            writer.WriteEndObject();
        }
Exemplo n.º 10
0
        private bool IsMatchPattern(Iso8601Duration isoDuration)
        {
            DesignByContract.Check.Require(isoDuration != null, string.Format(CommonStrings.XMustNotBeNull, "isoDuration"));

            if (this.yearsAllowedSet && !this.YearsAllowed && isoDuration.Years > 0)
            {
                return(false);
            }

            if (this.monthsAllowedSet && !this.MonthsAllowed && isoDuration.Months > 0)
            {
                return(false);
            }

            if (this.weeksAllowedSet && !this.WeeksAllowed && isoDuration.Weeks > 0)
            {
                return(false);
            }

            if (this.daysAllowedSet && !this.DaysAllowed && isoDuration.Days > 0)
            {
                return(false);
            }

            if (this.hoursAllowedSet && !this.HoursAllowed && isoDuration.Hours > 0)
            {
                return(false);
            }

            if (this.minutesAllowedSet && !this.MinutesAllowed && isoDuration.Months > 0)
            {
                return(false);
            }

            if (this.secondsAllowedSet && !this.SecondsAllowed && isoDuration.Seconds > 0)
            {
                return(false);
            }

            if (!this.fractionalSecondsAllowed && isoDuration.FractionalSecond > 0)
            {
                return(false);
            }

            return(true);
        }
Exemplo n.º 11
0
        internal override string ValidValue(object aValue)
        {
            DesignByContract.Check.Require(aValue != null, string.Format(CommonStrings.XMustNotBeNull, "aValue"));

            if (!Iso8601Duration.ValidIso8601Duration(aValue.ToString()))
            {
                return(string.Format(AmValidationStrings.InvalidIsoDurationX, aValue));
            }

            Iso8601Duration isoDuration = new Iso8601Duration(aValue.ToString());

            if (isoDuration == null)
            {
                throw new ApplicationException(string.Format(CommonStrings.XIsNull, isoDuration));
            }

            if (this.Range != null)
            {
                if (!this.range.Has(isoDuration))
                {
                    return(string.Format(AmValidationStrings.DurationXOutOfRange, aValue));
                }
            }

            if (this.Range == null && this.Pattern == null)
            {
                throw new ValidationException(CommonStrings.CDurationPatternAndRangeNull);
            }

            if (this.range != null)
            {
                if (!IsMatchPattern(isoDuration))
                {
                    return(string.Format(AmValidationStrings.DurationXDoesNotMatchPatternY, aValue, Pattern));
                }
            }

            return(string.Empty);
        }
Exemplo n.º 12
0
        public void Invalid_duration(string invalid)
        {
            TimeSpan dummy;

            Iso8601Duration.TryParse(invalid, out dummy).ShouldBe(false);
        }
Exemplo n.º 13
0
        public void Unsupported_duration(string unsupported)
        {
            TimeSpan dummy;

            Iso8601Duration.TryParse(unsupported, out dummy).ShouldBe(false);
        }
 IOauthPolicy IOauthPolicy.SetRefreshTokenTimeToLive(TimeSpan refreshTokenTtl)
 {
     this.SetProperty(RefreshTokenTtlPropertyName, Iso8601Duration.Format(refreshTokenTtl));
     return(this);
 }
Exemplo n.º 15
0
 public void Valid_duration(string iso8601, SerializableTimeSpan expected)
 {
     Iso8601Duration.Parse(iso8601).ShouldBe(expected);
 }
Exemplo n.º 16
0
 public void Unsupported_duration(string unsupported)
 {
     Should.Throw <FormatException>(() => Iso8601Duration.Parse(unsupported));
 }
Exemplo n.º 17
0
 public void Invalid_duration(string invalid)
 {
     Should.Throw <FormatException>(() => Iso8601Duration.Parse(invalid));
 }
Exemplo n.º 18
0
 public void Formatting(string expected, SerializableTimeSpan timeSpan)
 {
     Iso8601Duration.Format(timeSpan).ShouldBe(expected);
 }
 IOauthPolicy IOauthPolicy.SetAccessTokenTimeToLive(TimeSpan accessTokenTtl)
 {
     this.SetProperty(AccessTokenTtlPropertyName, Iso8601Duration.Format(accessTokenTtl));
     return(this);
 }