public void notify_cities_when_they_consume_electricity() { var aBuilding = new Building(id: Guid.NewGuid()); var city = Substitute.For <City>(new object[] { null }); aBuilding.ReceiveFrom(city, Power.CreateKilowatts(4)); aBuilding.NotifyConsumption(); var consumptionReport = new BuildingConsumptionReport(aBuilding.Id, Power.CreateKilowatts(2)); city.Received(1).GetNotifiedOfElectricConsumeOff(consumptionReport); }
public void get_monthly_report() { var aPowerPlant = new PowerPlant(); var aBuildingReport = new BuildingConsumptionReport(Guid.NewGuid(), Power.CreateKilowatts(5)); var someBuildingsReport = new List <BuildingConsumptionReport> { aBuildingReport, aBuildingReport }; var someCitiesReport = new List <CityConsumptionReport> { new CityConsumptionReport(Guid.NewGuid(), someBuildingsReport), new CityConsumptionReport(Guid.NewGuid(), someBuildingsReport) }; aPowerPlant.GetNotifiedOfElectricConsumeOff(new AreaConsumptionReport(Guid.NewGuid(), someCitiesReport)); aPowerPlant.GetNotifiedOfElectricConsumeOff(new AreaConsumptionReport(Guid.NewGuid(), someCitiesReport)); var monthlyReport = aPowerPlant.GetMonthlyReport(); monthlyReport.TotalGeneratedPower.Should().BeEquivalentTo(OneGigawatt); monthlyReport.TotalConsumedPower().Should().BeEquivalentTo(Power.CreateKilowatts(40)); }
public void notify_consume_of_all_buildings_to_area_when_electricity_is_consumed() { var anArea = Substitute.For <Area>(new object[] { null }); var aCity = new City(id: Guid.NewGuid()); aCity.ReceiveFrom(anArea, SomeAreaPower); var aBuildingReport = new BuildingConsumptionReport(Guid.NewGuid(), Power.CreateKilowatts(2)); var anotherBuildingReport = new BuildingConsumptionReport(Guid.NewGuid(), Power.CreateKilowatts(2)); aCity.GetNotifiedOfElectricConsumeOff(aBuildingReport); aCity.GetNotifiedOfElectricConsumeOff(anotherBuildingReport); aCity.NotifyConsumption(); var expectedConsumptionReport = new CityConsumptionReport(aCity.Id, new List <BuildingConsumptionReport> { aBuildingReport, anotherBuildingReport }); anArea.GetNotifiedOfElectricConsumeOff(expectedConsumptionReport); }
public virtual void GetNotifiedOfElectricConsumeOff(BuildingConsumptionReport consumptionReport) { consumptionReports.Add(consumptionReport); }