コード例 #1
0
        public ModelTestClass Create(ModelClassInfo modelClassInfo, string testAssemblyBaseNamespace)
        {
            var ns = CreateNamespace(modelClassInfo.NamespaceDecl, testAssemblyBaseNamespace);
            var cd = InitializeClass(modelClassInfo.ClassName);

            cd = AppendSutField(cd, modelClassInfo.ClassName);
            cd = AppendSetUpMethod(cd, modelClassInfo.ClassName);
            cd = AppendConstructorTestMethod(cd, modelClassInfo.ClassName);
            ns = ns.AddMembers(cd);

            var fileContent = ns
                              .NormalizeWhitespace()
                              .ToFullString();

            var testFileName = $"{modelClassInfo.ClassName}UnitTests.cs";

            return(new ModelTestClass(testFileName, fileContent));
        }
コード例 #2
0
        public FunctionResult <ModelClassInfo> TryCreatingFromFile(string filePath)
        {
            var fileContent = _fileSystem.File.ReadAllText(filePath);
            var tree        = CSharpSyntaxTree.ParseText(fileContent);
            var root        = tree.GetRoot();

            var classDeclaration = root.DescendantNodes().OfType <ClassDeclarationSyntax>().FirstOrDefault();

            if (classDeclaration == null)
            {
                return(FunctionResult.CreateFailure <ModelClassInfo>());
            }

            var fullNamespace = root
                                .DescendantNodes()
                                .OfType <NamespaceDeclarationSyntax>().First()
                                .Name
                                .ToString();
            var className = classDeclaration.Identifier.Text;

            var ctorDeclarations = root.DescendantNodes().OfType <ConstructorDeclarationSyntax>();
            var ctors            = ctorDeclarations.Select(
                ctorDecl =>
            {
                var ctorParams = ctorDecl.DescendantNodes()
                                 .OfType <PredefinedTypeSyntax>()
                                 .Select(f => new Parameter(f.Keyword.ToString(), f.Keyword.ToString()))
                                 .ToList();

                return(new Constructor(ctorParams));
            }).ToList();

            var classInfo = new ModelClassInfo(className, fullNamespace, ctors);

            return(FunctionResult.CreateSuccess(classInfo));
        }