public void TestCompletenessReportGenerationSomeCustomer() { var files = Directory.GetFiles("Energiemenge/completeness", "somecustomer*.json"); Assert.AreEqual(5, files.Count()); // this is just to make sure the files haven't moved foreach (string boFile in files) { JObject json; using (StreamReader r = new StreamReader(boFile)) { string jsonString = r.ReadToEnd(); json = JsonConvert.DeserializeObject <JObject>(jsonString); } Energiemenge em = (Energiemenge)BoMapper.MapObject((JObject)json["input"], LenientParsing.Strict); CompletenessReport cr; if (boFile.EndsWith("somecustomer1.json")) { cr = em.GetCompletenessReport(); Assert.AreEqual((decimal)0.9601, Math.Round(cr.Coverage.Value, 4)); Assert.AreEqual("4-5-6-7", cr.Obiskennzahl); Assert.AreEqual(Wertermittlungsverfahren.MESSUNG, cr.wertermittlungsverfahren); Assert.AreEqual(Mengeneinheit.KWH, cr.Einheit); Assert.AreEqual("DEXXX", cr.LokationsId); //Assert.AreEqual(15, cr.values[0].wert); //Assert.AreEqual(TestEnergiemengeExtension.GERMAN_APRIL_2018.Start, cr.values[0].startdatum); string resultString = JsonConvert.SerializeObject(cr, new StringEnumConverter()); Assert.IsNotNull(cr.Gaps); Assert.AreEqual(1, cr.Gaps.Count); Assert.AreEqual(new DateTime(2018, 4, 1, 1, 45, 0, DateTimeKind.Utc), cr.Gaps.First().Startdatum); Assert.AreEqual(new DateTime(2018, 4, 2, 6, 30, 0, DateTimeKind.Utc), cr.Gaps.First().Enddatum); } else if (boFile.EndsWith("somecustomer2.json")) { foreach (var combi in em.GetWevObisMeCombinations()) { cr = em.GetCompletenessReport(TestEnergiemengeExtension.GERMAN_APRIL_2018, combi.Item1, combi.Item2, combi.Item3); string resultString = JsonConvert.SerializeObject(cr, new StringEnumConverter()); CompletenessReport cr2 = em.GetCompletenessReport(new CompletenessReport.CompletenessReportConfiguration { Einheit = combi.Item3, Obis = combi.Item2, Wertermittlungsverfahren = combi.Item1, ReferenceTimeFrame = new BO4E.COM.Zeitraum { Startdatum = TestEnergiemengeExtension.GERMAN_APRIL_2018.Start, Enddatum = TestEnergiemengeExtension.GERMAN_APRIL_2018.End } }); //Assert.AreEqual(cr, cr2, "calling report with configuration instead of loose parameters doesn't work."); } } else if (boFile.EndsWith("somecustomer3.json")) { } else if (boFile.EndsWith("somecustomer4.json")) { } } }
public void TestNullableCoverage() { Energiemenge em1 = new Energiemenge() { LokationsId = "DE123456789DieseEmhatkeineVerbräuche", LokationsTyp = Lokationstyp.MeLo, Energieverbrauch = new List <Verbrauch>() //empty list }; CompletenessReport cr1 = em1.GetCompletenessReport(); Assert.IsNotNull(cr1); Assert.IsNull(cr1.Coverage); JsonConvert.SerializeObject(cr1); // must _not_ throw exception Energiemenge em2 = new Energiemenge() { LokationsId = "54321012345DieseEmhatkeineVerbräuche", LokationsTyp = Lokationstyp.MeLo, Energieverbrauch = new List <Verbrauch>() //empty list }; CompletenessReport cr2 = em2.GetCompletenessReport(CHRISTMAS_2018, Wertermittlungsverfahren.MESSUNG, "1-2-3-4", Mengeneinheit.KUBIKMETER); Assert.IsNotNull(cr2); Assert.IsNotNull(cr2.Coverage); // not null because no values but configuration given Assert.AreEqual(0.0M, cr2.Coverage); JsonConvert.SerializeObject(cr2); // must _not_ throw exception CompletenessReport cr3 = em2.GetCompletenessReport(CHRISTMAS_2018); Assert.IsNotNull(cr3); Assert.IsNotNull(cr3.Coverage); Assert.AreEqual(0.0M, cr3.Coverage); JsonConvert.SerializeObject(cr3); // must _not_ throw exception }
public void TestCompletenessReportGenerationSmard() { MiniProfiler profiler = MiniProfiler.StartNew(nameof(TestCompletenessReportGenerationSmard)); IList <CompletenessReport> crlist = new List <CompletenessReport>(); foreach (string boFile in Directory.GetFiles("Energiemenge/completeness", "50hz_prognose*.json")) { using (MiniProfiler.Current.Step($"Processing file {boFile}")) { JObject json; using (StreamReader r = new StreamReader(boFile)) { string jsonString = r.ReadToEnd(); json = JsonConvert.DeserializeObject <JObject>(jsonString); } Energiemenge em = (Energiemenge)BoMapper.MapObject(json, LenientParsing.Strict); CompletenessReport cr = em.GetCompletenessReport(); crlist.Add(cr); if (boFile.Contains("onshore.json")) { Assert.IsNotNull(cr.UserProperties); Assert.AreEqual <string>("yippi yippi yeah", cr.UserProperties["meineUp0"].Value <string>()); Assert.AreEqual <string>("krawall und remmidemmi", cr.UserProperties["meineUp1"].Value <string>()); } } } string resultString = JsonConvert.SerializeObject(crlist, new StringEnumConverter()); profiler.Stop(); System.Diagnostics.Debug.WriteLine($"Profiler results: {profiler.RenderPlainText()}"); }
public void TestFirstLastGap() { Energiemenge em = new Energiemenge() { LokationsId = "DE123455", LokationsTyp = Lokationstyp.MeLo, Energieverbrauch = new List <Verbrauch>() { new Verbrauch() { Obiskennzahl = "1234", Wert = 123.456M, Wertermittlungsverfahren = Wertermittlungsverfahren.MESSUNG, Startdatum = new DateTime(2019, 1, 1, 0, 0, 0, DateTimeKind.Utc), Enddatum = new DateTime(2019, 1, 4, 0, 0, 0, DateTimeKind.Utc), }, new Verbrauch() { Obiskennzahl = "1234", Wert = 123.456M, Wertermittlungsverfahren = Wertermittlungsverfahren.MESSUNG, Startdatum = new DateTime(2019, 1, 4, 0, 0, 0, DateTimeKind.Utc), Enddatum = new DateTime(2019, 1, 7, 0, 0, 0, DateTimeKind.Utc), } } }; var cr = em.GetCompletenessReport(new TimeRange(new DateTime(2018, 12, 29, 0, 0, 0, DateTimeKind.Utc), new DateTime(2019, 1, 10, 0, 0, 0, DateTimeKind.Utc))); Assert.AreEqual(2, cr.Gaps.Count()); Assert.AreEqual(new DateTime(2018, 12, 29, 0, 0, 0, DateTimeKind.Utc), cr.Gaps.First().Startdatum); Assert.AreEqual(new DateTime(2019, 1, 1, 0, 0, 0, DateTimeKind.Utc), cr.Gaps.First().Enddatum); Assert.AreEqual(new DateTime(2019, 1, 7, 0, 0, 0, DateTimeKind.Utc), cr.Gaps.Last().Startdatum); Assert.AreEqual(new DateTime(2019, 1, 10, 0, 0, 0, DateTimeKind.Utc), cr.Gaps.Last().Enddatum); }
public void TestRounding() { string boFile = Directory.GetFiles("Energiemenge/completeness", "gas_januar_2018.json").First(); JObject json; using (StreamReader r = new StreamReader(boFile)) { string jsonString = r.ReadToEnd(); json = JsonConvert.DeserializeObject <JObject>(jsonString); } Energiemenge em = (Energiemenge)BoMapper.MapObject(JObject.FromObject(json["input"]), LenientParsing.Strict); CompletenessReport cr = em.GetCompletenessReport(new TimeRange() { Start = new DateTime(2017, 12, 31, 23, 0, 0, 0, DateTimeKind.Utc), End = new DateTime(2018, 1, 31, 23, 0, 0, 0, DateTimeKind.Utc) }); Assert.AreEqual(1.0M, cr.Coverage.Value); Assert.AreEqual(0, cr.Gaps.Count()); var dailies = em.GetDailyCompletenessReports(new TimeRange() { Start = new DateTime(2017, 12, 31, 23, 0, 0, 0, DateTimeKind.Utc), End = new DateTime(2018, 1, 2, 23, 0, 0, 0, DateTimeKind.Utc) }); foreach (var crDaily in dailies) { Assert.AreEqual(1.0M, crDaily.Value.Coverage.Value, $"error in slice {crDaily.Key}"); } Assert.AreEqual(1.0M, cr.Coverage.Value); }
public void ShowCaseTest() { var em = new Energiemenge() { LokationsId = "DE0123456789012345678901234567890", LokationsTyp = Lokationstyp.MeLo, Energieverbrauch = new List <Verbrauch>() { new Verbrauch() { Einheit = Mengeneinheit.KWH, Startdatum = new DateTime(2020, 3, 1, 0, 0, 0, DateTimeKind.Utc), Enddatum = new DateTime(2020, 3, 8, 0, 0, 0, DateTimeKind.Utc), Wert = 456.0M, Wertermittlungsverfahren = Wertermittlungsverfahren.MESSUNG }, new Verbrauch() { Einheit = Mengeneinheit.KWH, Startdatum = new DateTime(2020, 3, 25, 0, 0, 0, DateTimeKind.Utc), Enddatum = new DateTime(2020, 4, 1, 0, 0, 0, DateTimeKind.Utc), Wert = 123.0M, Wertermittlungsverfahren = Wertermittlungsverfahren.MESSUNG } } }; var cr = em.GetCompletenessReport(); Debug.WriteLine($"{nameof(em)} has a coverage of {Decimal.Round(cr.Coverage.Value * 100.0M)}%."); // em has a coverage of 45%. Debug.WriteLine($"{nameof(em)} has no values for the following intervals: {string.Join(", ", cr.Gaps.Select(g => g.Startdatum.ToString("yyyy-MM-dd") + " to " + g.Enddatum.ToString("yyyy-MM-dd")))}"); // em has no values for the following intervals: 2020-03-08 to 2020-03-25 }