Пример #1
0
        public void SectionRequirementTest()
        {
            var json =
                @"{
                    ""sequence_number"": 2,
                    ""section_marker"": ""B"",
                    ""type"": ""halt"",
                    ""min_stopping_time"": ""PT3M"",
                    ""entry_delay_weight"": 1,
                    ""exit_earliest"": ""08:30:00"",
                    ""exit_delay_weight"": 1,
                    ""connections"": null
                  }";

            try
            {
                var obj = new SectionRequirement();
                obj.FromJson(json);
                Assert.AreEqual(obj.SequenceNumber, 2);
                Assert.AreEqual(obj.SectionMarker, "B");
                Assert.AreEqual(obj.MinStoppingTime, IsoDuration.FromString("PT3M"));
                Assert.AreEqual(obj.EntryDelayWeight, 1.0);
                Assert.AreEqual(obj.ExitEarliest, DateTime.Parse("08:30:00"));
                Assert.AreEqual(obj.ExitDelayWeight, 1.0);
                Assert.IsNull(obj.Connections);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Пример #2
0
        public void TestFailures()
        {
            var failTests = new[]
            {
                "P1.1YT2.5H",                           // Can only use demical in final period
                "-P1.1YT2.5H",                          // Can only use demical in final period
                "P100,000.123D",                        // Can only use either demical or comma, but not both
                "P100.000,123D",                        // Can only use either demical or comma, but not both
            };

            foreach (var test in failTests)
            {
                IsoDuration d;
                string      errorMessage;
                var         result = IsoDuration.TryParse(test, out d, out errorMessage);
                if (result != false)
                {
                    Assert.Fail("IsoDuration.TryParse should fail");
                }
            }
        }
Пример #3
0
        protected DurationResult TestInput(DurationTest test)
        {
            IsoDuration d;
            string      errorMessage;
            var         result = IsoDuration.TryParse(test.Input, test.Provider, out d, out errorMessage);

            DateTimeOffset?xmlDate = null;
            TimeSpan?      xmlSpan = null;

            try
            {
                xmlSpan = XmlConvert.ToTimeSpan(test.Input);
                xmlDate = BaseDate + xmlSpan.Value;
            }
            catch
            {
                xmlDate = null;
            }

            DateTimeOffset?newDate = null;
            TimeSpan?      newSpan = null;

            try
            {
                newDate = d.Add(BaseDate);
                newSpan = newDate - BaseDate;
            }
            catch
            {
                newSpan = null;
            }

            var x = new DurationResult
            {
                Result       = result,
                Input        = test.Input,
                Output       = Convert.ToString(d, test.Provider),
                XmlSpan      = xmlSpan,
                NewSpan      = newSpan,
                XmlDate      = xmlDate,
                NewDate      = newDate,
                Actual       = d,
                Expected     = test.Expected,
                ErrorMessage = errorMessage,
            };

            if (!result)
            {
                Assert.Fail("IsoDuration.TryParse should succeed: Input={0}", test.Input);
            }
            if (x.Input != x.Output)
            {
                Assert.Fail("Input does not match Output: Input={0}, Output={1}", test.Input, x.Output);
            }

            var e = test.Expected;

            if (d.IsNegative != e.IsNegative)
            {
                Assert.Fail(nameof(e.IsNegative));
            }
            if (d.Years != e.Years)
            {
                Assert.Fail(nameof(e.Years));
            }
            if (d.Months != e.Months)
            {
                Assert.Fail(nameof(e.Months));
            }
            if (d.Weeks != e.Weeks)
            {
                Assert.Fail(nameof(e.Weeks));
            }
            if (d.Days != e.Days)
            {
                Assert.Fail(nameof(e.Days));
            }
            if (d.Hours != e.Hours)
            {
                Assert.Fail(nameof(e.Hours));
            }
            if (d.Minutes != e.Minutes)
            {
                Assert.Fail(nameof(e.Minutes));
            }
            if (d.Seconds != e.Seconds)
            {
                Assert.Fail(nameof(e.Seconds));
            }

            return(x);
        }