public void Construct_EndOfTime_Truncated()
 {
     const string name = "abc";
     var instant = new Instant(Instant.MaxValue.Ticks + minusOneHour.TotalTicks);
     var actual = new ZoneTransition(instant, name, threeHours, threeHours);
     Assert.AreEqual(instant, actual.Instant, "Instant");
     Assert.AreEqual(oneHour, actual.StandardOffset, "StandardOffset");
     Assert.AreEqual(Offset.Zero, actual.Savings, "Savings");
 }
        public void IEquatableIComparable_Tests()
        {
            var value = new ZoneTransition(Instant.UnixEpoch, "abc", Offset.Zero, Offset.Zero);
            var equalValue = new ZoneTransition(Instant.UnixEpoch, "abc", Offset.Zero, Offset.Zero);
            var greaterValue = new ZoneTransition(Instant.MaxValue, "abc", Offset.Zero, Offset.Zero);

            TestHelper.TestEqualsClass(value, equalValue, greaterValue);
            TestHelper.TestCompareToClass(value, equalValue, greaterValue);
        }
 public void Construct_Normal()
 {
     const string name = "abc";
     var actual = new ZoneTransition(Instant.UnixEpoch, name, Offset.Zero, Offset.Zero);
     Assert.AreEqual(Instant.UnixEpoch, actual.Instant, "Instant");
     Assert.AreEqual(name, actual.Name, "GetName");
     Assert.AreEqual(Offset.Zero, actual.WallOffset, "WallOffset");
     Assert.AreEqual(Offset.Zero, actual.StandardOffset, "StandardOffset");
 }
Example #4
0
        public void IsTransitionFrom_identity_false()
        {
            var value = new ZoneTransition(NodaConstants.UnixEpoch, "abc", Offset.Zero, Offset.Zero);

            Assert.False(value.IsTransitionFrom(value));
        }
Example #5
0
        public void IsTransitionFrom_null_throws()
        {
            var value = new ZoneTransition(NodaConstants.UnixEpoch, "abc", Offset.Zero, Offset.Zero);

            Assert.Throws <ArgumentNullException>(() => value.IsTransitionFrom(null !));
        }
