using SpdUp.Core;
namespace SpdUp.Tests;
///
/// Tests for RelayCommand and RelayCommand<T>.
///
public class RelayCommandTests
{
[Fact]
public void Execute_InvokesAction()
{
bool executed = false;
var cmd = new RelayCommand(() => executed = true);
cmd.Execute(null);
Assert.True(executed);
}
[Fact]
public void Execute_WithParameter_InvokesParameterizedAction()
{
object? received = null;
var cmd = new RelayCommand(p => received = p);
cmd.Execute("test");
Assert.Equal("test", received);
}
[Fact]
public void CanExecute_DefaultsToTrue()
{
var cmd = new RelayCommand(() => { });
Assert.True(cmd.CanExecute(null));
}
[Fact]
public void CanExecute_RespectsCanExecuteFunc()
{
var cmd = new RelayCommand(() => { }, () => false);
Assert.False(cmd.CanExecute(null));
}
[Fact]
public void CanExecute_ParameterizedPredicate()
{
var cmd = new RelayCommand(_ => { }, p => p is "go");
Assert.True(cmd.CanExecute("go"));
Assert.False(cmd.CanExecute("stop"));
Assert.False(cmd.CanExecute(null));
}
[Fact]
public void Constructor_ThrowsOnNullAction()
{
Assert.Throws(() => new RelayCommand((Action