Skip to content

Commit 1970076

Browse files
committed
Fix tests.
1 parent ab82a1a commit 1970076

3 files changed

Lines changed: 62 additions & 5 deletions

File tree

ReflectionAnalyzers.Tests/LibrarySettings.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
namespace ReflectionAnalyzers.Tests
22
{
33
using System.Runtime.CompilerServices;
4+
45
using Gu.Roslyn.Asserts;
6+
57
using Microsoft.CodeAnalysis;
68

79
internal static class LibrarySettings
@@ -14,14 +16,15 @@ internal static class LibrarySettings
1416
.WithCompilationOptions(x => x.WithNullableContextOptions(NullableContextOptions.Enable));
1517

1618
internal static readonly Settings Roslyn = Settings.Default
17-
.WithCompilationOptions(x => x.WithNullableContextOptions(NullableContextOptions.Enable).WithSuppressedDiagnostics("CS1701"))
19+
.WithCompilationOptions(x => x.WithSuppressedDiagnostics("CS1701"))
1820
.WithMetadataReferences(MetadataReferences.Transitive(typeof(Microsoft.CodeAnalysis.CodeFixes.CodeFixProvider)));
1921

22+
internal static readonly Settings SuppressCs8600 = Settings.Default.WithCompilationOptions(x => x.WithSuppressedDiagnostics("CS8600"));
23+
2024
[ModuleInitializer]
2125
internal static void Initialize()
2226
{
2327
Settings.Default = Settings.Default
24-
.WithCompilationOptions(x => x.WithNullableContextOptions(NullableContextOptions.Disable))
2528
.WithMetadataReferences(MetadataReferences.Transitive(typeof(LibrarySettings), typeof(System.Windows.Controls.Control), typeof(System.Windows.Forms.Control)));
2629
}
2730
}

ReflectionAnalyzers.Tests/REFL001CastReturnValueTests/CodeFix.cs renamed to ReflectionAnalyzers.Tests/REFL001CastReturnValueTests/CodeFix.ActivatorCreateInstance.cs

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,41 @@ namespace N
3333
{
3434
using System;
3535
36+
public class C
37+
{
38+
public static void M()
39+
{
40+
var c = (C)Activator.CreateInstance(typeof(C));
41+
}
42+
}
43+
}";
44+
RoslynAssert.CodeFix(Analyzer, Fix, ExpectedDiagnostic, before, after, settings: LibrarySettings.SuppressCs8600);
45+
}
46+
47+
[Test]
48+
public static void TypeofNullableDisabled()
49+
{
50+
var before = @"
51+
#nullable disable
52+
namespace N
53+
{
54+
using System;
55+
56+
public class C
57+
{
58+
public static void M()
59+
{
60+
var c = ↓Activator.CreateInstance(typeof(C));
61+
}
62+
}
63+
}";
64+
65+
var after = @"
66+
#nullable disable
67+
namespace N
68+
{
69+
using System;
70+
3671
public class C
3772
{
3873
public static void M()
@@ -76,7 +111,7 @@ public static void M()
76111
}
77112
}
78113
}";
79-
RoslynAssert.CodeFix(Analyzer, Fix, ExpectedDiagnostic, before, after);
114+
RoslynAssert.CodeFix(Analyzer, Fix, ExpectedDiagnostic, before, after, settings: LibrarySettings.SuppressCs8600);
80115
}
81116

82117
[TestCase("Activator.CreateInstance(typeof(T))")]

ReflectionAnalyzers.Tests/REFL001CastReturnValueTests/Valid.cs renamed to ReflectionAnalyzers.Tests/REFL001CastReturnValueTests/Valid.ActivatorCreateInstance.cs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace ReflectionAnalyzers.Tests.REFL001CastReturnValueTests
1+
namespace ReflectionAnalyzers.Tests.REFL001CastReturnValueTests
22
{
33
using Gu.Roslyn.Asserts;
44
using Microsoft.CodeAnalysis;
@@ -22,12 +22,31 @@ namespace N
2222
2323
public class C
2424
{
25-
public static object M<T>() => Activator.CreateInstance<T>();
25+
public static object? M<T>() => Activator.CreateInstance<T>();
2626
}
2727
}".AssertReplace("CreateInstance<T>()", call);
2828

2929
RoslynAssert.Valid(Analyzer, Descriptor, code);
3030
}
31+
32+
[TestCase("Activator.CreateInstance(typeof(C))")]
33+
[TestCase("Activator.CreateInstance(typeof(C))!")]
34+
[TestCase("Activator.CreateInstance(typeof(C)) ?? throw new Exception()")]
35+
public static void Typeof(string expression)
36+
{
37+
var code = @"
38+
namespace N
39+
{
40+
using System;
41+
42+
public class C
43+
{
44+
#pragma warning disable CS8600
45+
public static object? M() => (C)Activator.CreateInstance(typeof(C));
46+
}
47+
}".AssertReplace("Activator.CreateInstance(typeof(C))", expression);
48+
RoslynAssert.Valid(Analyzer, Descriptor, code);
49+
}
3150
}
3251
}
3352
}

0 commit comments

Comments
 (0)