public void TestSetArgument_WrongArgCount()
        {
            var picker = new CommandLineObjectPicker(new [] { "yyy" }, GetActivator());
            var cmd    = new ExecuteCommandSetArgument(GetMockActivator().Object, picker);

            Assert.IsTrue(cmd.IsImpossible);
            Assert.AreEqual("Wrong number of parameters supplied to command, expected 3 but got 1", cmd.ReasonCommandImpossible);
        }
        public void TestSetArgument_NotAHost()
        {
            var c = WhenIHaveA <Catalogue>();

            var picker = new CommandLineObjectPicker(new [] { $"Catalogue:{c.ID}", "fff", "yyy" }, GetActivator());
            var cmd    = new ExecuteCommandSetArgument(GetMockActivator().Object, picker);

            Assert.IsTrue(cmd.IsImpossible);
            Assert.AreEqual("First parameter must be an IArgumentHost", cmd.ReasonCommandImpossible);
        }
        public void TestSetArgument_NoArgumentFound()
        {
            var pt = WhenIHaveA <ProcessTask>();


            var picker = new CommandLineObjectPicker(new [] { $"ProcessTask:{pt.ID}", "fff", "yyy" }, GetActivator());
            var cmd    = new ExecuteCommandSetArgument(GetMockActivator().Object, picker);

            Assert.IsTrue(cmd.IsImpossible);
            StringAssert.StartsWith("Could not find argument called 'fff' on ", cmd.ReasonCommandImpossible);
        }
        public void TestSetArgument_ArgumentWrongType()
        {
            var pta = WhenIHaveA <ProcessTaskArgument>();
            var pt  = pta.ProcessTask;

            pta.Name = "fff";

            // Argument expects int but is given string value "yyy"
            pta.SetType(typeof(int));

            var picker = new CommandLineObjectPicker(new [] { $"ProcessTask:{pt.ID}", "fff", "yyy" }, GetActivator());
            var cmd    = new ExecuteCommandSetArgument(GetMockActivator().Object, picker);

            Assert.IsTrue(cmd.IsImpossible);
            StringAssert.StartsWith("Provided value 'yyy' does not match expected Type 'Int32' of ", cmd.ReasonCommandImpossible);
        }