public void TestExecuteSync()
 {
     var processor = new MockCommandProcessor();
     var command = new MockCommand(true);
     processor.Init(Assert.IsNull);
     Assert.IsFalse(processor.Execute(1, command)); //new state should be false
 }
 public void TestExecuteAsync()
 {
     var processor = new MockCommandProcessor();
     var command = new MockCommand(true);
     processor.Init(Assert.IsNull);
     bool newState = processor.ExecuteAsync(1, command).ConfigureAwait(true).GetAwaiter().GetResult();
     Assert.IsFalse(newState); //new state should be false
 }
 public void TestExecuteAndForget()
 {
     var command = new MockCommand(true);
     var processor = new MockCommandProcessor();
     processor.Init(Assert.IsNull);
     processor.ExecuteAndForget(1, command);
     Assert.IsTrue(SpinWaitHelper.SpinWaitForCondition(() => command.CurrentState == false, 500));
         //new state should be false
 }
 public void RegisterCommand_AddsCommandToDictionary()
 {
     // Arrange
     CommandManager cm = new CommandManager();
     ICommand mockCommand = new MockCommand();
     // Act
     cm.RegisterCommand(mockCommand);
     // Assert
     Assert.Equal(1, cm.GetCommands().Count());
 }
        public void WhenCommandIsSetAndThenBehaviorIsAttached_ThenCommandsCanExecuteIsCalledOnce()
        {
            var someControl   = new TextBox();
            var command       = new MockCommand();
            var commandAction = new InvokeCommandAction();

            commandAction.Command = command;
            commandAction.Attach(someControl);

            Assert.AreEqual(1, command.CanExecuteTimesCalled);
        }
 public void GetCommand_ReturnsCorrectCommand()
 {
     // Arrange
     CommandManager cm = new CommandManager();
     ICommand expectedCommand = new MockCommand();
     cm.RegisterCommand(expectedCommand);
     // Act
     ICommand actualCommand = cm.GetCommand("MockCommand");
     // Assert
     Assert.Equal(expectedCommand, actualCommand);
 }
Example #7
0
        public void RegisterCommand_AddsCommandToDictionary()
        {
            // Arrage
            CommandManager cm          = new CommandManager();
            ICommand       mockCommand = new MockCommand();

            // Act
            cm.RegisterCommand(mockCommand);
            // Assert
            Assert.AreEqual(1, cm.GetCommands().Count());
        }
        public void ShouldNotThrowWhenCommandSetToNull()
        {
            var clickableObject = new MockClickableObject();
            var command         = new MockCommand();

            var behavior = new ButtonBaseClickCommandBehavior(clickableObject);

            behavior.Command = command;

            behavior.Command = null;
            clickableObject.RaiseClick();
        }
Example #9
0
        public void KillSwitch_will_have_been_engaged_if_service_method_was_successful_but_synchronization_was_not()
        {
            //Arrange
            MockMethodReturn.Setup(m => m.Success).Returns(true);
            MockCommand.Setup(m => m.Synchronize(It.IsAny <Func <TCommandInput> >())).Throws(new Exception());

            //Act
            SynchronizeOldContext.OnExit(MethodExecutionArgs);

            //Assert
            MockKillSwitch.Verify(k => k.Engage(), Times.Once());
        }
Example #10
0
        public void FunctionBase_ShouldResolveCommand()
        {
            var commandObj = new MockCommand();

            serviceProviderMock
            .Setup(x => x.GetService(It.IsAny <Type>()))
            .Returns(commandObj);

            var result = functionBase.ResolveCommand <MockCommand>();

            result.Should().Be(commandObj);
        }
        public async Task <MockCommandResult> OnCommand(MockCommand evt)
        {
            AddCalledHandler(nameof(OnCommand));

            var mockResponse = new MockCommandResult();

            await Task.Run(() => {
                mockResponse.Value = "MOCK_VALUE";
            });

            return(mockResponse);
        }
        public void ShouldHookUpClickCommandBehaviorWhenSettingProperty()
        {
            var clickableObject = new MockClickableObject();
            var command         = new MockCommand();

            Click.SetCommand(clickableObject, command);
            Assert.IsFalse(command.ExecuteCalled);

            clickableObject.RaiseClick();

            Assert.IsTrue(command.ExecuteCalled);
            Assert.AreSame(command, Click.GetCommand(clickableObject));
        }
