public void ShouldTrimSingleWhenNeeded( int startHr1, int startMin1, int endHr1, int endMin1, int startHr2, int startMin2, int endHr2, int endMin2, int startHrExp, int startMinExp, int endHrExp, int endMinExp) { var mockSite = new MockReadOnlySiteSettings(); var aus = new ApplianceUsageSchedule(mockSite); var ti = new TimeInterval(startHr1, startMin1, endHr1, endMin1); var ti2 = new TimeInterval(startHr2, startMin2, endHr2, endMin2); var tiExp = new TimeInterval(startHrExp, startMinExp, endHrExp, endMinExp); aus.AddUsageInterval(startHr1, startMin1, endHr1, endMin1, UsageKind.UsingSolar); // HandlePeakSolarIntervalUpdated would be called inside // SetPeakSolarInterval in the actual Site. Here we call manually. mockSite.SetPeakSolarInterval( startHr2, startMin2, endHr2, endMin2 ); aus.HandlePeakSolarIntervalUpdated(); // Check that there's still just the one UTI Assert.Single(aus.UsageIntervals); // Check that it's appropriately trimmed. Assert.Equal(tiExp, aus.UsageIntervals.First().TimeInterval); }
public void ShouldThrowForOverlappingInterval( int peakStartHr, int peakStartMin, int peakEndHr, int peakEndMin, List <UsageTimeInterval> usageIntervals, UsageTimeInterval uTI) { var aus = new ApplianceUsageSchedule( new MockReadOnlySiteSettings( peakStartHr, peakStartMin, peakEndHr, peakEndMin ) ); foreach (var u in usageIntervals) { var ti = u.TimeInterval; aus.AddUsageInterval( ti.Start.Hours, ti.Start.Minutes, ti.End.Hours, ti.End.Minutes, u.UsageKind); } Assert.Throws <TimeIntervalArgumentInvalidException>(() => { var ti = uTI.TimeInterval; aus.AddUsageInterval( ti.Start.Hours, ti.Start.Minutes, ti.End.Hours, ti.End.Minutes, uTI.UsageKind); }); }
public void ShouldNotAddIfEmpty() { var mockSite = new MockReadOnlySiteSettings(); var aus = new ApplianceUsageSchedule(mockSite); // HandlePeakSolarIntervalUpdated would be called inside // SetPeakSolarInterval in the actual Site. Here we call manually. mockSite.SetPeakSolarInterval(7, 0, 15, 0); aus.HandlePeakSolarIntervalUpdated(); // Check that there's still no UTI. Assert.Empty(aus.UsageIntervals); }
public void ShouldThrowForSolarIntervalOutsidePeak( int peakStartHr, int peakStartMin, int peakEndHr, int peakEndMin, int startHr, int startMin, int endHr, int endMin) { var aus = new ApplianceUsageSchedule( new MockReadOnlySiteSettings( peakStartHr, peakStartMin, peakEndHr, peakEndMin ) ); Assert.Throws <TimeIntervalArgumentInvalidException>(() => { aus.AddUsageInterval(startHr, startMin, endHr, endMin, UsageKind.UsingSolar); }); }
public void ShouldAddUsageIntervalToNonEmpty( int peakStartHr, int peakStartMin, int peakEndHr, int peakEndMin, List <UsageTimeInterval> usageIntervals, UsageTimeInterval uTI, int expIdx) { var aus = new ApplianceUsageSchedule( new MockReadOnlySiteSettings( peakStartHr, peakStartMin, peakEndHr, peakEndMin ) ); foreach (var u in usageIntervals) { var t = u.TimeInterval; aus.AddUsageInterval( t.Start.Hours, t.Start.Minutes, t.End.Hours, t.End.Minutes, u.UsageKind); } var ti = uTI.TimeInterval; int startHr = ti.Start.Hours, startMin = ti.Start.Minutes; int endHr = ti.End.Hours, endMin = ti.End.Minutes; aus.AddUsageInterval(startHr, startMin, endHr, endMin, uTI.UsageKind); // Check that list has grown by one Assert.Equal(usageIntervals.Count + 1, aus.UsageIntervals.Count); // Find added element int uTI_Idx = 0; var addedUTIs = aus.UsageIntervals.Where((u, id) => { if (u.Equals(uTI)) { uTI_Idx = id; return(true); } return(false); }); // Check that added element is uTI Assert.Single(addedUTIs); // Check that uTI is added at expected idx Assert.Equal(expIdx, uTI_Idx); }
public void ShouldAddUsageIntervalToEmpty( int peakStartHr, int peakStartMin, int peakEndHr, int peakEndMin, int startHr, int startMin, int endHr, int endMin, UsageKind usageKind) { var aus = new ApplianceUsageSchedule( new MockReadOnlySiteSettings( peakStartHr, peakStartMin, peakEndHr, peakEndMin ) ); aus.AddUsageInterval(startHr, startMin, endHr, endMin, usageKind); Assert.Single(aus.UsageIntervals); Assert.Equal(new UsageTimeInterval( new TimeInterval(startHr, startMin, endHr, endMin), usageKind), aus.UsageIntervals.First()); }
public void ShouldHaveNoUsageIntervals() { var aus = new ApplianceUsageSchedule(new MockReadOnlySiteSettings()); Assert.Empty(aus.UsageIntervals); }