public static void InsertEventFix() { var before = @" namespace N { using System; ↓class C { } }"; var after = @" namespace N { using System; class C { public event EventHandler E; } }"; var analyzer = new ClassMustHaveEventAnalyzer(); var fix = new InsertEventFix(); RoslynAssert.CodeFix(analyzer, fix, before, after); RoslynAssert.CodeFix(analyzer, fix, new[] { before }, after); RoslynAssert.CodeFix(analyzer, fix, new[] { before }, new[] { after }); }
public static void WhenFixIntroducesCompilerErrorsThatAreAccepted() { var before = @" namespace N { ↓class Value { } }"; var after = @" namespace N { class Value { public event EventHandler E; } }"; var analyzer = new ClassMustHaveEventAnalyzer(); var fix = new InsertEventFix(); var expectedDiagnostic = ExpectedDiagnostic.Create(ClassMustHaveEventAnalyzer.DiagnosticId); RoslynAssert.CodeFix(analyzer, fix, before, after, allowCompilationErrors: AllowCompilationErrors.Yes); RoslynAssert.CodeFix(analyzer, fix, new[] { before }, after, allowCompilationErrors: AllowCompilationErrors.Yes); RoslynAssert.CodeFix(analyzer, fix, new[] { before }, new[] { after }, allowCompilationErrors: AllowCompilationErrors.Yes); RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, before, after, allowCompilationErrors: AllowCompilationErrors.Yes); RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, new[] { before }, after, allowCompilationErrors: AllowCompilationErrors.Yes); RoslynAssert.CodeFix(analyzer, fix, expectedDiagnostic, new[] { before }, new[] { after }, allowCompilationErrors: AllowCompilationErrors.Yes); }
public static void WhenFixIntroducesCompilerErrors() { var before = @" namespace N { ↓class C { } }"; var after = @" namespace N { class C { public event EventHandler E; } }"; var analyzer = new ClassMustHaveEventAnalyzer(); var fix = new InsertEventFix(); var exception = Assert.Throws <AssertException>(() => RoslynAssert.FixAll(analyzer, fix, before, after, metadataReferences: Enumerable.Empty <MetadataReference>())); var expected = "InsertEventFix introduced syntax errors.\r\n" + "CS0518 Predefined type 'System.Object' is not defined or imported\r\n" + " at line 3 and character 10 in file C.cs | class ↓C\r\n" + "CS0518 Predefined type 'System.Object' is not defined or imported\r\n" + " at line 5 and character 21 in file C.cs | public event ↓EventHandler E;\r\n" + "CS0246 The type or namespace name 'EventHandler' could not be found (are you missing a using directive or an assembly reference?)\r\n" + " at line 5 and character 21 in file C.cs | public event ↓EventHandler E;\r\n" + "CS0518 Predefined type 'System.Void' is not defined or imported\r\n" + " at line 5 and character 34 in file C.cs | public event EventHandler ↓E;\r\n" + "CS0518 Predefined type 'System.Void' is not defined or imported\r\n" + " at line 5 and character 34 in file C.cs | public event EventHandler ↓E;\r\n" + "CS1729 'object' does not contain a constructor that takes 0 arguments\r\n" + " at line 3 and character 10 in file C.cs | class ↓C\r\n" + "First source file with error is:\r\n\r\n" + "namespace N\r\n" + "{\r\n" + " class C\r\n" + " {\r\n" + " public event EventHandler E;\r\n" + " }\r\n" + "}\r\n"; CodeAssert.AreEqual(expected, exception.Message); }
public static void WhenFixIntroducesSyntaxErrors() { var before = @" namespace N { ↓class C { } }"; var after = @" namespace N { class C { public event EventHandler E; } }"; var analyzer = new ClassMustHaveEventAnalyzer(); var fix = new InsertEventFix(); var exception = Assert.Throws <AssertException>(() => RoslynAssert.CodeFix(analyzer, fix, before, after)); var expected = @"InsertEventFix introduced syntax error. CS0246 The type or namespace name 'EventHandler' could not be found (are you missing a using directive or an assembly reference?) at line 5 and character 21 in file C.cs | public event ↓EventHandler E; First source file with error is: namespace N { class C { public event EventHandler E; } } "; CodeAssert.AreEqual(expected, exception.Message); }
public static void WhenFixIntroducesCompilerErrorsThatAreAccepted() { var before = @" namespace N { ↓class Value { } }"; var after = @" namespace N { class Value { public event EventHandler E; } }"; var analyzer = new ClassMustHaveEventAnalyzer(); var fix = new InsertEventFix(); RoslynAssert.FixAll(analyzer, fix, before, after, allowCompilationErrors: AllowCompilationErrors.Yes); }