Ctrl K
ComunidadGuías…

BoardOil.Dev.Tests/ManagedServiceStateTests.cs

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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);
    }
}