58 lines
1.7 KiB
C#
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)));
|
|
}
|
|
}
|
|
}
|