public void VisitHadoopConfig()
        {
            //Init args
            HadoopConfig hadoopConfig = new HadoopConfig();

            hadoopConfig.Args = new List <string> {
                "{arg1}", "900"
            };

            //Expectations
            List <string> expectedArgs = new List <string>()
            {
                "1234", "900"
            };

            //Init visitor
            BuildRequestVisitor visitor           = new BuildRequestVisitor(BuildRequestVisitorTest.GetSettings());
            VisitorSubscriber   visitorSubscriber = new VisitorSubscriber(visitor);

            //Action
            hadoopConfig.Accept(visitor);

            //Verify
            Assert.AreEqual(1, visitorSubscriber.TotalObjCount, "Unexpected number of objects created");

            BootstrapActionConfig actual = visitorSubscriber.bootstrapActionList[0];

            Assert.AreEqual("Configure Hadoop", actual.Name, "Unexpected Name");
            Assert.AreEqual("s3://elasticmapreduce/bootstrap-actions/configure-hadoop", actual.ScriptBootstrapAction.Path, "Unexpected ScriptBootstrapAction.Path");
            Assert.IsTrue(expectedArgs.SequenceEqual(actual.ScriptBootstrapAction.Args), "Unexpected args list");
        }
 public void Visit(HadoopConfig hadoopConfig)
 {
     if (hadoopConfig.Args != null && hadoopConfig.Args.Count > 0)
     {
         this.CreateBootstrapActionConfig(
             Resources.HadoopConfigName,
             Resources.HadoopConfigPath,
             hadoopConfig.Args);
     }
 }
        public void SkipHadoopConfigIfNullArgs()
        {
            //Init args
            HadoopConfig hadoopConfig = new HadoopConfig();

            //Init visitor
            BuildRequestVisitor visitor           = new BuildRequestVisitor(BuildRequestVisitorTest.GetSettings());
            VisitorSubscriber   visitorSubscriber = new VisitorSubscriber(visitor);

            //Action
            hadoopConfig.Accept(visitor);

            //Verify
            Assert.IsFalse(visitorSubscriber.wasAnyEventFired, "None of the visitor's events should be fired!");
        }