public async Task SumOfAllCountriesEqualsWorld() { JHUCSSEServices jhucsseServices = _fixture.ServiceProvider.GetRequiredService <JHUCSSEServices>(); JHUCSSEHistoricalReport worldHistoricalReport = await jhucsseServices.GetWorldHistoricalReportAsync(CancellationToken.None); ImmutableList <Country> countries = await jhucsseServices.GetAllCountriesAsync(CancellationToken.None); foreach (DateTime utcDate in from datum in worldHistoricalReport.TimeSeries orderby datum.UtcDate select datum.UtcDate) { int totalConfirmed = 0; int totalDeaths = 0; int totalRecovered = 0; int?totalActive = null; Debug.WriteLine($"SumOfAllCountriesEqualsWorld: {utcDate}"); foreach (Country country in countries) { JHUCSSEHistoricalReport countryHistoricalReport = await jhucsseServices.GetCountryHistoricalReportAsync(country.Name, CancellationToken.None); JHUCSSEDailyStatistics?countryDatum = countryHistoricalReport.TimeSeries.FirstOrDefault(datum => datum.UtcDate == utcDate); if (countryDatum != null) { totalConfirmed += countryDatum.Confirmed; totalDeaths += countryDatum.Deaths; totalRecovered += countryDatum.Recovered; if (countryDatum.Active.HasValue) { if (totalActive.HasValue) { totalActive += countryDatum.Active.Value; } else { totalActive = countryDatum.Active; } } } } JHUCSSEDailyStatistics worldDatum = worldHistoricalReport.TimeSeries.Single(datum => datum.UtcDate == utcDate); worldDatum.Confirmed.Should().Be(totalConfirmed, because: "Sum of all countries' confirmed cases should be equal to world's confirmed cases on {0}.", utcDate.ToString("MM-dd-yyyy")); worldDatum.Deaths.Should().Be(totalDeaths, because: "Sum of all countries' number of deaths should be equal to world's number of deaths on {0}.", utcDate.ToString("MM-dd-yyyy")); worldDatum.Recovered.Should().Be(totalRecovered, because: "Sum of all countries' number of recoveries should be equal to world's number of recoveries on {0}.", utcDate.ToString("MM-dd-yyyy")); worldDatum.Active.Should().Be(totalActive, because: "Sum of all countries' active cases should be equal to world's active cases on {0}.", utcDate.ToString("MM-dd-yyyy")); } }
public async Task KnownAdmin1DataVerified(int month, int day, string country, string admin1, int confirmed, int deaths, int recovered, int?active) { JHUCSSEServices jhucsseServices = _fixture.ServiceProvider.GetRequiredService <JHUCSSEServices>(); JHUCSSEHistoricalReport admin1HistoricalReport = await jhucsseServices.GetAdmin1HistoricalReportAsync(country, admin1, CancellationToken.None); DateTime utcDate = new DateTime(2020, month, day, 0, 0, 0, DateTimeKind.Utc); JHUCSSEDailyStatistics datum = admin1HistoricalReport.TimeSeries.Single(datum => datum.UtcDate == utcDate); datum.Confirmed.Should().Be(confirmed); datum.Deaths.Should().Be(deaths); datum.Recovered.Should().Be(recovered); datum.Active.Should().Be(active); }