Ejemplo n.º 1
0
        /// <summary>
        /// Provide a INamedTypeSymbol based on the testclass supplied as a string. <seealso cref="Constants"/> for the data.
        /// </summary>
        /// <param name="testClass">The test class in a string format.</param>
        /// <returns>A named type symbol based on the provided data</returns>
        public INamedTypeSymbol GetMockClass(string testClass)
        {
            var symbolProvider = new SymbolProvider();

            var wrappedTestClass = this.WrapInNamespace(testClass);

            SyntaxTree            tree = CSharpSyntaxTree.ParseText(wrappedTestClass);
            CompilationUnitSyntax root = tree.GetCompilationUnitRoot();

            var compilation = CSharpCompilation.Create("TestCompilation")
                              .AddReferences(MetadataReference.CreateFromFile(typeof(string).Assembly.Location))
                              .AddSyntaxTrees(tree);

            var symbols = symbolProvider.GetNamedTypeSymbols(new List <Compilation>()
            {
                compilation
            });

            return(symbols.Single());
        }