コード例 #1
0
        public void ComplexBuilding()
        {
            var transition1 = Instant.FromUnixTimeTicks(0L);
            var transition2 = Instant.FromUnixTimeTicks(100000L);
            var zone = new MultiTransitionDateTimeZone.Builder(2, 1, "X")
            {
                { transition1, 2, 0, "Y" },
                { transition2, 1, 1, "Z" }
            }.Build();
            var actual = zone.GetZoneIntervals(transition1 - Duration.Epsilon, transition2 + Duration.Epsilon).ToList();
            // ZoneInterval uses wall offset and savings...
            var expected = new[]
            {
                new ZoneInterval("X", Instant.BeforeMinValue, transition1, Offset.FromHours(3), Offset.FromHours(1)),
                new ZoneInterval("Y", transition1, transition2, Offset.FromHours(2), Offset.FromHours(0)),
                new ZoneInterval("Z", transition2, Instant.AfterMaxValue, Offset.FromHours(2), Offset.FromHours(1)),
            };

            CollectionAssert.AreEqual(expected, actual);
        }
コード例 #2
0
        public void SimpleBuilding()
        {
            var transition1 = Instant.FromUnixTimeTicks(0L);
            var transition2 = Instant.FromUnixTimeTicks(100000L);
            var zone = new MultiTransitionDateTimeZone.Builder
            {
                { transition1, 5 },
                { transition2, 3 }
            }.Build();
            var intervals = zone.GetZoneIntervals(transition1 - Duration.Epsilon, transition2 + Duration.Epsilon).ToList();
            Assert.AreEqual(3, intervals.Count);
            Assert.AreEqual(Offset.Zero, intervals[0].WallOffset);
            Assert.AreEqual(Instant.BeforeMinValue, intervals[0].RawStart);
            Assert.AreEqual(transition1, intervals[0].End);

            Assert.AreEqual(Offset.FromHours(5), intervals[1].WallOffset);
            Assert.AreEqual(transition1, intervals[1].Start);
            Assert.AreEqual(transition2, intervals[1].End);

            Assert.AreEqual(Offset.FromHours(3), intervals[2].WallOffset);
            Assert.AreEqual(transition2, intervals[2].Start);
            Assert.AreEqual(Instant.AfterMaxValue, intervals[2].RawEnd);
        }
コード例 #3
0
 public void GetZoneIntervals_WithOptions_Coalescing()
 {
     // We'll ask for 1999-2003, so there are three transitions within that.
     var transition1 = Instant.FromUtc(2000, 1, 1, 0, 0);
     var transition2 = Instant.FromUtc(2001, 1, 1, 0, 0);
     var transition3 = Instant.FromUtc(2002, 1, 1, 0, 0);
     // And one transition afterwards.
     var transition4 = Instant.FromUtc(2004, 1, 1, 0, 0);
     var zone = new MultiTransitionDateTimeZone.Builder(0, "0+0")
     {
         { transition1, 1, 1, "1+1" },
         { transition2, 0, 2, "0+2" },
         { transition3, 0, 1, "0+1" },
         { transition4, 0, 0, "0+0" }
     }.Build();
     var interval = new Interval(
         Instant.FromUtc(1999, 1, 1, 0, 0),
         Instant.FromUtc(2003, 1, 1, 0, 0));
     // The zone intervals abutting at transition2 are coalesced,
     // because that only changes the name and standard/daylight split.
     var zoneIntervals = zone.GetZoneIntervals(interval, ZoneEqualityComparer.Options.OnlyMatchWallOffset).ToList();
     Assert.AreEqual(3, zoneIntervals.Count);
     CollectionAssert.AreEqual(new[] { transition1, transition3, transition4 },
         zoneIntervals.Select(zi => zi.End));
     CollectionAssert.AreEqual(new[] { Instant.BeforeMinValue, transition1, transition3 },
         zoneIntervals.Select(zi => zi.RawStart));
     CollectionAssert.AreEqual(new[] { "0+0", "1+1", "0+1" },
         zoneIntervals.Select(zi => zi.Name));
 }
コード例 #4
0
 public void GetZoneIntervals_WithOptions_NoCoalescing()
 {
     // We'll ask for 1999-2003, so there are three transitions within that.
     var transition1 = Instant.FromUtc(2000, 1, 1, 0, 0);
     var transition2 = Instant.FromUtc(2001, 1, 1, 0, 0);
     var transition3 = Instant.FromUtc(2002, 1, 1, 0, 0);
     // And one transition afterwards.
     var transition4 = Instant.FromUtc(2004, 1, 1, 0, 0);
     var zone = new MultiTransitionDateTimeZone.Builder(0, "0+0")
     {
         { transition1, 1, 1, "1+1" },
         { transition2, 0, 2, "0+2" },
         { transition3, 0, 1, "0+1" },
         { transition4, 0, 0, "0+0" }
     }.Build();
     var interval = new Interval(
         Instant.FromUtc(1999, 1, 1, 0, 0),
         Instant.FromUtc(2003, 1, 1, 0, 0));
     // No coalescing required, as the names are different.
     var zoneIntervals = zone.GetZoneIntervals(interval, ZoneEqualityComparer.Options.MatchNames).ToList();
     Assert.AreEqual(4, zoneIntervals.Count);
     CollectionAssert.AreEqual(new[] { transition1, transition2, transition3, transition4 },
         zoneIntervals.Select(zi => zi.End));
 }