Files
Print_server/Inspectron.Epson.Templates.Tests/Helpers/PrintCommandAssertions.cs
2026-01-21 15:56:37 +01:00

84 lines
2.8 KiB
C#

using Inspectron.Epson.PrintServer.Printers.Utils;
namespace Inspectron.Epson.Templates.Tests.Helpers;
public static class PrintCommandAssertions
{
public static void AssertCommandExists(
List<PrintCommand> commands,
string textContains,
bool? isBold = null,
bool? isBig = null,
bool? isTall = null,
bool? isRed = null)
{
var matching = commands.Where(c => c.Text.Contains(textContains)).ToList();
if (matching.Count == 0)
{
throw new Xunit.Sdk.XunitException($"No command found containing text: '{textContains}'");
}
foreach (var cmd in matching)
{
if (isBold.HasValue && cmd.IsBold != isBold.Value)
{
throw new Xunit.Sdk.XunitException(
$"Command with text '{textContains}' has IsBold={cmd.IsBold}, expected {isBold.Value}");
}
if (isBig.HasValue && cmd.IsBig != isBig.Value)
{
throw new Xunit.Sdk.XunitException(
$"Command with text '{textContains}' has IsBig={cmd.IsBig}, expected {isBig.Value}");
}
if (isTall.HasValue && cmd.IsTall != isTall.Value)
{
throw new Xunit.Sdk.XunitException(
$"Command with text '{textContains}' has IsTall={cmd.IsTall}, expected {isTall.Value}");
}
if (isRed.HasValue && cmd.IsRed != isRed.Value)
{
throw new Xunit.Sdk.XunitException(
$"Command with text '{textContains}' has IsRed={cmd.IsRed}, expected {isRed.Value}");
}
}
}
public static void AssertSequence(List<PrintCommand> commands, params string[] expectedTexts)
{
var commandTexts = commands.Select(c => c.Text).ToList();
int searchIndex = 0;
foreach (var expected in expectedTexts)
{
var foundIndex = -1;
for (int i = searchIndex; i < commandTexts.Count; i++)
{
if (commandTexts[i].Contains(expected))
{
foundIndex = i;
break;
}
}
if (foundIndex < 0)
{
throw new Xunit.Sdk.XunitException(
$"Expected text '{expected}' not found in sequence after index {searchIndex}");
}
searchIndex = foundIndex + 1;
}
}
public static void AssertCommandCount(List<PrintCommand> commands, string textContains, int expectedCount)
{
var count = commands.Count(c => c.Text.Contains(textContains));
if (count != expectedCount)
{
throw new Xunit.Sdk.XunitException(
$"Expected {expectedCount} commands containing '{textContains}', found {count}");
}
}
}