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);
        }
示例#4
0
 public virtual void GetNotifiedOfElectricConsumeOff(BuildingConsumptionReport consumptionReport)
 {
     consumptionReports.Add(consumptionReport);
 }