Example #13
0
        public void GetCommand_ReturnsCorrectCommand()
        {
            // Arrange
            CommandManager cm = new CommandManager();
            ICommand       expectedCommand = new MockCommand();

            cm.RegisterCommand(expectedCommand);
            // Act
            ICommand actualCommand = cm.GetCommand("MockCommand");

            // Assert
            Assert.Equal(expectedCommand, actualCommand);
        }
Example #14
0
        public void ShouldGetAndSeReturnKeytProperties()
        {
            var          textBox     = new TextBox();
            const string defaultText = "Default Text";

            var command = new MockCommand();

            ReturnKey.SetCommand(textBox, command);
            Assert.AreEqual(command, ReturnKey.GetCommand(textBox));

            ReturnKey.SetDefaultTextAfterCommandExecution(textBox, defaultText);
            Assert.AreEqual(defaultText, ReturnKey.GetDefaultTextAfterCommandExecution(textBox));
        }
Example #15
0
    public void Serialize()
    {
        var command = new MockCommand(this.user, MockPayload.Instance);

        var json = TeamCloudSerialize.SerializeObject(command);

        Assert.NotEmpty(json);
        Assert.Contains("$type", json);

        var resultObj = TeamCloudSerialize.DeserializeObject <ICommand>(json);

        Assert.IsType <MockCommand>(resultObj);
    }
 public void TestExecuteWithCallback()
 {
     var processor = new MockCommandProcessor();
     var command = new MockCommand(true);
     var countDown = new CountdownEvent(1);
     processor.Init(Assert.IsNull);
     processor.Execute(1, command, state =>
     {
         Assert.IsFalse(state); //new state should be false
         countDown.Signal();
     });
     Assert.IsTrue(countDown.Wait(500));
 }
        public void ShouldGetAndSeReturnKeytProperties()
        {
            var textBox = new TextBox();
            const string defaultText = "Default Text";

            var command = new MockCommand();

            ReturnKey.SetCommand(textBox, command);
            Assert.AreEqual(command, ReturnKey.GetCommand(textBox));

            ReturnKey.SetDefaultTextAfterCommandExecution(textBox, defaultText);
            Assert.AreEqual(defaultText, ReturnKey.GetDefaultTextAfterCommandExecution(textBox));
        }
        public void ShouldUpdateCommandOnBehaviorWhenChangingProperty()
        {
            var clickableObject = new MockClickableObject();
            var oldCommand      = new MockCommand();
            var newCommand      = new MockCommand();

            Click.SetCommand(clickableObject, oldCommand);
            Click.SetCommand(clickableObject, newCommand);

            clickableObject.RaiseClick();

            Assert.IsTrue(newCommand.ExecuteCalled);
            Assert.IsFalse(oldCommand.ExecuteCalled);
        }
        public void ShouldObserveClickEvent()
        {
            var clickableObject = new MockClickableObject();
            var command         = new MockCommand();

            var behavior = new ButtonBaseClickCommandBehavior(clickableObject);

            behavior.Command = command;
            Assert.IsFalse(command.ExecuteCalled);

            clickableObject.RaiseClick();

            Assert.IsTrue(command.ExecuteCalled);
        }
Example #20
0
        public void WhenCommandParameterNotSet_ThenEventArgsPassed()
        {
            var eventArgs     = new TestEventArgs(null);
            var someControl   = new TextBox();
            var command       = new MockCommand();
            var parameter     = new object();
            var commandAction = new InvokeCommandAction();

            commandAction.Command = command;
            commandAction.Attach(someControl);

            commandAction.InvokeAction(eventArgs);

            Assert.IsType <TestEventArgs>(command.ExecuteParameter);
        }
Example #21
0
        public void WhenChangingProperty_ThenUpdatesCommand()
        {
            var someControl   = new TextBox();
            var oldCommand    = new MockCommand();
            var newCommand    = new MockCommand();
            var commandAction = new InvokeCommandAction();

            commandAction.Attach(someControl);
            commandAction.Command = oldCommand;
            commandAction.Command = newCommand;
            commandAction.InvokeAction(null);

            Assert.True(newCommand.ExecuteCalled);
            Assert.False(oldCommand.ExecuteCalled);
        }
