using System; using Moq; using NixWslWrapper.Cli; using NixWslWrapper.Core.Domain; using NixWslWrapper.Core.Interfaces; using Xunit; namespace NixWslWrapper.Tests { public class CliTests { [Fact] public void CliController_ForwardArguments_ShouldReturnExecutorExitCode() { var mockExecutor = new Mock(); var expectedResult = new ExecutionResult(42); mockExecutor .Setup(m => m.Execute(It.IsAny(), It.IsAny())) .Returns(expectedResult); var controller = new CliController(mockExecutor.Object); string[] cliArgs = new[] { "run", "nixpkgs#hello" }; int exitCode = controller.Run(cliArgs); Assert.Equal(42, exitCode); mockExecutor.Verify(m => m.Execute( It.Is(a => a.RawArguments.Length == 2 && a.RawArguments[0] == "run"), It.IsAny() ), Times.Once); } [Fact] public void CliController_HelpMenuFlag_ShouldReturnZeroImmediately() { var mockExecutor = new Mock(); var controller = new CliController(mockExecutor.Object); string[] cliArgs = new[] { "--wsl-help" }; int exitCode = controller.Run(cliArgs); Assert.Equal(0, exitCode); mockExecutor.Verify(m => m.Execute(It.IsAny(), It.IsAny()), Times.Never); } } }