public void CanFindSingleEnvironmentParameter()
            {
                var sut = new ParameterParser();
                string data = "This is a Test ${ENV:testvalue} this is a test";

                var result = sut.FindEnvironmentParameters(data);

                Assert.AreEqual(1, result.Count);
                Assert.AreEqual("testvalue", result[0]);
            }
            public void HandlesDuplicatesCaseInsensitive()
            {
                var sut = new ParameterParser();
                string data = "This is a Test ${env:testVALUE} this is a test${env:testvalue2} and again ${env:TESTvalue} ...";

                var result = sut.FindEnvironmentParameters(data);

                Assert.AreEqual(2, result.Count);
                Assert.AreEqual("testVALUE", result[0]);
                Assert.AreEqual("testvalue2", result[1]);
            }
            public void IsCaseInsensitive()
            {
                var sut = new ParameterParser();
                string data = "This is a Test ${env:testvalue} this is a test${EnV:testvalue2}...";

                var result = sut.FindEnvironmentParameters(data);

                Assert.AreEqual(2, result.Count);
                Assert.AreEqual("testvalue", result[0]);
                Assert.AreEqual("testvalue2", result[1]);
            }
            public void IgnoresEnvironmentParameters()
            {
                var sut = new ParameterParser();
                string data = "This is a Test ${ENV:testvalue} this ${MACHINE:ignoreMe} is a test${ENV:testvalue2}...";

                var result = sut.FindEnvironmentParameters(data);

                Assert.AreEqual(2, result.Count);
                Assert.AreEqual("testvalue", result[0]);
                Assert.AreEqual("testvalue2", result[1]);
            }
            public void CanFindSingleDeployParameter()
            {
                var sut = new ParameterParser();
                string data = "This is a Test ${DEPLOY:testvalue} this is a test";

                var result = sut.FindDeployParameters(data);

                Assert.AreEqual(1, result.Count);
                Assert.AreEqual("testvalue", result[0]);
            }
            public void ReplacesSenstiveOptionalVariations()
            {
                var sut = new ParameterParser();
                var fixture = new Fixture();
                string input = "this is a test ${pre1:fieldName1} test ${pre1:Optional:fieldName1} testAgain ${pre1:SENSITIVE:optionaL:fieldName1} the end";

                string result = sut.ReplaceParameter(input, "pre1", "fieldName1", "value1");

                Assert.AreEqual("this is a test value1 test value1 testAgain value1 the end", result);
            }
            public void ReplacesOptionalSenstive()
            {
                var sut = new ParameterParser();
                var fixture = new Fixture();
                string input = "this is a test ${pre1:optional:sensitive:fieldName1} test";

                string result = sut.ReplaceParameter(input, "pre1", "fieldName1", "value1");

                Assert.AreEqual("this is a test value1 test", result);
            }
            public void ReplacesMultiple()
            {
                var sut = new ParameterParser();
                var fixture = new Fixture();
                string input = "this is a test ${pre1:fieldName1} test ${pre1:fieldName1} test again";

                string result = sut.ReplaceParameter(input, "pre1", "fieldName1", "value1");

                Assert.AreEqual("this is a test value1 test value1 test again", result);
            }
            public void IsCaseInsensitive()
            {
                var sut = new ParameterParser();
                var fixture = new Fixture();
                string input = "this is a test ${pre1:fieldName1} test";

                string result = sut.ReplaceParameter(input, "pRE1", "FIELDNAME1", "value1");

                Assert.AreEqual("this is a test value1 test", result);
            }
            public void LeavesOtherPrefixesAlone()
            {
                var sut = new ParameterParser();
                var fixture = new Fixture();
                string input = "this is a test ${pre1:fieldName1} test";

                string result = sut.ReplaceParameter(input, "pre2", "fieldName1", "value1");

                Assert.AreEqual(input, result);
            }
            public void LeavesWellEnoughAlone()
            {
                var sut = new ParameterParser();
                var fixture = new Fixture();
                string input = "this is a test test";

                string result = sut.ReplaceParameter(input, "pre1", "fieldName1", "value1");

                Assert.AreEqual(input, result);
            }
            public void HandlesDuplicates()
            {
                var sut = new ParameterParser();
                string data = "This is a Test ${machine:testvalue} this is a test${mACHINE:testvalue2} and again ${machine:testvalue} ...";

                var result = sut.FindMachineParameters(data);

                Assert.AreEqual(2, result.Count);
                Assert.AreEqual("testvalue", result[0]);
                Assert.AreEqual("testvalue2", result[1]);
            }
            public void IsCaseInsensitive()
            {
                var sut = new ParameterParser();
                string data = "This is a Test ${machine:testvalue} this is a test${mACHINE:testvalue2}...";

                var result = sut.FindMachineParameters(data);

                Assert.AreEqual(2, result.Count);
                Assert.AreEqual("testvalue", result[0]);
                Assert.AreEqual("testvalue2", result[1]);
            }
            public void CanFindMultipleMachineParameters()
            {
                var sut = new ParameterParser();
                string data = "This is a Test ${MACHINE:testvalue} this is a test${MACHINE:testvalue2}...";

                var result = sut.FindMachineParameters(data);

                Assert.AreEqual(2, result.Count);
                Assert.AreEqual("testvalue", result[0]);
                Assert.AreEqual("testvalue2", result[1]);
            }
            public void CanFindSingleMachineParameter()
            {
                var sut = new ParameterParser();
                string data = "This is a Test ${BUILD:testvalue} this is a test";

                var result = sut.FindBuildParameters(data);

                Assert.AreEqual(1, result.Count);
                Assert.AreEqual("testvalue", result[0]);
            }
            public void IsCaseInsensitive()
            {
                var sut = new ParameterParser();
                string data = "This is a Test ${deploy:testvalue} this is a test${dEPLOY:testvalue2}...";

                var result = sut.FindDeployParameters(data);

                Assert.AreEqual(2, result.Count);
                Assert.AreEqual("testvalue", result[0]);
                Assert.AreEqual("testvalue2", result[1]);
            }