public void Add_ToEmpty() { // Arrange var timeline1 = TimeBuilder.Empty; var timeline2 = TimeBuilder.From(2008, 1, 1).To(2008, 1, 3).Payload("Craft", 1.5m).Timeline; // Act var actual = (timeline1 + timeline2).GetIntervals(); // Assert var expected = new [] { TimeBuilder.From(2008, 1, 1).To(2008, 1, 3).Payload("Craft", 1.5m).Interval, }; Assert.That(TimeMath.Equals(expected, actual), Is.True); }
public void Add_Before() { // Arrange var timeline1 = new TimelinePayload <KeyCountPayload>(new LocalInterval(new LocalDateTime(2008, 1, 4, 0, 0), new LocalDateTime(2008, 1, 8, 0, 0)).AddPayload(new KeyCountPayload("Craft", 1.5m))); var timeline2 = new TimelinePayload <KeyCountPayload>(new LocalInterval(new LocalDateTime(2008, 1, 1, 0, 0), new LocalDateTime(2008, 1, 3, 0, 0)).AddPayload(new KeyCountPayload("Craft", 1.5m))); // Act var actual = (timeline1 + timeline2).GetIntervals(); // Assert var expected = new LocalInterval[] { TimeBuilder.From(2008, 1, 1).To(2008, 1, 3).Payload("Craft", 1.5m).Interval, TimeBuilder.From(2008, 1, 4).To(2008, 1, 8).Payload("Craft", 1.5m).Interval, }; Assert.That(TimeMath.Equals(expected, actual), Is.True); }
public override Time ReadJson(JsonReader reader, Type objectType, Time existingValue, bool hasExistingValue, JsonSerializer serializer) { var builder = new TimeBuilder(); if (reader.TokenType == JsonToken.StartObject) { while (reader.Read() && reader.TokenType != JsonToken.EndObject) { if (reader.TryReadPropertyAsNullable(nameof(Time.TotalSeconds), serializer, e => e.ReadAsNumber(), out var totalSeconds)) { builder.TotalSeconds = totalSeconds; } else if (reader.TryReadPropertyAsNullable(nameof(Time.Hours), serializer, e => e.ReadAsInt32(), out var hours)) { builder.Hours = hours; } else if (reader.TryReadPropertyAsNullable(nameof(Time.Minutes), serializer, e => e.ReadAsInt32(), out var minutes)) { builder.Minutes = minutes; } else if (reader.TryReadPropertyAsNullable(nameof(Time.Seconds), serializer, e => e.ReadAsNumber(), out var seconds)) { builder.Seconds = seconds; } else if (reader.TryReadPropertyAsNullable(nameof(Time.IsNegative), serializer, e => e.ReadAsBoolean(), out var isNegative)) { builder.IsNegative = isNegative; } } } if (!builder.TryBuild(out var result)) { throw new InvalidOperationException($"Could not read {typeof(Time)} from JSON."); } return(result); }
public void Example_MoreComplex() { var alicesEmployment = TimeBuilder.From(2004, 11, 1).TimeZone(LocalTimeZone).Payload("DEV", 1).Timeline; // var localHolidays = new Holidays(LocalTimeZone, EnricoApi.Country.NewZealand, EnricoApi.Region.Auckland); //var jasonsTimeline = alicesEmployment & JasonsWorkPattern() & ~localHolidays | JasonsUnscheduled(); var alicesTimeline = alicesEmployment & AlicesWorkPattern() | AlicesUnscheduledHours(); LogTimeline("Alice's Timeline (PST)", alicesTimeline, LocalTimeZone); var billsEmployment = TimeBuilder.From(1995, 11, 1).TimeZone(NewYorkTimeZone).Payload("DEV", 1).Timeline + TimeBuilder.From(2000, 11, 1).TimeZone(NewYorkTimeZone).Payload("EXEC", 1).Timeline; var billsTimeline = billsEmployment & BillsWorkPattern(); LogTimeline("Bill's Timeline (EST)", billsTimeline, NewYorkTimeZone); var meetingTimes = alicesTimeline & billsTimeline; LogTimeline("Meeting Times (PST)", meetingTimes, LocalTimeZone); LogTimeline("Meeting Times (EST)", meetingTimes, NewYorkTimeZone); }