Example #6
0
        public void IsTransitionFrom_null_true()
        {
            var value = new ZoneTransition(NodaConstants.UnixEpoch, "abc", Offset.Zero, Offset.Zero);

            Assert.True(value.IsTransitionFrom(null));
        }
        /// <summary>
        /// Adds the given transition to the transition list if it represents a new transition.
        /// </summary>
        /// <param name="transitions">The list of <see cref="ZoneTransition"/> to add to.</param>
        /// <param name="transition">The transition to add.</param>
        /// <returns><c>true</c> if the transition was added.</returns>
        private static bool AddTransition(IList<ZoneTransition> transitions, ZoneTransition transition)
        {
            int transitionCount = transitions.Count;
            if (transitionCount == 0)
            {
                transitions.Add(transition);
                return true;
            }

            ZoneTransition lastTransition = transitions[transitionCount - 1];
            if (!transition.IsTransitionFrom(lastTransition))
            {
                return false;
            }

            // If local time of new transition is same as last local time, just replace last
            // transition with new one.
            LocalInstant lastLocal = lastTransition.Instant.Plus(lastTransition.WallOffset);
            LocalInstant newLocal = transition.Instant.Plus(transition.WallOffset);

            if (newLocal != lastLocal)
            {
                transitions.Add(transition);
                return true;
            }

            transitions.RemoveAt(transitionCount - 1);
            return AddTransition(transitions, transition);
        }
 public void IsTransitionFrom_equalObject_false()
 {
     var newValue = new ZoneTransition(Instant.UnixEpoch, "abc", Offset.Zero, Offset.Zero);
     var oldValue = new ZoneTransition(Instant.UnixEpoch, "abc", Offset.Zero, Offset.Zero);
     Assert.False(newValue.IsTransitionFrom(oldValue));
 }
 public void IsTransitionFrom_identity_false()
 {
     var value = new ZoneTransition(Instant.UnixEpoch, "abc", Offset.Zero, Offset.Zero);
     Assert.False(value.IsTransitionFrom(value));
 }
 public void IsTransitionFrom_null_true()
 {
     var value = new ZoneTransition(Instant.UnixEpoch, "abc", Offset.Zero, Offset.Zero);
     Assert.True(value.IsTransitionFrom(null));
 }
 public void IsTransitionFrom_laterInstantAndUnequalNameAndSavings_true()
 {
     var newValue = new ZoneTransition(Instant.UnixEpoch + Duration.One, "abc", Offset.Zero, Offset.Zero);
     var oldValue = new ZoneTransition(Instant.UnixEpoch, "qwe", Offset.Zero, Offset.MaxValue);
     Assert.True(newValue.IsTransitionFrom(oldValue));
 }
 public void IsTransitionFrom_laterInstantAndEqualButOppositeStandardAndSavings_false()
 {
     var newValue = new ZoneTransition(Instant.UnixEpoch + Duration.One, "abc", Offset.FromHours(1), Offset.Zero);
     var oldValue = new ZoneTransition(Instant.UnixEpoch, "abc", Offset.Zero, Offset.FromHours(1));
     Assert.False(newValue.IsTransitionFrom(oldValue));
 }
 public void IsTransitionFrom_laterInstant_false()
 {
     var newValue = new ZoneTransition(Instant.UnixEpoch + Duration.One, "abc", Offset.Zero, Offset.Zero);
     var oldValue = new ZoneTransition(Instant.UnixEpoch, "abc", Offset.Zero, Offset.Zero);
     Assert.False(newValue.IsTransitionFrom(oldValue));
 }
 public void IsTransitionFrom_earlierInstantAndUnequalName_false()
 {
     var newValue = new ZoneTransition(Instant.UnixEpoch, "abc", Offset.Zero, Offset.Zero);
     var oldValue = new ZoneTransition(Instant.UnixEpoch + Duration.One, "qwe", Offset.Zero, Offset.Zero);
     Assert.False(newValue.IsTransitionFrom(oldValue));
 }
 public void ISTransitionFrom_unequalStandardOffset_false()
 {
     var newValue = new ZoneTransition(Instant.UnixEpoch, "abc", Offset.Zero, Offset.Zero);
     var oldValue = new ZoneTransition(Instant.UnixEpoch, "abc", Offset.MaxValue, Offset.Zero);
     Assert.False(newValue.IsTransitionFrom(oldValue));
 }
        private ZoneTransition Read3_ZoneTransition(bool isNullable, bool checkType)
        {
            XmlQualifiedName xmlQualifiedName = checkType ? base.GetXsiType() : null;
            bool             flag             = false;

            if (isNullable)
            {
                flag = base.ReadNull();
            }
            if (checkType && !(xmlQualifiedName == null) && (xmlQualifiedName.Name != this.id15_ZoneTransition || xmlQualifiedName.Namespace != this.id2_WorkingHoursxsd))
            {
                throw base.CreateUnknownTypeException(xmlQualifiedName);
            }
            if (flag)
            {
                return(null);
            }
            ZoneTransition zoneTransition = new ZoneTransition();

            bool[] array = new bool[2];
            while (base.Reader.MoveToNextAttribute())
            {
                if (!base.IsXmlnsAttribute(base.Reader.Name))
                {
                    base.UnknownNode(zoneTransition);
                }
            }
            base.Reader.MoveToElement();
            if (base.Reader.IsEmptyElement)
            {
                base.Reader.Skip();
                return(zoneTransition);
            }
            base.Reader.ReadStartElement();
            base.Reader.MoveToContent();
            int num         = 0;
            int readerCount = base.ReaderCount;

            while (base.Reader.NodeType != XmlNodeType.EndElement && base.Reader.NodeType != XmlNodeType.None)
            {
                if (base.Reader.NodeType == XmlNodeType.Element)
                {
                    if (!array[0] && base.Reader.LocalName == this.id11_Bias && base.Reader.NamespaceURI == this.id2_WorkingHoursxsd)
                    {
                        zoneTransition.Bias = XmlConvert.ToInt32(base.Reader.ReadElementString());
                        array[0]            = true;
                    }
                    else if (!array[1] && base.Reader.LocalName == this.id16_ChangeDate && base.Reader.NamespaceURI == this.id2_WorkingHoursxsd)
                    {
                        zoneTransition.ChangeDate = this.Read2_ChangeDate(false, true);
                        array[1] = true;
                    }
                    else
                    {
                        base.UnknownNode(zoneTransition, "WorkingHours.xsd:Bias, WorkingHours.xsd:ChangeDate");
                    }
                }
                else
                {
                    base.UnknownNode(zoneTransition, "WorkingHours.xsd:Bias, WorkingHours.xsd:ChangeDate");
                }
                base.Reader.MoveToContent();
                base.CheckReaderCount(ref num, ref readerCount);
            }
            base.ReadEndElement();
            return(zoneTransition);
        }