public void CalculateKwh_by_dayToDBTest() { var plantDb = new PlantRepository(); int testPlantId = DatabaseHelpers.CreatePlantGetId(); int privateInverterID = DatabaseHelpers.CreateInverter(testPlantId); int publicInverterId = plantDb.GetAllInvertersByPlant(testPlantId).First().PublicInverterId; var today = Utils.GetTodaysDate(); var tomorow = today.AddDays(1); var dayAfterTomorow = tomorow.AddDays(1); //time frame for kwh calculation var timeFrameStart = Utils.CropHourMinuteSecond(today); var timeFrameEnd = timeFrameStart.AddDays(3); //time frame of test measures var todayStart = today.AddHours(8); var todayEnd = todayStart.AddHours(10); var tomorowStart = todayStart.AddDays(1); var tomorowEnd = tomorowStart.AddHours(8); var dayAfterTomorowStart = tomorowStart.AddDays(1); var dayAfterTomorowEnd = dayAfterTomorowStart.AddHours(8); //create test data and merge into one list var measureList = BigMama.GetMeasureList(todayStart, todayEnd, 1000, privateInverterID); var measureList_tomorow = BigMama.GetMeasureList(tomorowStart, tomorowEnd, 2000, privateInverterID); var measureList_dayAfterTomorow = BigMama.GetMeasureList(dayAfterTomorowStart, dayAfterTomorowEnd, 3000, privateInverterID); measureList.AddRange(measureList_tomorow); measureList.AddRange(measureList_dayAfterTomorow); var measureDb = new MeasureRepository(); //Add test data to database measureDb.StartTransaction(); measureList.ForEach(y=> _measureRepository.InsertMeasure(y)); measureDb.CommitTransaction(); //calculate kwh for each day and store in database var mgm = new MeasureManagement(); mgm.ReCalculateKwh_by_dayToDB(timeFrameStart, timeFrameEnd, testPlantId); //read the calculated kwh days from the db var kwhDb = new KwhRepository(); var actual = kwhDb.GetDayKwhByDateRange(timeFrameStart, timeFrameEnd, testPlantId); //Check the result from the db Assert.AreEqual(3, actual.Count); Assert.AreEqual(10.0, actual.GetKwh(today, publicInverterId).Value); Assert.AreEqual(16.0, actual.GetKwh(tomorow, publicInverterId).Value); Assert.AreEqual(24.0, actual.GetKwh(dayAfterTomorow, publicInverterId).Value); //check that removing all measures does not delete the day_kwh values //truncate measure table and refill with the DaT values _testDb.TruncateMinuteWiseMeasures(); measureDb.StartTransaction(); measureList_dayAfterTomorow.ForEach(y=> measureDb.InsertMeasure(y)); measureDb.CommitTransaction(); //recalculate the kwh_days mgm.ReCalculateKwh_by_dayToDB(timeFrameStart, timeFrameEnd, testPlantId); var actual_2 = kwhDb.GetDayKwhByDateRange(timeFrameStart, timeFrameEnd, testPlantId); //results should be equal with those above Assert.AreEqual(3, actual.Count); Assert.AreEqual(10.0, actual.GetKwh(today, publicInverterId).Value); Assert.AreEqual(16.0, actual.GetKwh(tomorow, publicInverterId).Value); Assert.AreEqual(24.0, actual.GetKwh(dayAfterTomorow, publicInverterId).Value); }
public void IsPlantOnlineTest() { var offlinePlant = DatabaseHelpers.CreatePlantWithOneInverter(); var onlinePlant = DatabaseHelpers.CreatePlantWithOneInverter(); var plantWithoutInverter = DatabaseHelpers.CreatePlantGetId(); // create and store measure for online repository I_MeasureRepository measureRepo = new MeasureRepository(); for (int i = 0; i < 5; i++) { measureRepo.InsertMeasure(new Measure() { DateTime = DateTime.Now.AddMinutes(i), PrivateInverterId = onlinePlant.InverterId, OutputWattage = 41234 }); } _plantRepository.UpdatePlantOnlineStatus(); //check on/offline state of plants Assert.IsFalse(_plantRepository.GetPlantById(offlinePlant.PlantId).IsOnline); Assert.IsTrue(_plantRepository.GetPlantById(onlinePlant.PlantId).IsOnline); Assert.IsFalse(_plantRepository.GetPlantById(plantWithoutInverter).IsOnline); }
private void InsertToTarget(List<Measure> result, string targetConStr) { DateTime startDate = GetDay(dtp_target_From.Value); DateTime endDate = GetDay(dtp_Target_To.Value).AddDays(1); DateTime countDate = startDate; var db = new MeasureRepository(targetConStr, targetConStr); while (countDate < endDate) { foreach (var measure in result) { var oldDate = measure.DateTime; var newDate = new DateTime(countDate.Year, countDate.Month, countDate.Day, oldDate.Hour, oldDate.Minute, oldDate.Second); measure.DateTime = newDate; db.InsertMeasure(measure); } //increase countdate countDate = countDate.AddDays(1); } }