Represents a parameterized command.
Inheritance: TestCommand
        public void ExecuteReturnsCorrectResult()
        {
            // Fixture setup
            var testMethod = new Action(() => { }).Method;
            var actualMethod = new Action(() => { }).Method;

            var testObject = Activator.CreateInstance(actualMethod.ReflectedType);

            var methodContext = Mocked.Of<ITestMethodContext>(
                x => x.ActualMethod == actualMethod && x.ActualObject == testObject);

            var context = Mocked.Of<ITestCommandContext>(
                x => x.TestMethod == Reflector.Wrap(testMethod)
                && x.GetMethodContext(testObject) == methodContext);

            var sut = new ParameterizedCommand(context);

            // Exercise system
            var actual = sut.Execute(testObject);

            // Verify outcome
            var passedResult = Assert.IsAssignableFrom<PassedResult>(actual);
            Assert.Equal(testMethod.Name, passedResult.MethodName);
            Assert.Equal(actual.DisplayName, passedResult.DisplayName);
        }
        public void ExecuteCorrectlyInvokesActualMethod()
        {
            // Fixture setup
            var verified = false;

            var arguments = new object[] { "1", 1 };

            var delegator = new Action<string, int>((x, y) =>
            {
                Assert.Equal(x, arguments[0]);
                Assert.Equal(y, arguments[1]);
                verified = true;
            });

            var testObject = new object();

            var methodContext = Mocked.Of<ITestMethodContext>(
                x => x.ActualMethod == delegator.Method
                && x.ActualObject == delegator.Target);

            var context = Mocked.Of<ITestCommandContext>(x =>
                x.GetMethodContext(testObject) == methodContext
                && x.GetArguments(methodContext) == arguments);

            var sut = new ParameterizedCommand(context);

            // Exercise system
            sut.Execute(testObject);

            // Verify outcome
            Assert.True(verified, "verified");
        }
        public void ExecuteSetsCorrectDisplayName()
        {
            // Fixture setup
            var arguments = new object[] { "1", 1 };

            var testMethod = Reflector.Wrap(new Action<string, int>((x, y) => { }).Method);

            var testObject = new object();

            var context = Mocked.Of<ITestCommandContext>(x =>
                x.TestMethod == testMethod
                && x.GetArguments(It.IsAny<ITestMethodContext>()) == arguments);

            var sut = new ParameterizedCommand(context);

            var expectecd = new TheoryCommand(testMethod, arguments).DisplayName;

            // Exercise system
            sut.Execute(testObject);

            // Verify outcome
            Assert.Equal(expectecd, sut.DisplayName);
        }
 public void SutIsTestCommand()
 {
     var sut = new ParameterizedCommand(Mocked.Of<ITestCommandContext>());
     Assert.IsAssignableFrom<ITestCommand>(sut);
 }
        public void InitializeCorrectlyInitializesTimeoutWhenSpecifyingTimeout()
        {
            var method = (MethodInfo)MethodBase.GetCurrentMethod();
            var context = Mocked.Of<ITestCommandContext>(x => x.TestMethod == Reflector.Wrap(method));

            var sut = new ParameterizedCommand(context);

            Assert.Equal(12345, sut.Timeout);
        }
        public void InitializeCorrectlyInitializesProperties()
        {
            var method = (MethodInfo)MethodBase.GetCurrentMethod();
            var context = Mocked.Of<ITestCommandContext>(x => x.TestMethod == Reflector.Wrap(method));

            var sut = new ParameterizedCommand(context);

            Assert.Equal(context, sut.TestCommandContext);
            Assert.Equal(method.Name, sut.MethodName);
            Assert.Equal(0, sut.Timeout);
        }
        public void ExecuteSetsDisplayNameBeforeInvokingActualMethod()
        {
            var testMethod = Reflector.Wrap(
                new Action(() => { throw new InvalidOperationException(); }).Method);
            var sut = new ParameterizedCommand(new ParameterizedCommandContext(
                testMethod,
                Mocked.Of<ISpecimenBuilderFactory>(),
                Enumerable.Empty<object>()));
            var expectecd = new TheoryCommand(testMethod, new object[0]).DisplayName;

            Assert.Throws<InvalidOperationException>(
                () => sut.Execute(Activator.CreateInstance(testMethod.Class.Type)));
            Assert.Equal(expectecd, sut.DisplayName);
        }