Example #22
0
        public void WhenCommandAndCommandParameterAreSetPriorToBehaviorBeingAttached_ThenCommandIsExecutedCorrectlyOnInvoke()
        {
            var someControl   = new TextBox();
            var command       = new MockCommand();
            var parameter     = new object();
            var commandAction = new InvokeCommandAction();

            commandAction.Command          = command;
            commandAction.CommandParameter = parameter;
            commandAction.Attach(someControl);

            commandAction.InvokeAction(null);

            Assert.True(command.ExecuteCalled);
        }
        public void ShouldDisableButtonIfCanExecuteFalse()
        {
            var clickableObject = new MockClickableObject();
            var command         = new MockCommand()
            {
                CanExecuteReturnValue = false
            };

            var behavior = new ButtonBaseClickCommandBehavior(clickableObject);

            Assert.IsTrue(clickableObject.IsEnabled);

            behavior.Command = command;
            Assert.IsFalse(clickableObject.IsEnabled);
        }
Example #24
0
        public void CustomerRepository_GetCustomers_ShouldReturnConcreteList()
        {
            var list = new List <Customer>
            {
                new Customer
                {
                    CustomerId   = 1,
                    FirstName    = "Bob",
                    LastName     = "Jones",
                    EmailAddress = "*****@*****.**",
                    City         = "Atlanta",
                    State        = "GA",
                    Zip          = "30339",
                    Phone        = "8881234567"
                },
                new Customer
                {
                    CustomerId   = 1,
                    FirstName    = "Dave",
                    LastName     = "Smith",
                    EmailAddress = "*****@*****.**",
                    City         = "Seattle",
                    State        = "WA",
                    Zip          = "99939",
                    Phone        = "8884555444"
                },
                new Customer
                {
                    CustomerId   = 1,
                    FirstName    = "Erin",
                    LastName     = "Mitchell",
                    EmailAddress = "*****@*****.**",
                    City         = "Macon",
                    State        = "GA",
                    Zip          = "39999",
                    Phone        = "8887774567"
                },
            };
            var dt = new DataTableBuilder <Customer>(list)
                     .ColumnFor(c => c.Zip, "PostalCode")
                     .Build();
            var command    = new MockCommand(dt);
            var sqlBuilder = new SqlQueryBuilder <Customer>(conn => command, conn => { });
            var repository = new CustomerRepository(sqlBuilder);
            var customers  = repository.GetCustomers();

            Assert.True(AreEqual(customers, list));
        }
        public void ShouldExecuteWithCommandParameter()
        {
            var clickableObject = new MockClickableObject();
            var command         = new MockCommand();
            var parameter       = new object();

            Click.SetCommand(clickableObject, command);
            Click.SetCommandParameter(clickableObject, parameter);
            Assert.IsNull(command.ExecuteParameter);

            clickableObject.RaiseClick();

            Assert.IsTrue(command.ExecuteCalled);
            Assert.IsNotNull(command.ExecuteParameter);
            Assert.AreSame(parameter, command.ExecuteParameter);
        }
Example #26
0
        public void WhenAttachedAfterCommandPropertyIsSetAndInvoked_ThenInvokesCommand()
        {
            var someControl   = new TextBox();
            var commandAction = new InvokeCommandAction();
            var command       = new MockCommand();

            commandAction.Command = command;
            commandAction.Attach(someControl);

            Assert.False(command.ExecuteCalled);

            commandAction.InvokeAction(null);

            Assert.True(command.ExecuteCalled);
            Assert.Same(command, commandAction.GetValue(InvokeCommandAction.CommandProperty));
        }
Example #27
0
        public void HelpCommand()
        {
            var mock = new MockCommand();

            this.cmdLine.RegisterCommand(new Program.Command("testhelp", mock.Provider, "", detailedHelp: "line1\nline2", minArgs: 4));

            this.cmdLine.StartCmd("-help testhelp", Program.CommandTrigger.Cmd);
            this.logs.Clear();

            this.manager.Tick();

            Assert.AreEqual(3, this.logs.Count);
            Assert.AreEqual("-testhelp: takes at least 4 arguments", this.logs[0]);
            Assert.AreEqual("  line1", this.logs[1]);
            Assert.AreEqual("  line2", this.logs[2]);
        }
