public void RelayCommandWithParameter_ExecuteWithNullParameter_UsesOriginalParameter()
        {
            var parameter = new object();
            var command   = TestCommand.CreateWithExecuteAndCanExecuteAndParameterData(
                onExecute: p => Assert.True(object.ReferenceEquals(parameter, p)),
                canExecute: null,
                parameter: parameter);

            command.Execute(null);
        }
        public void RelayCommandWithParameter_ExecuteWithNonNullParameter_UsesProvidedParameter()
        {
            var parameter        = new object();
            var executeParameter = new object();
            var command          = TestCommand.CreateWithExecuteAndCanExecuteAndParameterData(
                p => Assert.True(object.ReferenceEquals(executeParameter, p)),
                canExecute: null,
                parameter: parameter);

            command.Execute(executeParameter);
        }
        public void RelayCommand_Clone_ValuesCloneProperly()
        {
            var parameter = "Lt. Cmdr. Data";
            var command   = TestCommand.CreateWithExecuteAndCanExecuteAndParameterData(null, null, parameter);

            Assert.Equal(typeof(string), command.PreferredParameterType);

            var copy = TestCommand.Clone(command);

            Assert.Equal(command.UniqueId, copy.UniqueId);
            Assert.Equal(command.PreferredParameterType, copy.PreferredParameterType);
        }
        public void RelayCommandWithParameter_CanExecuteWithNonNullParameter_UsesProvidedParameter()
        {
            var parameter           = new object();
            var canExecuteParameter = new object();
            var command             = TestCommand.CreateWithExecuteAndCanExecuteAndParameterData(
                onExecute: null,
                canExecute: p =>
            {
                Assert.True(object.ReferenceEquals(canExecuteParameter, p));
                return(false);
            },
                parameter: parameter);

            Assert.False(command.CanExecute(canExecuteParameter));
        }