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 {}"); }
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 {}"); }
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); }
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); }
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 ();"); }