BoardOil.Dev.Tests/ManagedServiceStateTests.cs
Rama main · réplica de lectura del repositorio original.
using BoardOil.Dev;
using Xunit;
namespace BoardOil.Dev.Tests;
public sealed class ManagedServiceStateTests
{
[Theory]
[InlineData(false, false, null, false, "stopped", false)]
[InlineData(true, true, null, false, "running", false)]
[InlineData(true, false, 0, false, "stopped", false)]
[InlineData(true, false, 137, true, "stopped", false)]
[InlineData(true, false, 2, false, "exit 2", true)]
public void ResolveShouldDescribeProcessState(
bool hasProcess,
bool isRunning,
int? exitCode,
bool stoppedByUser,
string expectedText,
bool expectedFailure)
{
// Act
var result = ServiceProcessState.Resolve(hasProcess, isRunning, exitCode, stoppedByUser);
// Assert
Assert.Equal(expectedText, result.Text);
Assert.Equal(expectedFailure, result.HasFailed);
}
[Fact]
public void RecentLogBufferShouldKeepCapacityAndReturnTail()
{
// Arrange
var buffer = new RecentLogBuffer(3);
buffer.Add("one");
buffer.Add("two");
buffer.Add("three");
buffer.Add("four");
// Act
var result = buffer.Tail(2);
// Assert
Assert.Equal(3, buffer.Count);
Assert.Equal(["three", "four"], result);
}
[Theory]
[InlineData("dotnet BoardOil.Api", new[] { "BoardOil.Api" }, true)]
[InlineData("node vite --port 5173", new[] { "vite" }, true)]
[InlineData("node another-server", new[] { "vite" }, false)]
public void IsRecognisedShouldRequireEveryCommandFragment(
string commandLine,
string[] fragments,
bool expected)
{
// Act
var result = PortConflictResolver.IsRecognised(commandLine, fragments);
// Assert
Assert.Equal(expected, result);
}
}