Example #28
0
        public void WhenCommandParameterNotSetAndEventArgsParameterPathSet_ThenPathedValuePassed()
        {
            var eventArgs     = new TestEventArgs("testname");
            var someControl   = new TextBox();
            var command       = new MockCommand();
            var parameter     = new object();
            var commandAction = new InvokeCommandAction();

            commandAction.Command = command;
            commandAction.TriggerParameterPath = "Thing1.Thing2.Name";
            commandAction.Attach(someControl);

            commandAction.InvokeAction(eventArgs);

            Assert.Equal("testname", command.ExecuteParameter);
        }
Example #29
0
        public void WhenCommandPropertyIsSet_ThenHooksUpCommandBehavior()
        {
            var someControl   = new TextBox();
            var commandAction = new InvokeCommandAction();
            var command       = new MockCommand();

            commandAction.Attach(someControl);
            commandAction.Command = command;

            Assert.False(command.ExecuteCalled);

            commandAction.InvokeAction(null);

            Assert.True(command.ExecuteCalled);
            Assert.Same(command, commandAction.GetValue(InvokeCommandAction.CommandProperty));
        }
Example #30
0
        public void WhenAttachedAndCanExecuteReturnsFalse_ThenEnabledUIElementIsDisabled()
        {
            var someControl = new TextBox();

            someControl.IsEnabled = true;

            var command = new MockCommand();

            command.CanExecuteReturnValue = false;
            var commandAction = new InvokeCommandAction();

            commandAction.Command = command;
            commandAction.Attach(someControl);

            Assert.False(someControl.IsEnabled);
        }
        public void ShouldNotMonitorCanExecuteChangedOnDisconnectedCommand()
        {
            var clickableObject = new MockClickableObject();
            var command         = new MockCommand();

            var behavior = new ButtonBaseClickCommandBehavior(clickableObject);

            behavior.Command = command;

            behavior.Command = null;

            Assert.IsTrue(clickableObject.IsEnabled);
            command.CanExecuteReturnValue = false;
            command.RaiseCanExecuteChanged();
            Assert.IsTrue(clickableObject.IsEnabled);
        }
        public void WhenAutoEnableIsFalse_ThenEnabledUIElementRemainsEnabled()
        {
            var someControl = new TextBox();

            someControl.IsEnabled = true;

            var command = new MockCommand();

            command.CanExecuteReturnValue = false;
            var commandAction = new InvokeCommandAction();

            commandAction.AutoEnable = false;
            commandAction.Command    = command;
            commandAction.Attach(someControl);

            Assert.IsTrue(someControl.IsEnabled);
        }
        public void ShouldExecuteWithCommandParameter()
        {
            var clickableObject = new MockClickableObject();
            var command         = new MockCommand();
            var parameter       = new object();
            var behavior        = new ButtonBaseClickCommandBehavior(clickableObject);

            behavior.Command          = command;
            behavior.CommandParameter = parameter;
            Assert.IsNull(command.ExecuteParameter);

            clickableObject.RaiseClick();

            Assert.IsTrue(command.ExecuteCalled);
            Assert.IsNotNull(command.ExecuteParameter);
            Assert.AreSame(parameter, command.ExecuteParameter);
        }
        public virtual void PerformCommandTest()
        {
            ConnectionBase conn = CreateConnection("test");

            try
            {
                TcpConnection_Accessor accessor = GetConnectionAccessor(conn);
                // assign mock socket
                accessor.Socket = new ClientSocketMock();
                accessor.Socket.Open();

                XmlFormatterFactoryMock factory = new XmlFormatterFactoryMock();
                accessor.FormatterFactory = factory;
                IBinaryWriter writer = factory.CreateWriter(accessor.DataStream);

                // preserialize server protocol version and rewind to start pos. (emulate first stage of handshake procedure)
                int protocolVersion = TcpConnection_Accessor.MAJOR_PROTOCOL_VERSION;
                writer.Write(protocolVersion);
                StreamAdapter_Accessor streamAccessor = GetStreamAccessor((StreamAdapter)accessor.DataStream);
                long pos = streamAccessor.Stream.Position;
                streamAccessor.Stream.Seek(0, SeekOrigin.Begin);
                // command id and version
                const ServerCommand id      = ServerCommand.Status;
                const short         ver     = 1;
                MockCommand         command = new MockCommand(conn, id, ver);

                accessor.PerformCommand(command);

                accessor.Socket.Open();
                streamAccessor.Stream.Seek(pos, SeekOrigin.Begin);
                IBinaryReader reader = factory.CreateReader(accessor.DataStream);
                // skip protocol version sent by hadshake method
                int clientProtocol = reader.ReadInt32();

                // read & check data sent by mock command code
                ServerCommand actualId = (ServerCommand)reader.ReadInt16();
                Assert.AreEqual(id, actualId);
                short actualVer = reader.ReadInt16();
                Assert.AreEqual(ver, actualVer);
            }
            finally
            {
                conn.Close();
            }
        }
