exchanger/tests/Exchanger.Tests/TokenInventoryPolicyTests.cs

85 lines
3.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Exchanger.Core.Inventory;
using Exchanger.Hardware.Abstractions;
using NUnit.Framework;
namespace Exchanger.Tests;
[TestFixture]
public sealed class TokenInventoryPolicyTests
{
[TestCase(0, "нет жетонов")]
[TestCase(1, "<100")]
[TestCase(99, "<100")]
[TestCase(100, "~100")]
[TestCase(199, ">100")]
[TestCase(1000, "~1000")]
[TestCase(1001, ">1000")]
[TestCase(1500, "~1500")]
[TestCase(1999, ">1500")]
public void ApproximateCount_UsesRequiredBuckets(int count, string expected)
{
Assert.That(TokenInventoryPolicy.FormatApproximateCount(count), Is.EqualTo(expected));
}
[TestCase(0, "0 жетонов")]
[TestCase(1, "1 жетон")]
[TestCase(2, "2 жетона")]
[TestCase(5, "5 жетонов")]
[TestCase(11, "11 жетонов")]
[TestCase(21, "21 жетон")]
[TestCase(124, "124 жетона")]
public void ExactCount_UsesReadableRussianForm(int count, string expected)
{
Assert.That(TokenInventoryPolicy.FormatExactCount(count), Is.EqualTo(expected));
}
[TestCase(1, 1, "ХОППЕР 1 — ОСТАТОК: 1 ЖЕТОН")]
[TestCase(2, 24, "ХОППЕР 2 — ОСТАТОК: 24 ЖЕТОНА")]
[TestCase(2, 111, "ХОППЕР 2 — ОСТАТОК: 111 ЖЕТОНОВ")]
public void HopperExactCount_IdentifiesHopperAndUsesReadableRussianForm(
int hopperNumber,
int count,
string expected)
{
Assert.That(TokenInventoryPolicy.FormatHopperExactCount(hopperNumber, count), Is.EqualTo(expected));
}
[TestCase(0, MachineStockLevel.Enough, MachineStockLevel.Enough, TokenAvailabilityLevel.Empty)]
[TestCase(50, MachineStockLevel.Enough, MachineStockLevel.Low, TokenAvailabilityLevel.Low)]
[TestCase(500, MachineStockLevel.Low, MachineStockLevel.Low, TokenAvailabilityLevel.Low)]
[TestCase(100, MachineStockLevel.Low, MachineStockLevel.Unknown, TokenAvailabilityLevel.Enough)]
[TestCase(500, MachineStockLevel.Enough, MachineStockLevel.Low, TokenAvailabilityLevel.Enough)]
[TestCase(1, MachineStockLevel.Enough, MachineStockLevel.Enough, TokenAvailabilityLevel.Much)]
public void Availability_CombinesAccountedCountAndBothSensors(
int count,
MachineStockLevel hopper1,
MachineStockLevel hopper2,
TokenAvailabilityLevel expected)
{
Assert.That(
TokenInventoryPolicy.ResolveAvailability(count, hopper1, hopper2),
Is.EqualTo(expected));
}
[TestCase(MachineStockLevel.Enough, MachineStockLevel.Low, true, true, TokenAvailabilityLevel.Enough)]
[TestCase(MachineStockLevel.Low, MachineStockLevel.Unknown, true, true, TokenAvailabilityLevel.Low)]
[TestCase(MachineStockLevel.Unknown, MachineStockLevel.Enough, true, false, TokenAvailabilityLevel.Unknown)]
[TestCase(MachineStockLevel.Unknown, MachineStockLevel.Enough, false, true, TokenAvailabilityLevel.Enough)]
[TestCase(MachineStockLevel.Enough, MachineStockLevel.Enough, false, false, TokenAvailabilityLevel.Unknown)]
public void AvailabilityWithoutInventory_UsesOnlyConfiguredHopperSensors(
MachineStockLevel hopper1,
MachineStockLevel hopper2,
bool hopper1Enabled,
bool hopper2Enabled,
TokenAvailabilityLevel expected)
{
Assert.That(
TokenInventoryPolicy.ResolveWithoutInventory(
hopper1,
hopper2,
hopper1Enabled,
hopper2Enabled),
Is.EqualTo(expected));
}
}