protected ConfigurationContext CreateContext(IConfigurationMap map, Configuration configuration)
        {
            var context = new ConfigurationContext
            {
                SolutionDirectoryPath = solutionDirectory.FullName,
                Environment           = configuration.Environment,
                SourceFile            = configuration.File,
                ProjectName           = map.GetProjectName(solutionDirectory, configuration),
            };

            var transformName = map.GetTransformName(solutionDirectory, configuration);

            context.TransformFile = Path.Combine(
                solutionDirectory.FullName,
                Path.GetDirectoryName(context.SourceFile),
                string.Format("{0}.{1}.config", transformName, configuration.Environment));
            var transformXmlContent = File.ReadAllText(context.TransformFile, Encoding.UTF8);

            var resultXml = new XmlDocument();

            resultXml.Load(Path.Combine(solutionDirectory.FullName, configuration.File));
            context.Source = XDocument.Parse(resultXml.OuterXml);

            var transformation = new XmlTransformation(transformXmlContent, false, null);

            transformation.Apply(resultXml);

            context.Result = XDocument.Parse(resultXml.OuterXml);

            return(context);
        }
        protected bool RunTests(IConfigurationMap map, Configuration configuration)
        {
            var configurationTests = map.GetTests();

            reporter.RunningTests(configuration, configurationTests);
            return(configurationTests.Aggregate(true, (result, configurationTest) =>
            {
                var context = CreateContext(map, configuration);
                try
                {
                    configurationTest.RunTest(context);
                    reporter.PassTest(configurationTest, context.TransformFile, configuration);
                }
                catch (Exception exception)
                {
                    reporter.FailTest(configurationTest, context.TransformFile, configuration, exception);
                    return false;
                }
                return result;
            }));
        }