Example #35
0
        public void Test()
        {
            var collector = new CommandCollector();

            var command1 = new MockCommand();
            collector.Execute(command1);
            command1.Executed.Should().BeTrue(because: "Should execute while collecting");
            var command2 = new MockCommand();
            collector.Execute(command2);
            command2.Executed.Should().BeTrue(because: "Should execute while collecting");

            var composite = collector.BuildComposite();
            composite.Execute();
            composite.Undo();
            command1.Executed.Should().BeFalse(because: "Should undo as part of composite");
            // ReSharper disable once HeuristicUnreachableCode
            command2.Executed.Should().BeFalse(because: "Should undo as part of composite");
        }
        public void ShouldCallCanExecuteWithParameterWhenSettingCommand()
        {
            var clickableObject = new MockClickableObject();
            var command         = new MockCommand();
            var parameter       = new object();
            var behavior        = new ButtonBaseClickCommandBehavior(clickableObject);

            command.CanExecuteReturnValue = false;
            behavior.CommandParameter     = parameter;
            Assert.IsNull(command.CanExecuteParameter);
            Assert.IsTrue(clickableObject.IsEnabled);

            behavior.Command = command;

            Assert.IsNotNull(command.CanExecuteParameter);
            Assert.AreSame(parameter, command.CanExecuteParameter);
            Assert.IsFalse(clickableObject.IsEnabled);
        }
        public void DisposedControlDoesNotThrowOnCanExecuteChanged()
        {
            var clickableObject = new MockClickableObject();
            var command         = new MockCommand();

            var behavior = new ButtonBaseClickCommandBehavior(clickableObject);

            behavior.Command = command;

            WeakReference controlWeakReference = new WeakReference(clickableObject);

            clickableObject = null;
            behavior        = null;
            GC.Collect();

            command.CanExecuteReturnValue = false;
            command.RaiseCanExecuteChanged();
        }
 public void ExtractOptions_ReturnsEmptyCommandWhenCommandLineIsEmpty()
 {
     // Arrange
     var cmdMgr = new Mock<ICommandManager>();
     var MockCommandOptions = new Dictionary<OptionAttribute, PropertyInfo>();
     var mockOptionAttribute = new OptionAttribute("Mock Option");
     var mockPropertyInfo = typeof(MockCommand).GetProperty("Message");
     MockCommandOptions.Add(mockOptionAttribute, mockPropertyInfo);
     cmdMgr.Setup(cm => cm.GetCommandOptions(It.IsAny<ICommand>())).Returns(MockCommandOptions);
     CommandLineParser parser = new CommandLineParser(cmdMgr.Object);
     var ExpectedCommand = new MockCommand();
     var argsEnumerator = new List<string>().GetEnumerator();
     // Act
     ICommand actualCommand = parser.ExtractOptions(ExpectedCommand, argsEnumerator);
     // Assert
     Assert.Equal(0, actualCommand.Arguments.Count);
     Assert.Null(((MockCommand)actualCommand).Message);
 }
        public void ShouldReEnableButtonIfCanExecuteChangedRaises()
        {
            var clickableObject = new MockClickableObject();
            var mockCommand     = new MockCommand()
            {
                CanExecuteReturnValue = false
            };

            var behavior = new ButtonBaseClickCommandBehavior(clickableObject);

            behavior.Command = mockCommand;
            Assert.IsFalse(clickableObject.IsEnabled);

            mockCommand.CanExecuteReturnValue = true;
            mockCommand.RaiseCanExecuteChanged();

            Assert.IsTrue(clickableObject.IsEnabled);
        }
 public void ExtractOptions_AddsArgumentsWhenItemsDoNotStartWithSlashOrDash()
 {
     // Arrange
     var cmdMgr = new Mock<ICommandManager>();
     var MockCommandOptions = new Dictionary<OptionAttribute, PropertyInfo>();
     var mockOptionAttribute = new OptionAttribute("Mock Option");
     var mockPropertyInfo = typeof(MockCommand).GetProperty("Message");
     MockCommandOptions.Add(mockOptionAttribute, mockPropertyInfo);
     cmdMgr.Setup(cm => cm.GetCommandOptions(It.IsAny<ICommand>())).Returns(MockCommandOptions);
     CommandLineParser parser = new CommandLineParser(cmdMgr.Object);
     var ExpectedCommand = new MockCommand();
     var argsEnumerator = new List<string>() { "optionOne", "optionTwo" }.GetEnumerator();
     // Act
     ICommand actualCommand = parser.ExtractOptions(ExpectedCommand, argsEnumerator );
     // Assert
     Assert.AreEqual(2, actualCommand.Arguments.Count);
     Assert.AreEqual("optionOne", actualCommand.Arguments[0]);
     Assert.AreEqual("optionTwo", actualCommand.Arguments[1]);
     Assert.IsNull(((MockCommand)actualCommand).Message);
 }
