Exemplo n.º 1
0
 public void GetOccurrenceForYear_Defaults_Epoch()
 {
     var offset = new ZoneYearOffset(TransitionMode.Utc, 1, 1, 0, true, LocalTime.Midnight);
     var actual = offset.GetOccurrenceForYear(1970);
     var expected = new LocalDateTime(1970, 1, 1, 0, 0).ToLocalInstant();
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 2
0
 internal ZoneRuleSet(List<ZoneRecurrence> rules, Offset standardOffset, int upperYear, ZoneYearOffset upperYearOffset)
 {
     this.rules = rules;
     this.StandardOffset = standardOffset;
     this.upperYear = upperYear;
     this.upperYearOffset = upperYearOffset;
 }
Exemplo n.º 3
0
 internal ZoneRuleSet(string name, Offset standardOffset, Offset savings, int upperYear, ZoneYearOffset upperYearOffset)
 {
     this.name = name;
     this.StandardOffset = standardOffset;
     this.fixedSavings = savings;
     this.upperYear = upperYear;
     this.upperYearOffset = upperYearOffset;
 }
Exemplo n.º 4
0
 public void WriteRead()
 {
     var yearOffset = new ZoneYearOffset(TransitionMode.Utc, 10, 31, (int)IsoDayOfWeek.Wednesday, true, Offset.Zero);
     var recurrence = new ZoneRecurrence("bob", Offset.Zero, yearOffset, 1971, 2009);
     var actual = new ZoneRule(recurrence, "D");
     var expected = new ZoneRule(recurrence, "D");
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 5
0
 public void Equality()
 {
     var yearOffset = new ZoneYearOffset(TransitionMode.Utc, 10, 31, (int)IsoDayOfWeek.Wednesday, true, LocalTime.Midnight);
     var recurrence = new ZoneRecurrence("bob", Offset.Zero, yearOffset, 1971, 2009);
     var actual = new RuleLine(recurrence, "D", null);
     var expected = new RuleLine(recurrence, "D", null);
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 6
0
 public void Next_BeforeFirstYear()
 {
     var januaryFirstMidnight = new ZoneYearOffset(TransitionMode.Utc, 1, 1, 0, true, LocalTime.Midnight);
     var recurrence = new ZoneRecurrence("bob", Offset.Zero, januaryFirstMidnight, 1970, 1972);
     Transition? actual = recurrence.Next(Instant.MinValue, Offset.Zero, Offset.Zero);
     Transition? expected = new Transition(NodaConstants.UnixEpoch, Offset.Zero);
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 7
0
 public void Next_FirstYear()
 {
     var januaryFirstMidnight = new ZoneYearOffset(TransitionMode.Utc, 1, 1, 0, true, Offset.Zero);
     var recurrence = new ZoneRecurrence("bob", Offset.Zero, januaryFirstMidnight, 1970, 1972);
     Transition? actual = recurrence.Next(Instant.UnixEpoch, Offset.Zero, Offset.Zero);
     Transition? expected = new Transition(new Instant(Instant.UnixEpoch.Ticks + (1 * TicksPerStandardYear)), Offset.Zero, Offset.Zero);
     Assert.AreEqual(expected, actual);
 }
 public void ParseDateTimeOfYear_missingOn_validForZone()
 {
     const string text = "Mar";
     var tokens = Tokens.Tokenize(text);
     var actual = Parser.ParseDateTimeOfYear(tokens, false);
     var expected = new ZoneYearOffset(TransitionMode.Wall, 3, 1, 0, false, LocalTime.Midnight);
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 9
0
 public void PreviousOrSame_LastYear()
 {
     var januaryFirstMidnight = new ZoneYearOffset(TransitionMode.Utc, 1, 1, 0, true, LocalTime.Midnight);
     var recurrence = new ZoneRecurrence("bob", Offset.Zero, januaryFirstMidnight, 1970, 1972);
     Transition? actual = recurrence.PreviousOrSame(Instant.FromUtc(1971, 1, 1, 0, 0) - Duration.Epsilon, Offset.Zero, Offset.Zero);
     Transition? expected = new Transition(NodaConstants.UnixEpoch, Offset.Zero);
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 10
0
 public void RenameAppend()
 {
     var yearOffset = new ZoneYearOffset(TransitionMode.Utc, 10, 31, (int)IsoDayOfWeek.Wednesday, true, Offset.Zero);
     var old = new ZoneRecurrence("bob", Offset.Zero, yearOffset, 1971, 2009);
     var actual = old.RenameAppend("-Summer");
     var expected = new ZoneRecurrence("bob-Summer", Offset.Zero, yearOffset, 1971, 2009);
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 11
0
 public void PreviousOrSame_AfterLastYear()
 {
     var januaryFirstMidnight = new ZoneYearOffset(TransitionMode.Utc, 1, 1, 0, true, LocalTime.Midnight);
     var recurrence = new ZoneRecurrence("bob", Offset.Zero, januaryFirstMidnight, 1970, 1972);
     Transition? actual = recurrence.PreviousOrSame(Instant.MaxValue, Offset.Zero, Offset.Zero);
     Transition? expected = new Transition(Instant.FromUtc(1972, 1, 1, 0, 0), Offset.Zero);
     Assert.AreEqual(expected, actual);
 }
 public void ParseDateTimeOfYear_missingAt_validForZone()
 {
     const string text = "Mar lastSun";
     var tokens = Tokens.Tokenize(text);
     var actual = Parser.ParseDateTimeOfYear(tokens, false);
     var expected = new ZoneYearOffset(TransitionMode.Wall, 3, -1, (int) IsoDayOfWeek.Sunday, false, LocalTime.Midnight);
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 13
0
 public void Next_BeyondLastYear_null()
 {
     var afterRecurrenceEnd = Instant.FromUtc(1980, 1, 1, 0, 0);
     var januaryFirstMidnight = new ZoneYearOffset(TransitionMode.Utc, 1, 1, 0, true, LocalTime.Midnight);
     var recurrence = new ZoneRecurrence("bob", Offset.Zero, januaryFirstMidnight, 1970, 1972);
     Transition? actual = recurrence.Next(afterRecurrenceEnd, Offset.Zero, Offset.Zero);
     Transition? expected = null;
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 14
0
        public void FormatName_Slash_Daylight()
        {
            var yearOffset = new ZoneYearOffset(TransitionMode.Utc, 10, 31, (int) IsoDayOfWeek.Wednesday, true, LocalTime.Midnight);
            var recurrence = new ZoneRecurrence("ignored", Offset.FromHours(1), yearOffset, 1971, 2009);
            var rule = new RuleLine(recurrence, "!", null);
            var zone = GetZone("X/Y", Offset.FromHours(1));

            var zoneRecurrence = rule.GetRecurrences(zone).Single();
            Assert.AreEqual("Y", zoneRecurrence.Name);
        }
Exemplo n.º 15
0
        public void FormatName_PercentS()
        {
            // Note that the offset is irrelevant here - the "daylight saving indicator" is replaced either way.
            var yearOffset = new ZoneYearOffset(TransitionMode.Utc, 10, 31, (int) IsoDayOfWeek.Wednesday, true, LocalTime.Midnight);
            var recurrence = new ZoneRecurrence("ignored", Offset.Zero, yearOffset, 1971, 2009);
            var rule = new RuleLine(recurrence, "!", null);
            var zone = GetZone("X%sY", Offset.Zero);

            var zoneRecurrence = rule.GetRecurrences(zone).Single();
            Assert.AreEqual("X!Y", zoneRecurrence.Name);
        }
Exemplo n.º 16
0
        public void FormatName_PercentZ()
        {
            var yearOffset = new ZoneYearOffset(TransitionMode.Utc, 10, 31, (int) IsoDayOfWeek.Wednesday, true, LocalTime.Midnight);
            var recurrence = new ZoneRecurrence("Rule", Offset.FromHoursAndMinutes(5, 30), yearOffset, 1971, 2009);
            var rule = new RuleLine(recurrence, "D", null);
            
            var zoneRecurrence = rule.GetRecurrences(GetZone("X%zY", Offset.Zero)).Single();
            Assert.AreEqual("X+0530Y", zoneRecurrence.Name);

            zoneRecurrence = rule.GetRecurrences(GetZone("X%zY", Offset.FromHoursAndMinutes(0, 30))).Single();
            Assert.AreEqual("X+06Y", zoneRecurrence.Name);

            zoneRecurrence = rule.GetRecurrences(GetZone("X%zY", Offset.FromHoursAndMinutes(-6, -30))).Single();
            Assert.AreEqual("X-01Y", zoneRecurrence.Name);
        }
Exemplo n.º 17
0
 public void MakeInstant_Feb()
 {
     var offset = new ZoneYearOffset(TransitionMode.Utc, 2, 1, 0, true, Offset.Zero);
     var actual = offset.MakeInstant(1970, Offset.Zero, Offset.Zero);
     var expected = new Instant((32L - 1) * NodaConstants.TicksPerStandardDay);
     Assert.AreEqual(expected, actual);
 }
 /// <summary>
 /// Sets the inclusive upper limit for where this rule set applies.
 /// </summary>
 /// <param name="year">The end year (inclusive).</param>
 /// <param name="yearOffset">The end point in the year (inclusive).</param>
 internal void SetUpperLimit(int year, ZoneYearOffset yearOffset)
 {
     upperYear       = year;
     upperYearOffset = yearOffset;
 }
Exemplo n.º 19
0
 public void NextTwice_WednesdayForward()
 {
     ZoneYearOffset offset = new ZoneYearOffset(TransitionMode.Utc, 10, 31, (int)IsoDayOfWeek.Wednesday, true, Offset.Zero);
     var actual = offset.MakeInstant(2006, Offset.Zero, Offset.Zero); // Nov 1 2006
     long baseTicks = actual.Ticks;
     actual = offset.Next(actual, Offset.Zero, Offset.Zero); // Oct 31 2007
     actual = offset.Next(actual, Offset.Zero, Offset.Zero); // Nov 5 2008
     var expected = new Instant(baseTicks + TicksPerStandardYear + TicksPerLeapYear + (4 * NodaConstants.TicksPerStandardDay));
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 20
0
 public void Previous_OneSecondAfterJanOne()
 {
     var offset = new ZoneYearOffset(TransitionMode.Utc, 1, 1, 0, true, Offset.Zero);
     var actual = offset.MakeInstant(1970, Offset.Zero, Offset.Zero) + Duration.One;
     actual = offset.Previous(actual, Offset.Zero, Offset.Zero);
     var expected = Instant.UnixEpoch;
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 21
0
 public void MakeInstant_Milliseconds()
 {
     var offset = new ZoneYearOffset(TransitionMode.Utc, 1, 1, 0, true, Offset.Create(0, 0, 0, 1));
     var actual = offset.MakeInstant(1970, Offset.Zero, Offset.Zero);
     var expected = new Instant((1L - 1) * NodaConstants.TicksPerStandardDay + NodaConstants.TicksPerMillisecond);
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 22
0
 public void MakeInstant_SavingOffsetIgnored_Epoch()
 {
     var offset = new ZoneYearOffset(TransitionMode.Utc, 1, 1, 0, true, Offset.Zero);
     var actual = offset.MakeInstant(1970, twoHours, oneHour);
     var expected = Instant.UnixEpoch;
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 23
0
        public void Constructor_nullName_exception()
        {
            var yearOffset = new ZoneYearOffset(TransitionMode.Utc, 10, 31, (int)IsoDayOfWeek.Wednesday, true, LocalTime.Midnight);

            Assert.Throws(typeof(ArgumentNullException), () => new ZoneRecurrence(null, Offset.Zero, yearOffset, 1971, 2009), "Null name");
        }
Exemplo n.º 24
0
 public void MakeInstant_SavingAndOffset()
 {
     var offset = new ZoneYearOffset(TransitionMode.Wall, 1, 1, 0, true, Offset.Zero);
     var actual = offset.MakeInstant(1970, twoHours, oneHour);
     var expected = new Instant((1L - 1) * NodaConstants.TicksPerStandardDay - (twoHours.TotalTicks + oneHour.TotalTicks));
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 25
0
 public void Next_OneSecondBeforeJanOne()
 {
     var offset = new ZoneYearOffset(TransitionMode.Utc, 1, 1, 0, true, Offset.Zero);
     var actual = offset.MakeInstant(1970, Offset.Zero, Offset.Zero) - Duration.One;
     actual = offset.Next(actual, Offset.Zero, Offset.Zero);
     var expected = Instant.UnixEpoch;
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 26
0
 public void MakeInstant_WednesdayBackward()
 {
     var offset = new ZoneYearOffset(TransitionMode.Utc, 1, 15, (int)DayOfWeek.Wednesday, false, Offset.Zero);
     var actual = offset.MakeInstant(1970, Offset.Zero, Offset.Zero);
     var expected = new Instant((14L - 1) * NodaConstants.TicksPerStandardDay);
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 27
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ZoneLine" /> class.
 /// </summary>
 public ZoneLine(string name, Offset offset, string rules, string format, int untilYear, ZoneYearOffset untilYearOffset)
 {
     this.Name            = name;
     this.StandardOffset  = offset;
     this.Rules           = rules;
     this.Format          = format;
     this.UntilYear       = untilYear;
     this.UntilYearOffset = untilYearOffset;
 }
Exemplo n.º 28
0
 public void Next_JanOne()
 {
     var offset = new ZoneYearOffset(TransitionMode.Utc, 1, 1, 0, true, Offset.Zero);
     var actual = offset.MakeInstant(1970, Offset.Zero, Offset.Zero);
     long baseTicks = actual.Ticks;
     actual = offset.Next(actual, Offset.Zero, Offset.Zero);
     var expected = new Instant(baseTicks + (1 * TicksPerStandardYear));
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 29
0
 internal ZoneRuleSet(List <ZoneRecurrence> rules, Offset standardOffset, int upperYear, ZoneYearOffset upperYearOffset)
 {
     this.rules           = rules;
     this.StandardOffset  = standardOffset;
     this.upperYear       = upperYear;
     this.upperYearOffset = upperYearOffset;
 }
Exemplo n.º 30
0
 public void NextTwice_Feb29_FourYears()
 {
     var offset = new ZoneYearOffset(TransitionMode.Utc, 2, 29, 0, true, Offset.Zero);
     var actual = offset.MakeInstant(1972, Offset.Zero, Offset.Zero);
     long baseTicks = actual.Ticks;
     actual = offset.Next(actual, Offset.Zero, Offset.Zero);
     actual = offset.Next(actual, Offset.Zero, Offset.Zero);
     var expected = new Instant(baseTicks + (2 * ((3 * TicksPerStandardYear) + TicksPerLeapYear)));
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 31
0
        public void IEquatable_Tests()
        {
            var value = new ZoneYearOffset(TransitionMode.Utc, 10, 31, (int)IsoDayOfWeek.Wednesday, true, Offset.Zero);
            var equalValue = new ZoneYearOffset(TransitionMode.Utc, 10, 31, (int)IsoDayOfWeek.Wednesday, true, Offset.Zero);
            var unequalValue = new ZoneYearOffset(TransitionMode.Utc, 9, 31, (int)IsoDayOfWeek.Wednesday, true, Offset.Zero);

            TestHelper.TestEqualsClass(value, equalValue, unequalValue);
            TestHelper.TestOperatorEquality(value, equalValue, unequalValue);
        }
Exemplo n.º 32
0
 public void PreviousTwice_JanOne()
 {
     var offset = new ZoneYearOffset(TransitionMode.Utc, 1, 1, 0, true, Offset.Zero);
     var actual = offset.MakeInstant(1970, Offset.Zero, Offset.Zero);
     long baseTicks = actual.Ticks;
     actual = offset.Previous(actual, Offset.Zero, Offset.Zero);
     actual = offset.Previous(actual, Offset.Zero, Offset.Zero);
     var expected = new Instant(baseTicks - (TicksPerStandardYear + TicksPerLeapYear));
     Assert.AreEqual(expected, actual);
 }
Exemplo n.º 33
0
        public void GetOccurrenceForYear_AtLeastFeb29th_NotLeapYear()
        {
            ZoneYearOffset offset = new ZoneYearOffset(TransitionMode.Utc, 2, 29, (int)IsoDayOfWeek.Sunday, true, LocalTime.Midnight);

            Assert.Throws <InvalidOperationException>(() => offset.GetOccurrenceForYear(2013));
        }
Exemplo n.º 34
0
        public void Test()
        {
            var dio = new DtzIoHelper("ZoneYearOffset");
            var expected = new ZoneYearOffset(TransitionMode.Utc, 10, 31, (int)IsoDayOfWeek.Wednesday, true, Offset.Zero);
            dio.TestZoneYearOffset(expected);

            dio = new DtzIoHelper("ZoneYearOffset");
            expected = new ZoneYearOffset(TransitionMode.Utc, 10, -31, (int)IsoDayOfWeek.Wednesday, true, Offset.Zero);
            dio.TestZoneYearOffset(expected);
        }
Exemplo n.º 35
0
 internal ZoneRuleSet(string name, Offset standardOffset, Offset savings, int upperYear, ZoneYearOffset upperYearOffset)
 {
     this.name            = name;
     this.StandardOffset  = standardOffset;
     this.fixedSavings    = savings;
     this.upperYear       = upperYear;
     this.upperYearOffset = upperYearOffset;
 }
Exemplo n.º 36
0
        /// <summary>
        /// Adds a cutover for added rules.
        /// </summary>
        /// <remarks>
        /// A cutover is a point where the standard offset from GMT/UTC changed. This occurs mostly
        /// pre-1900. The standard offset at the cutover defaults to 0.
        /// Call <see cref="DateTimeZoneBuilder.SetStandardOffset"/> afterwards to change it.
        /// </remarks>
        /// <param name="year">The year of cutover.</param>
        /// <param name="yearOffset">The offset into the year of the cutover.</param>
        /// <returns>This <see cref="DateTimeZoneBuilder"/> for chaining.</returns>
        public DateTimeZoneBuilder AddCutover(int year, ZoneYearOffset yearOffset)
        {
            Preconditions.CheckNotNull(yearOffset, "yearOffset");

            if (ruleSets.Count > 0)
            {
                LastRuleSet.SetUpperLimit(year, yearOffset);
            }
            AddEndOfTimeRuleSet();
            return this;
        }
Exemplo n.º 37
0
        public void GetOccurrenceForYear_ExactlyFeb29th_NotLeapYear()
        {
            ZoneYearOffset offset = new ZoneYearOffset(TransitionMode.Utc, 2, 29, 0, false, LocalTime.Midnight);

            Assert.Throws <InvalidOperationException>(() => offset.GetOccurrenceForYear(2013));
        }