コード例 #1
0
            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 });
            }
コード例 #2
0
            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);
            }
コード例 #3
0
            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);
            }
コード例 #4
0
            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);
            }
コード例 #5
0
            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);
            }