Esempio n. 1
0
        public static void Run(ScaffoldTestOptions options)
        {
            if (!File.Exists(options.SpecFile))
            {
                throw new FileNotFoundException();
            }

            var fileInfo = new FileInfo(options.SpecFile);

            int    dotSeparator = fileInfo.Name.IndexOf('.');
            string name         = _textInfo.ToTitleCase(fileInfo.Name.Substring(0, dotSeparator)) + "Tests";
            var    targetClass  = GenerateClass(options.Namespace, name, fileInfo.Name);

            FindTestsInFile(options.SpecFile, (name) => AddTest(targetClass, name, fileInfo.Name));

            using CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
            CodeGeneratorOptions codegenOptions = new CodeGeneratorOptions()
            {
                BracingStyle = "C",
            };

            using StreamWriter sourceWriter = new StreamWriter(options.OutputFile);
            provider.GenerateCodeFromCompileUnit(
                targetClass, sourceWriter, codegenOptions);
        }
Esempio n. 2
0
        public static void Run(ScaffoldTestOptions options)
        {
            if (!File.Exists(options.SpecFile))
            {
                throw new FileNotFoundException();
            }

            var fileInfo = new FileInfo(options.SpecFile);

            int    dotSeparator = fileInfo.Name.IndexOf('.');
            string name         = _textInfo.ToTitleCase(fileInfo.Name.Substring(0, dotSeparator)) + "Tests";
            var    targetClass  = GenerateClass(options.Namespace, name, fileInfo.Name);

            Regex rx = new Regex(@"it\(\'(.*)\',");

            foreach (string line in File.ReadAllLines(options.SpecFile))
            {
                var m = rx.Match(line);
                if (m?.Success == false)
                {
                    continue;
                }

                // keep in mind, group 0 is the entire match, but
                // first (and only group), should give us the describe value
                AddTest(targetClass, m.Groups[1].Value, fileInfo.Name);
            }

            using CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
            CodeGeneratorOptions codegenOptions = new CodeGeneratorOptions()
            {
                BracingStyle = "C",
            };

            using StreamWriter sourceWriter = new StreamWriter(options.OutputFile);
            provider.GenerateCodeFromCompileUnit(
                targetClass, sourceWriter, codegenOptions);
        }