using Rainbow.Services;
using Xunit;
namespace XUnitTest.Rainbow.Services;
public class PppManagerTests
{
[Fact(DisplayName = "PppManager_构造_无参数创建成功")]
public void Constructor_NoParams_Success()
{
var manager = new PppManager();
Assert.NotNull(manager);
Assert.NotNull(manager.Log);
}
[Fact(DisplayName = "PppManager_构造_传入Shell")]
public void Constructor_WithShell()
{
var shell = new ShellExecutor();
var manager = new PppManager(shell);
Assert.Same(shell, manager.Shell);
}
[Fact(DisplayName = "PppManager_GetStatus_返回状态对象")]
public async Task GetStatus_ReturnsStatus()
{
var manager = new PppManager(new ShellExecutor());
var status = await manager.GetStatusAsync();
Assert.NotNull(status);
// IsConnected 取决于数据库中是否有启用账号,只验证对象不为空
}
[Fact(DisplayName = "PppManager_Connect_NullShell返回Fail")]
public async Task Connect_NullShell_ReturnsFail()
{
var manager = new PppManager();
var result = await manager.ConnectAsync();
Assert.NotNull(result);
Assert.False(result.Success);
Assert.Equal(-1, result.ExitCode);
}
[Fact(DisplayName = "PppManager_Disconnect_NullShell返回Fail")]
public async Task Disconnect_NullShell_ReturnsFail()
{
var manager = new PppManager();
var result = await manager.DisconnectAsync();
Assert.NotNull(result);
Assert.False(result.Success);
Assert.Equal(-1, result.ExitCode);
}
[Fact(DisplayName = "PppManager_StartStopAutoReconnect_无异常")]
public void StartStopAutoReconnect_NoThrow()
{
var manager = new PppManager();
var ex = Record.Exception(() =>
{
manager.StartAutoReconnect(30);
manager.StopAutoReconnect();
});
Assert.Null(ex);
}
}
|