exchanger/tests/Exchanger.Tests/DualHopperDispensePlannerTests.cs

58 lines
1.7 KiB
C#

using Exchanger.Hardware.Abstractions;
using NUnit.Framework;
namespace Exchanger.Tests;
[TestFixture]
public sealed class DualHopperDispensePlannerTests
{
[TestCase(10, 20, 30, 10, 0)]
[TestCase(10, 10, 30, 10, 0)]
[TestCase(10, 6, 30, 6, 4)]
[TestCase(10, 0, 30, 0, 10)]
[TestCase(10, -5, 30, 0, 10)]
public void TryCreate_UsesFirstHopperBeforeSecond(
int requested,
int hopper1Inventory,
int hopper2Inventory,
int expectedFromHopper1,
int expectedFromHopper2)
{
bool created = DualHopperDispensePlanner.TryCreate(
requested,
hopper1Inventory,
hopper2Inventory,
out DualHopperDispensePlan plan);
using (Assert.EnterMultipleScope())
{
Assert.That(created, Is.True);
Assert.That(plan.Hopper1Count, Is.EqualTo(expectedFromHopper1));
Assert.That(plan.Hopper2Count, Is.EqualTo(expectedFromHopper2));
Assert.That(plan.TotalCount, Is.EqualTo(requested));
}
}
[TestCase(0, 10, 10)]
[TestCase(-1, 10, 10)]
[TestCase(10, 3, 6)]
[TestCase(10, -1, 9)]
public void TryCreate_RejectsInvalidOrInsufficientInventory(
int requested,
int hopper1Inventory,
int hopper2Inventory)
{
bool created = DualHopperDispensePlanner.TryCreate(
requested,
hopper1Inventory,
hopper2Inventory,
out DualHopperDispensePlan plan);
using (Assert.EnterMultipleScope())
{
Assert.That(created, Is.False);
Assert.That(plan, Is.EqualTo(default(DualHopperDispensePlan)));
}
}
}