Example #41
0
 public void GetCommandOptions_ReturnsCorrectOpionAttributeAndPropertyInfo()
 {
     // Arrange
     CommandManager cm = new CommandManager();
     ICommand cmd = new MockCommand();
     cm.RegisterCommand(cmd);
     Dictionary<OptionAttribute, PropertyInfo> expected = new Dictionary<OptionAttribute, PropertyInfo>();
     var expectedOptionAttributeOne = new OptionAttribute("A Option");
     var expectedPropertyInfoOne = typeof(MockCommand).GetProperty("Message");
     expected.Add(expectedOptionAttributeOne, expectedPropertyInfoOne);
     var expectedOptionAttributeTwo = new OptionAttribute("A Option Two");
     var expectedPropertyInfoTwo = typeof(MockCommand).GetProperty("MessageTwo");
     expected.Add(expectedOptionAttributeTwo, expectedPropertyInfoTwo);
     // Act
     IDictionary<OptionAttribute, PropertyInfo> actual = cm.GetCommandOptions(cmd);
     // Assert
     Assert.AreEqual(2, actual.Count);
     Assert.AreEqual(expectedOptionAttributeOne, actual.Keys.First());
     Assert.AreEqual(expectedPropertyInfoOne, actual[expectedOptionAttributeOne]);
     Assert.AreEqual(expectedOptionAttributeTwo, actual.Keys.Last());
     Assert.AreEqual(expectedPropertyInfoTwo, actual[expectedOptionAttributeTwo]);
 }
        public void ExtractOptions_ThrowsIfUnableToConvertType()
        {
            // Arrange
            var cmdMgr = new Mock<ICommandManager>();

            var MockCommandOptions = new Dictionary<OptionAttribute, PropertyInfo>();
            var mockOptionAttribute = new OptionAttribute("Mock Option");
            var mockPropertyInfo = typeof(MockCommand).GetProperty("Count");
            MockCommandOptions.Add(mockOptionAttribute, mockPropertyInfo);

            cmdMgr.Setup(cm => cm.GetCommandOptions(It.IsAny<ICommand>())).Returns(MockCommandOptions);
            CommandLineParser parser = new CommandLineParser(cmdMgr.Object);
            var command = new MockCommand();
            string expectedErrorMessage = "Invalid option value: '/Count null'";
            var argsEnumerator = new List<string>() { "/Count", "null" }.GetEnumerator();
            
            // Act & Assert
            ExceptionAssert.Throws<CommandLineException>(() => parser.ExtractOptions(command, argsEnumerator), expectedErrorMessage);
        }
 public void ExtractOptions_ParsesBoolOptionsAsFalseIfFollowedByDash()
 {
     // Arrange
     var cmdMgr = new Mock<ICommandManager>();
     var MockCommandOptions = new Dictionary<OptionAttribute, PropertyInfo>();
     var mockOptionAttribute = new OptionAttribute("Mock Option");
     var mockPropertyInfo = typeof(MockCommand).GetProperty("IsWorking");
     MockCommandOptions.Add(mockOptionAttribute, mockPropertyInfo);
     cmdMgr.Setup(cm => cm.GetCommandOptions(It.IsAny<ICommand>())).Returns(MockCommandOptions);
     CommandLineParser parser = new CommandLineParser(cmdMgr.Object);
     var ExpectedCommand = new MockCommand();
     var argsEnumerator = new List<string>() { "-IsWorking-" }.GetEnumerator();
     // Act
     ICommand actualCommand = parser.ExtractOptions(ExpectedCommand, argsEnumerator);
     // Assert
     Assert.IsFalse(((MockCommand)actualCommand).IsWorking);
 }
        public void ExtractOptions_ThrowsWhenOptionHasNoValue()
        {
            // Arrange
            var cmdMgr = new Mock<ICommandManager>();
            var MockCommandOptions = new Dictionary<OptionAttribute, PropertyInfo>();
            var mockOptionAttribute = new OptionAttribute("Mock Option");
            var mockPropertyInfo = typeof(MockCommand).GetProperty("Message");
            MockCommandOptions.Add(mockOptionAttribute, mockPropertyInfo);
            cmdMgr.Setup(cm => cm.GetCommandOptions(It.IsAny<ICommand>())).Returns(MockCommandOptions);
            CommandLineParser parser = new CommandLineParser(cmdMgr.Object);
            var ExpectedCommand = new MockCommand();
            string expectedErrorMessage = "Missing option value for: '/Message'";
            var argsEnumerator = new List<string>() { "/Message" }.GetEnumerator();

            // Act & Assert
            ExceptionAssert.Throws<CommandLineException>(() => parser.ExtractOptions(ExpectedCommand, argsEnumerator), expectedErrorMessage);
        }
 public void ExtractOptions_UsesShortenedForm()
 {
     // Arrange
     var cmdMgr = new Mock<ICommandManager>();
     var MockCommandOptions = new Dictionary<OptionAttribute, PropertyInfo>();
     var mockOptionAttribute = new OptionAttribute("Mock Option");
     var mockPropertyInfo = typeof(MockCommand).GetProperty("Message");
     MockCommandOptions.Add(mockOptionAttribute, mockPropertyInfo);
     cmdMgr.Setup(cm => cm.GetCommandOptions(It.IsAny<ICommand>())).Returns(MockCommandOptions);
     CommandLineParser parser = new CommandLineParser(cmdMgr.Object);
     var ExpectedCommand = new MockCommand();
     var argsEnumerator = new List<string>() { "/Mess", "foo bar" }.GetEnumerator();
     // Act
     ICommand actualCommand = parser.ExtractOptions(ExpectedCommand, argsEnumerator);
     // Assert
     Assert.AreEqual("foo bar", ((MockCommand)actualCommand).Message);
 }
        public void ExtractOptions_ThrowsIfCommandOptionIsAmbigious()
        {
            // Arrange
            var cmdMgr = new Mock<ICommandManager>();

            var MockCommandOptions = new Dictionary<OptionAttribute, PropertyInfo>();
            var mockOptionAttribute = new OptionAttribute("Mock Option 1");
            var mockPropertyInfo = typeof(MockCommand).GetProperty("Count");
            MockCommandOptions.Add(mockOptionAttribute, mockPropertyInfo);
            mockOptionAttribute = new OptionAttribute("Mock Option 2");
            mockPropertyInfo = typeof(MockCommand).GetProperty("Counter");
            MockCommandOptions.Add(mockOptionAttribute, mockPropertyInfo);

            cmdMgr.Setup(cm => cm.GetCommandOptions(It.IsAny<ICommand>())).Returns(MockCommandOptions);
            CommandLineParser parser = new CommandLineParser(cmdMgr.Object);
            var ExpectedCommand = new MockCommand();
            string expectedErrorMessage = "Ambiguous option 'Co'. Possible values: Count Counter.";
            var argsEnumerator = new List<string>() { "/Co", "null" }.GetEnumerator();

            // Act & Assert

            ExceptionAssert.Throws<CommandLineException>(() => parser.ExtractOptions(ExpectedCommand, argsEnumerator), expectedErrorMessage);
        }
        public void ExtractOptions_ThrowsIfCommandOptionDoesNotExist()
        {
            // Arrange
            var cmdMgr = new Mock<ICommandManager>();

            var MockCommandOptions = new Dictionary<OptionAttribute, PropertyInfo>();
            var mockOptionAttribute = new OptionAttribute("Mock Option 1");
            var mockPropertyInfo = typeof(MockCommand).GetProperty("Count");
            MockCommandOptions.Add(mockOptionAttribute, mockPropertyInfo);
            mockOptionAttribute = new OptionAttribute("Mock Option 2");
            mockPropertyInfo = typeof(MockCommand).GetProperty("Counter");
            MockCommandOptions.Add(mockOptionAttribute, mockPropertyInfo);

            cmdMgr.Setup(cm => cm.GetCommandOptions(It.IsAny<ICommand>())).Returns(MockCommandOptions);
            CommandLineParser parser = new CommandLineParser(cmdMgr.Object);
            var ExpectedCommand = new MockCommand();
            string expectedErrorMessage = "Unknown option: '/37264752DOESNOTEXIST!!'";
            var argsEnumerator = new List<string>() { "/37264752DOESNOTEXIST!!", "false" }.GetEnumerator();

            // Act & Assert

            ExceptionAssert.Throws<CommandLineException>(() => parser.ExtractOptions(ExpectedCommand, argsEnumerator), expectedErrorMessage);
        }
        public void ExtractOptions_ThrowsIfCommandHasNoProperties()
        {
            // Arrange
            var cmdMgr = new Mock<ICommandManager>();

            var MockCommandOptions = new Dictionary<OptionAttribute, PropertyInfo>();
            cmdMgr.Setup(cm => cm.GetCommandOptions(It.IsAny<ICommand>())).Returns(MockCommandOptions);
            CommandLineParser parser = new CommandLineParser(cmdMgr.Object);
            var ExpectedCommand = new MockCommand();
            string expectedErrorMessage = "Unknown option: '/Count'";
            var argsEnumerator = new List<string>() { "/Count", "null" }.GetEnumerator();

            // Act & Assert
            ExceptionAssert.Throws<CommandLineException>(() => parser.ExtractOptions(ExpectedCommand, argsEnumerator), expectedErrorMessage);
        }
 public void ExtractOptions_ParsesBoolOptionsAsTrueIfPresent()
 {
     // Arrange
     var cmdMgr = new Mock<ICommandManager>();
     var MockCommandOptions = new Dictionary<OptionAttribute, PropertyInfo>();
     var mockOptionAttribute = new OptionAttribute("Mock Option");
     var mockPropertyInfo = typeof(MockCommand).GetProperty("IsWorking");
     MockCommandOptions.Add(mockOptionAttribute, mockPropertyInfo);
     cmdMgr.Setup(cm => cm.GetCommandOptions(It.IsAny<ICommand>())).Returns(MockCommandOptions);
     CommandLineParser parser = new CommandLineParser(cmdMgr.Object);
     var command = new MockCommand();
     var argsEnumerator = new List<string>() { "-IsWorking" }.GetEnumerator();
     
     // Act
     parser.ExtractOptions(command, argsEnumerator);
     
     // Assert
     Assert.True(command.IsWorking);
 }
 public void ExtractOptions_ParsesOptionsThatStartWithDash()
 {
     // Arrange
     var cmdMgr = new Mock<ICommandManager>();
     var MockCommandOptions = new Dictionary<OptionAttribute, PropertyInfo>();
     var mockOptionAttribute = new OptionAttribute("Mock Option");
     var mockPropertyInfo = typeof(MockCommand).GetProperty("Message");
     MockCommandOptions.Add(mockOptionAttribute, mockPropertyInfo);
     cmdMgr.Setup(cm => cm.GetCommandOptions(It.IsAny<ICommand>())).Returns(MockCommandOptions);
     CommandLineParser parser = new CommandLineParser(cmdMgr.Object);
     var command = new MockCommand();
     var argsEnumerator = new List<string>() { "-Message", "foo bar" }.GetEnumerator();
     
     // Act
     parser.ExtractOptions(command, argsEnumerator);
     
     // Assert
     Assert.Equal("foo bar", command.Message);
 }