-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
4dbb202
commit 12ddb0d
Showing
3 changed files
with
134 additions
and
106 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
43 changes: 43 additions & 0 deletions
43
tests/carbon-intensity-sdk.test/WhenGettingGenerationData.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
using AutoFixture; | ||
using Shouldly; | ||
using Xunit; | ||
|
||
namespace CarbonIntensitySdk.Test; | ||
|
||
public class WhenGettingGenerationData : BaseTest | ||
{ | ||
[Fact] | ||
public async Task ShouldGetGenerationMix() | ||
{ | ||
var fixture = new Fixture(); | ||
var client = fixture.Create<CarbonIntensityClient>(); | ||
|
||
var generationMix = await client.GetGenerationMix(); | ||
|
||
generationMix.BiomassPercentage.HasValue.ShouldBeTrue(); | ||
generationMix.CoalPercentage.HasValue.ShouldBeTrue(); | ||
generationMix.GasPercentage.HasValue.ShouldBeTrue(); | ||
generationMix.HydroPercentage.HasValue.ShouldBeTrue(); | ||
generationMix.ImportsPercentage.HasValue.ShouldBeTrue(); | ||
generationMix.NuclearPercentage.HasValue.ShouldBeTrue(); | ||
generationMix.OtherPercentage.HasValue.ShouldBeTrue(); | ||
generationMix.SolarPercentage.HasValue.ShouldBeTrue(); | ||
generationMix.WindPercentage.HasValue.ShouldBeTrue(); | ||
} | ||
|
||
[Fact] | ||
public async Task ShouldGetGenerationMixBetweenDates() | ||
{ | ||
var fixture = new Fixture(); | ||
var client = fixture.Create<CarbonIntensityClient>(); | ||
|
||
var from = DateTime.Today; | ||
var to = from.AddHours(2); | ||
|
||
var generationMix = await client.GetGenerationMix(from, to); | ||
generationMix.Length.ShouldBe(5); | ||
|
||
generationMix.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(from.AddMinutes(-30)); | ||
generationMix.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(to); | ||
} | ||
} |
185 changes: 91 additions & 94 deletions
185
tests/carbon-intensity-sdk.test/WhenGettingIntensity.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,130 +1,127 @@ | ||
using Xunit; | ||
using AutoFixture; | ||
using Microsoft.VisualStudio.TestPlatform.ObjectModel; | ||
using Shouldly; | ||
using static System.Runtime.InteropServices.JavaScript.JSType; | ||
|
||
namespace CarbonIntensitySdk.Test | ||
namespace CarbonIntensitySdk.Test; | ||
|
||
public class WhenGettingIntensity : BaseTest | ||
{ | ||
public class WhenGettingIntensity : BaseTest | ||
[Fact] | ||
public async Task ShouldGetIntensityForCurrentHalfHour() | ||
{ | ||
[Fact] | ||
public async Task ShouldGetIntensityForCurrentHalfHour() | ||
{ | ||
var fixture = new Fixture(); | ||
var fixture = new Fixture(); | ||
|
||
var client = fixture.Create<CarbonIntensityClient>(); | ||
_ = await client.GetIntensityForCurrentHalfHour(); | ||
} | ||
var client = fixture.Create<CarbonIntensityClient>(); | ||
_ = await client.GetIntensityForCurrentHalfHour(); | ||
} | ||
|
||
[Fact] | ||
public async Task ShouldGetIntensitiesForToday() | ||
{ | ||
var fixture = new Fixture(); | ||
[Fact] | ||
public async Task ShouldGetIntensitiesForToday() | ||
{ | ||
var fixture = new Fixture(); | ||
|
||
var client = fixture.Create<CarbonIntensityClient>(); | ||
var intensities = await client.GetIntensitiesForToday(); | ||
var client = fixture.Create<CarbonIntensityClient>(); | ||
var intensities = await client.GetIntensitiesForToday(); | ||
|
||
intensities.Length.ShouldBe(48); | ||
intensities.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(DateTime.Today); | ||
intensities.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(DateTime.Today.AddDays(1)); | ||
} | ||
intensities.Length.ShouldBe(48); | ||
intensities.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(DateTime.Today); | ||
intensities.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(DateTime.Today.AddDays(1)); | ||
} | ||
|
||
[Fact] | ||
public async Task ShouldGetIntensitiesForDate() | ||
{ | ||
var fixture = new Fixture(); | ||
[Fact] | ||
public async Task ShouldGetIntensitiesForDate() | ||
{ | ||
var fixture = new Fixture(); | ||
|
||
var client = fixture.Create<CarbonIntensityClient>(); | ||
var client = fixture.Create<CarbonIntensityClient>(); | ||
|
||
var date = DateTime.Today.AddDays(-1); | ||
var intensities = await client.GetIntensitiesForDate(date); | ||
var date = DateTime.Today.AddDays(-1); | ||
var intensities = await client.GetIntensitiesForDate(date); | ||
|
||
intensities.Length.ShouldBe(48); | ||
intensities.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(date); | ||
intensities.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(date.AddDays(1)); | ||
} | ||
intensities.Length.ShouldBe(48); | ||
intensities.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(date); | ||
intensities.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(date.AddDays(1)); | ||
} | ||
|
||
[Fact] | ||
public async Task ShouldGetIntensityForDateAndPeriod() | ||
{ | ||
var fixture = new Fixture(); | ||
[Fact] | ||
public async Task ShouldGetIntensityForDateAndPeriod() | ||
{ | ||
var fixture = new Fixture(); | ||
|
||
var client = fixture.Create<CarbonIntensityClient>(); | ||
var client = fixture.Create<CarbonIntensityClient>(); | ||
|
||
var date = DateTime.Today.AddDays(-1); | ||
int period = 5; | ||
var intensity = await client.GetIntensityForDateAndPeriod(date, period); | ||
var date = DateTime.Today.AddDays(-1); | ||
int period = 5; | ||
var intensity = await client.GetIntensityForDateAndPeriod(date, period); | ||
|
||
intensity.FromUtc.ShouldBe(date.AddMinutes(30 * (period - 1))); | ||
intensity.ToUtc.ShouldBe(date.AddMinutes(30 * period)); | ||
} | ||
intensity.FromUtc.ShouldBe(date.AddMinutes(30 * (period - 1))); | ||
intensity.ToUtc.ShouldBe(date.AddMinutes(30 * period)); | ||
} | ||
|
||
[Fact] | ||
public async Task ShouldGetCarbonFactors() | ||
{ | ||
var fixture = new Fixture(); | ||
[Fact] | ||
public async Task ShouldGetCarbonFactors() | ||
{ | ||
var fixture = new Fixture(); | ||
|
||
var client = fixture.Create<CarbonIntensityClient>(); | ||
var client = fixture.Create<CarbonIntensityClient>(); | ||
|
||
_ = await client.GetCarbonFactors(); | ||
} | ||
_ = await client.GetCarbonFactors(); | ||
} | ||
|
||
[Fact] | ||
public async Task ShouldGetIntensityFrom() | ||
{ | ||
var fixture = new Fixture(); | ||
[Fact] | ||
public async Task ShouldGetIntensityFrom() | ||
{ | ||
var fixture = new Fixture(); | ||
|
||
var client = fixture.Create<CarbonIntensityClient>(); | ||
var client = fixture.Create<CarbonIntensityClient>(); | ||
|
||
_ = await client.GetIntensityFrom(DateTime.Today); | ||
} | ||
_ = await client.GetIntensityFrom(DateTime.Today); | ||
} | ||
|
||
[Fact] | ||
public async Task ShouldGetIntensityBetween() | ||
{ | ||
var fixture = new Fixture(); | ||
[Fact] | ||
public async Task ShouldGetIntensityBetween() | ||
{ | ||
var fixture = new Fixture(); | ||
|
||
var client = fixture.Create<CarbonIntensityClient>(); | ||
var client = fixture.Create<CarbonIntensityClient>(); | ||
|
||
var from = DateTime.Today; | ||
var to = from.AddHours(1); | ||
var intensities = await client.GetIntensityBetween(from, to); | ||
intensities.Length.ShouldBe(3); | ||
intensities.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(from.AddMinutes(-30)); | ||
intensities.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(to); | ||
} | ||
var from = DateTime.Today; | ||
var to = from.AddHours(1); | ||
var intensities = await client.GetIntensityBetween(from, to); | ||
|
||
intensities.Length.ShouldBe(3); | ||
intensities.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(from.AddMinutes(-30)); | ||
intensities.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(to); | ||
} | ||
|
||
[Fact] | ||
public async Task ShouldGetIntensityStatsBetween() | ||
{ | ||
var fixture = new Fixture(); | ||
[Fact] | ||
public async Task ShouldGetIntensityStatsBetween() | ||
{ | ||
var fixture = new Fixture(); | ||
|
||
var client = fixture.Create<CarbonIntensityClient>(); | ||
var client = fixture.Create<CarbonIntensityClient>(); | ||
|
||
var from = DateTime.Today; | ||
var to = from.AddHours(1); | ||
var intensities = await client.GetIntensityStatsBetween(from, to); | ||
var from = DateTime.Today; | ||
var to = from.AddHours(1); | ||
var intensities = await client.GetIntensityStatsBetween(from, to); | ||
|
||
intensities.FromUtc.ShouldBe(from); | ||
intensities.ToUtc.ShouldBe(to); | ||
} | ||
intensities.FromUtc.ShouldBe(from); | ||
intensities.ToUtc.ShouldBe(to); | ||
} | ||
|
||
[Fact] | ||
public async Task ShouldGetBlockAverageIntensityStatsBetween() | ||
{ | ||
var fixture = new Fixture(); | ||
[Fact] | ||
public async Task ShouldGetBlockAverageIntensityStatsBetween() | ||
{ | ||
var fixture = new Fixture(); | ||
|
||
var client = fixture.Create<CarbonIntensityClient>(); | ||
var client = fixture.Create<CarbonIntensityClient>(); | ||
|
||
var from = DateTime.Today; | ||
var to = from.AddDays(1); | ||
var intensities = await client.GetBlockAverageIntensityStats(from, to, 2); | ||
var from = DateTime.Today; | ||
var to = from.AddDays(1); | ||
var intensities = await client.GetBlockAverageIntensityStats(from, to, 2); | ||
|
||
intensities.Length.ShouldBe(12); | ||
intensities.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(from); | ||
intensities.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(to); | ||
} | ||
intensities.Length.ShouldBe(12); | ||
intensities.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(from); | ||
intensities.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(to); | ||
} | ||
} | ||
} |