private void AssertBounceCommand(Action <RemoteBounceArguments, IBounce> commandAction, string command)
        {
            var bounce = new FakeBounce();

            bounce.ParametersGiven = new[] { new Parameter <string>("name", "value") };

            var a = new Mock <IObsoleteTask>().Object;
            var b = new Mock <IObsoleteTask>().Object;
            var overridingParameters = new[] { new Mock <IParameter>().Object };

            var logOptionTranslator = new Mock <ILogOptionCommandLineTranslator>();

            logOptionTranslator.Setup(l => l.GenerateCommandLine(bounce)).Returns("logoptions");

            var commandLineParametersGenerator = new Mock <ICommandLineTasksParametersGenerator>();

            commandLineParametersGenerator.Setup(c => c.GenerateCommandLineParametersForTasks(bounce.ParametersGiven, overridingParameters)).Returns("build_arguments_and_params");

            var remoteBounce = new RemoteBounceArguments(new TargetsParser(), logOptionTranslator.Object, commandLineParametersGenerator.Object);

            remoteBounce.Targets    = new [] { "Junk" };
            remoteBounce.Parameters = overridingParameters;

            commandAction(remoteBounce, bounce);
            Assert.That(remoteBounce.Value, Is.EqualTo("logoptions " + command + " Junk build_arguments_and_params"));
        }
        public void CanBuildWithOverridingParameters()
        {
            var args = new RemoteBounceArguments()
            {
                Targets = new [] { "One" }
            };
            var param1 = new Parameter <string> {
                Name = "name1"
            };
            var param2 = new Parameter <string> {
                Name = "name2"
            };

            var argsWithParam1 = args.WithParameter(param1.WithValue("value1"));
            var argsWithParam2 = args.WithParameter(param2.WithValue("value2"));

            Assert.That(argsWithParam1.Parameters.Count(), Is.EqualTo(1));
            Assert.That(argsWithParam1.Parameters.ElementAt(0).Name, Is.EqualTo("name1"));
            Assert.That(((Parameter <string>)argsWithParam1.Parameters.ElementAt(0)).Value, Is.EqualTo("value1"));

            Assert.That(argsWithParam2.Parameters.Count(), Is.EqualTo(1));
            Assert.That(argsWithParam2.Parameters.ElementAt(0).Name, Is.EqualTo("name2"));
            Assert.That(((Parameter <string>)argsWithParam2.Parameters.ElementAt(0)).Value, Is.EqualTo("value2"));

            Assert.That(args.Parameters, Is.Empty);
        }
            public static object GetTargets(IParameters parameters)
            {
                var machineName = parameters.Required <string>("machineName");
                var remoteOne   = new PrintTask(Output)
                {
                    Description = machineName
                };
                var two = new PrintTask(Output)
                {
                    Description = parameters.Required <string>("two")
                };

                var remoteBounce = new RemoteBounce();

                RemoteBounceArguments remoteOneArgs = remoteBounce.ArgumentsForTargets(new { RemoteOne = remoteOne });

                Task <IEnumerable <string> > machines = new [] { "machine1", "machine2" };
                var one = machines.SelectTasks(machine => new RemoteExec {
                    BounceArguments = remoteOneArgs.WithParameter(machineName.WithValue(machine)),
                    Machine         = machine,
                });

                return(remoteBounce.WithRemoteTargets(new {
                    One = one,
                    Two = two,
                }));
            }
            public static object GetTargets(IParameters parameters)
            {
                var remoteOne = new PrintTask(Output)
                {
                    Description = parameters.Required <string>("hack")
                };
                var two = new PrintTask(Output)
                {
                    Description = parameters.Required <string>("two")
                };

                var remoteBounce = new RemoteBounce();

                RemoteBounceArguments remoteOneArgs = remoteBounce.ArgumentsForTargets(new { RemoteOne = remoteOne });

                var one = new RemoteExec
                {
                    BounceArguments = remoteOneArgs,
                    Machine         = parameters.Required <string>("machine"),
                };

                return(remoteBounce.WithRemoteTargets(new {
                    One = one,
                    Two = two,
                }));
            }
        public void CanBuildWithOverridingParameters()
        {
            var args = new RemoteBounceArguments() {Targets = new [] {"One"}};
            var param1 = new Parameter<string> {Name = "name1"};
            var param2 = new Parameter<string> { Name = "name2" };

            var argsWithParam1 = args.WithParameter(param1.WithValue("value1"));
            var argsWithParam2 = args.WithParameter(param2.WithValue("value2"));
            Assert.That(argsWithParam1.Parameters.Count(), Is.EqualTo(1));
            Assert.That(argsWithParam1.Parameters.ElementAt(0).Name, Is.EqualTo("name1"));
            Assert.That(((Parameter<string>) argsWithParam1.Parameters.ElementAt(0)).Value, Is.EqualTo("value1"));

            Assert.That(argsWithParam2.Parameters.Count(), Is.EqualTo(1));
            Assert.That(argsWithParam2.Parameters.ElementAt(0).Name, Is.EqualTo("name2"));
            Assert.That(((Parameter<string>) argsWithParam2.Parameters.ElementAt(0)).Value, Is.EqualTo("value2"));

            Assert.That(args.Parameters, Is.Empty);
        }
        private void AssertBounceCommand(Action<RemoteBounceArguments, IBounce> commandAction, string command)
        {
            var bounce = new FakeBounce();
            bounce.ParametersGiven = new[] {new Parameter<string>("name", "value")};

            var a = new Mock<ITask>().Object;
            var b = new Mock<ITask>().Object;
            var overridingParameters = new[] {new Mock<IParameter>().Object};

            var logOptionTranslator = new Mock<ILogOptionCommandLineTranslator>();
            logOptionTranslator.Setup(l => l.GenerateCommandLine(bounce)).Returns("logoptions");

            var commandLineParametersGenerator = new Mock<ICommandLineTasksParametersGenerator>();
            commandLineParametersGenerator.Setup(c => c.GenerateCommandLineParametersForTasks(bounce.ParametersGiven, overridingParameters)).Returns("build_arguments_and_params");

            var remoteBounce = new RemoteBounceArguments(new TargetsParser(), logOptionTranslator.Object, commandLineParametersGenerator.Object);
            remoteBounce.Targets = new [] {"Junk"};
            remoteBounce.Parameters = overridingParameters;

            commandAction(remoteBounce, bounce);
            Assert.That(remoteBounce.Value, Is.EqualTo("logoptions " + command + " Junk build_arguments_and_params"));
        }