예제 #1
0
            public Test(string testCode, IEnumerable <DiagnosticResult> expectedDiagnostics, IDictionary <string, ReportDiagnostic>?diagnosticOptions = null)
            {
                ExpectedDiagnostics.AddRange(expectedDiagnostics);
                TestCode      = testCode;
                TestBehaviors = TestBehaviors.SkipGeneratedCodeCheck;
                diagnosticOptions ??= _systemAnalyzer.SupportedDiagnostics
                .Select(item => item.Id)
                .ToDictionary(item => item, _ => ReportDiagnostic.Error);

                SolutionTransforms.Add((solution, projectId) =>
                {
                    solution = solution.AddMetadataReference(projectId, MetadataReference.CreateFromFile(typeof(LazyAttribute).Assembly.Location));

                    var project = solution
                                  .GetProject(projectId);

                    var compilationOptions = (CSharpCompilationOptions)project !.CompilationOptions !;

                    compilationOptions = compilationOptions
                                         .WithGeneralDiagnosticOption(ReportDiagnostic.Error)
                                         .WithSpecificDiagnosticOptions(diagnosticOptions)
                                         .WithNullableContextOptions(NullableContextOptions.Enable);

                    solution = solution.WithProjectCompilationOptions(projectId, compilationOptions);

                    return(solution);
                });
            }
            public AnalyzerTest(
                string source,
                params DiagnosticResult[] expected)
            {
                TestCode = source;
                ExpectedDiagnostics.AddRange(expected);
                ReferenceAssemblies = ReferenceAssemblies.Net.Net50;

                TestState.AdditionalReferences.Add(typeof(EnumGenerationAttribute).Assembly);
            }
        public AnalyzerTest(
            string source,
            IEnumerable <Assembly> additionalReferences,
            params DiagnosticResult[] expected)
        {
            TestCode = source;
            ExpectedDiagnostics.AddRange(expected);
#if NET6_0
            ReferenceAssemblies = new ReferenceAssemblies("net6.0", new PackageIdentity("Microsoft.NETCore.App.Ref", "6.0.0"), Path.Combine("ref", "net6.0"));
#else
            ReferenceAssemblies = ReferenceAssemblies.Net.Net50;
#endif

            foreach (var additionalReference in additionalReferences)
            {
                TestState.AdditionalReferences.Add(additionalReference);
            }

            this.DisableNullableReferenceWarnings();
        }