Exemple #1
0
        public void Should_find_type_implementations_in_same_file()
        {
            const string editorText =
                @"
public class BaseClass {}
public class DerivedClassA : BaseClass {}
public class DerivedClassB : BaseClass {}
public class DerivedClassC : BaseClass {}
";
            var fileName = "test.cs";

            var solution = new FakeSolutionBuilder()
                           .AddFile(editorText, fileName)
                           .Build();

            var gotoImplementationResponse = FindDerivedMembersAsQuickFixes(solution, new GotoImplementationRequest
            {
                Buffer   = editorText,
                Line     = 2,
                Column   = 14,   // At word 'BaseClass'
                FileName = fileName
            });

            var quickFixes = gotoImplementationResponse.QuickFixes.ToArray();

            Assert.AreEqual(3, quickFixes.Length);
            quickFixes[0].Text.Trim().ShouldEqual("public class DerivedClassA : BaseClass {}");
            quickFixes[1].Text.Trim().ShouldEqual("public class DerivedClassB : BaseClass {}");
            quickFixes[2].Text.Trim().ShouldEqual("public class DerivedClassC : BaseClass {}");
        }
Exemple #2
0
        public void Should_find_type_implementations_in_all_projects()
        {
            const string editorText1 =
                @"
public interface IBase {}
public class DerivedClassA : IBase {}
";
            var fileName1 = "base.cs";

            const string editorText2 =
                @"
public class DerivedClassB : IBase {}
";
            var fileName2 = "derived.cs";

            var solution = new FakeSolutionBuilder()
                           .AddFile(editorText1, fileName1)
                           .AddProject()
                           .AddFile(editorText2, fileName2)
                           .Build();

            var gotoImplementationResponse = FindDerivedMembersAsQuickFixes(solution, new GotoImplementationRequest
            {
                Buffer   = editorText1,
                Line     = 2,
                Column   = 18,   // At word 'BaseClass'
                FileName = fileName1
            });

            var quickFixes = gotoImplementationResponse.QuickFixes.ToArray();

            Assert.AreEqual(2, quickFixes.Length);
            quickFixes[0].Text.Trim().ShouldEqual("public class DerivedClassA : IBase {}");
            quickFixes[1].Text.Trim().ShouldEqual("public class DerivedClassB : IBase {}");
        }
Exemple #3
0
        public void Should_find_member_implementations_in_same_file()
        {
            const string editorText =
                @"
public class BaseClass { public virtual void Test() {} }
public class DerivedClassA : BaseClass 
{ 
public override void Test() {} //DerivedClassA impl
}
public class DerivedClassB : BaseClass 
{ 
public override void Test() {} //DerivedClassB impl
}
";
            var fileName = "test.cs";

            var solution = new FakeSolutionBuilder()
                           .AddFile(editorText, fileName)
                           .Build();

            var gotoImplementationResponse = FindDerivedMembersAsQuickFixes(solution, new GotoImplementationRequest
            {
                Buffer   = editorText,
                Line     = 2,
                Column   = 46,   //BaseClass Test
                FileName = fileName
            });

            var quickFixes = gotoImplementationResponse.QuickFixes.ToArray();

            Assert.AreEqual(2, quickFixes.Length);
            quickFixes[0].Text.Trim().ShouldEqual("public override void Test() {} //DerivedClassA impl");
            quickFixes[1].Text.Trim().ShouldEqual("public override void Test() {} //DerivedClassB impl");
        }
        public void Should_insert_stub_method_override()
        {
            var buffer =
                @"
public class WeirdString : String
{
$
}";
            var location = TestHelpers.GetLineAndColumnFromDollar(buffer);

            buffer = buffer.Replace("$", "");
            var request = new RunOverrideTargetRequest {
                Buffer = buffer, FileName = "myfile.cs", Line = location.Line, Column = location.Column
            };
            var solution = new FakeSolutionBuilder().AddFile(buffer, "myfile.cs").Build();
            var parser   = new BufferParser(solution);
            var handler  = new OverrideHandler(parser, new OmniSharpConfiguration());

            request.OverrideTargetName = "public virtual string ToString ();";
            var    response = handler.RunOverrideTarget(request);
            string expected =
                @"
public class WeirdString : String
{

    public override string ToString()
    {
        throw new System.NotImplementedException();
    }
}";
            string result = response.Buffer.Replace("\r\n", "\n");

            result.ShouldEqual(expected);
        }
Exemple #5
0
        public static FixUsingsResponse GetFixUsingsResponse(this string buffer)
        {
            var solution     = new FakeSolutionBuilder().AddFile(buffer).Build();
            var bufferParser = new BufferParser(solution);
            var handler      = new FixUsingsHandler(bufferParser, new Logger(Verbosity.Quiet), new OmniSharpConfiguration());
            var request      = new Request();

            request.Buffer   = buffer;
            request.FileName = "myfile";
            // line number should be irrelevant
            request.Line = int.MaxValue;
            var response = handler.FixUsings(request);

            return(response);
        }
Exemple #6
0
        public void Should_find_member_implementations_in_all_files()
        {
            const string editorText1 =
                @"
public abstract class BaseClass 
{
public abstract void Test();
}
public class DerivedClassA : BaseClass 
{ 
public override void Test() {} //DerivedClassA impl
}
";
            var fileName1 = "base.cs";

            const string editorText2 =
                @"
public class DerivedClassB : BaseClass 
{ 
public override void Test() {} //DerivedClassB impl
}
";
            var fileName2 = "derived.cs";

            var solution = new FakeSolutionBuilder()
                           .AddFile(editorText1, fileName1)
                           .AddFile(editorText2, fileName2)
                           .Build();

            var gotoImplementationResponse = FindDerivedMembersAsQuickFixes(solution, new GotoImplementationRequest
            {
                Buffer   = editorText1,
                Line     = 4,
                Column   = 22,   //BaseClass Test
                FileName = fileName1
            });

            var quickFixes = gotoImplementationResponse.QuickFixes.ToArray();

            Assert.AreEqual(2, quickFixes.Length);
            quickFixes[0].Text.Trim().ShouldEqual("public override void Test() {} //DerivedClassA impl");
            quickFixes[1].Text.Trim().ShouldEqual("public override void Test() {} //DerivedClassB impl");
        }
        public void Should_not_offer_already_overridden_method()
        {
            var buffer   = @"
public class WeirdString : String
{
    public override string ToString()
    {
        return ""weird"";
    }
$
}";
            var location = TestHelpers.GetLineAndColumnFromDollar(buffer);
            var request  = new Request {
                Buffer = buffer, FileName = "myfile.cs", Line = location.Line, Column = location.Column
            };
            var solution = new FakeSolutionBuilder().AddFile(buffer, "myfile.cs").Build();
            var parser   = new BufferParser(solution);

            var context   = new OverrideContext(request, parser);
            var overrides = context.OverrideTargets.Select(m => m.OverrideTargetName).ToArray();

            overrides.ShouldNotContain("public virtual string ToString ();");
        }