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); } }
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"); } } }
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); }