public void FindAllReferences_ControlSingleResult_Navigates() { var code = @" Public Sub DoSomething() TextBox1.Height = 20 End Sub "; var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected); var form = project.MockUserFormBuilder("Form1", code).AddControl("TextBox1").Build(); project.AddComponent(form); builder.AddProject(project.Build()); var vbe = builder.Build(); vbe.SetupGet(v => v.SelectedVBComponent).Returns(form.Object); var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object, new DeclarationFinderFactory())); AssertParserReady(parser); var navigateCommand = new Mock <INavigateCommand>(); var vm = new SearchResultsWindowViewModel(); var command = new FindAllReferencesCommand(navigateCommand.Object, null, parser.State, vbe.Object, vm, null); var target = parser.State.AllUserDeclarations.Single(s => s.IdentifierName == "TextBox1"); command.Execute(target); navigateCommand.Verify(n => n.Execute(It.IsAny <object>()), Times.Once); }
public void FindAllReferences_FormNoResults_DisplaysMessageBox() { var code = @" Public Sub DoSomething() End Sub "; var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected); var form = project.MockUserFormBuilder("Form1", code).Build(); project.AddComponent(form); builder.AddProject(project.Build()); var vbe = builder.Build(); vbe.SetupGet(v => v.SelectedVBComponent).Returns(form.Object); var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object, new DeclarationFinderFactory())); AssertParserReady(parser); var messageBox = new Mock <IMessageBox>(); messageBox.Setup(m => m.Show(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <MessageBoxButtons>(), It.IsAny <MessageBoxIcon>())).Returns(DialogResult.OK); var vm = new SearchResultsWindowViewModel(); var command = new FindAllReferencesCommand(null, messageBox.Object, parser.State, vbe.Object, vm, null); var target = parser.State.AllUserDeclarations.Single(s => s.IdentifierName == "Form1"); command.Execute(target); messageBox.Verify(m => m.Show(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <MessageBoxButtons>(), It.IsAny <MessageBoxIcon>()), Times.Once); }
public void FindAllReferences_ControlMultipleResults_ReturnsCorrectNumber() { var code = @" Public Sub DoSomething() TextBox1.Height = 20 TextBox1.Width = 200 End Sub "; var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected); var form = project.MockUserFormBuilder("Form1", code).AddControl("TextBox1").Build(); project.AddComponent(form); builder.AddProject(project.Build()); var vbe = builder.Build(); vbe.SetupGet(v => v.SelectedVBComponent).Returns(form.Object); var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object, new DeclarationFinderFactory())); AssertParserReady(parser); var vm = new SearchResultsWindowViewModel(); var command = new FindAllReferencesCommand(null, null, parser.State, vbe.Object, vm, null); var target = parser.State.AllUserDeclarations.Single(s => s.IdentifierName == "TextBox1"); command.Execute(target); Assert.AreEqual(1, vm.Tabs.Count); Assert.AreEqual(2, vm.Tabs[0].SearchResults.Count); }
public void FindAllReferences_FormSingleResult_Navigates() { var code = @" Public Sub DoSomething() Form1.Height = 20 End Sub "; var navigateCommand = new Mock <INavigateCommand>(); var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected); var form = project.MockUserFormBuilder("Form1", code).AddControl("TextBox1").Build(); project.AddComponent(form.Component, form.CodeModule); builder.AddProject(project.Build()); var vbe = builder.Build(); vbe.SetupGet(v => v.SelectedVBComponent).Returns(form.Component.Object); using (var state = MockParser.CreateAndParse(vbe.Object)) { AssertParserReady(state); var vm = new SearchResultsWindowViewModel(); var uiDispatcher = new Mock <IUiDispatcher>(); var command = new FindAllReferencesCommand(state, vbe.Object, vm, new FindAllReferencesService(navigateCommand.Object, null, state, vm, null, uiDispatcher.Object)); command.Execute(state.AllUserDeclarations.Single(s => s.IdentifierName == "Form1")); navigateCommand.Verify(n => n.Execute(It.IsAny <object>()), Times.Once); } }
public void FindAllReferences_CanExecute_StateNotReady() { const string inputCode = @"Public Sub Foo() End Sub Private Sub Bar() Foo: Foo Foo Foo End Sub"; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out _); vbe.Setup(s => s.ActiveCodePane).Returns(value: null); using (var state = MockParser.CreateAndParse(vbe.Object)) { state.SetStatusAndFireStateChanged(this, ParserState.ResolvedDeclarations, CancellationToken.None); var vm = new SearchResultsWindowViewModel(); var uiDispatcher = new Mock <IUiDispatcher>(); var command = new FindAllReferencesCommand(state, vbe.Object, vm, new FindAllReferencesService(null, null, state, vm, null, uiDispatcher.Object)); Assert.IsFalse(command.CanExecute(state.AllUserDeclarations.Single(s => s.IdentifierName == "Foo"))); } }
public void FindAllImplementations_NullTarget_Aborts() { //Arrange var builder = new MockVbeBuilder(); VBComponent component; var vbe = builder.BuildFromSingleStandardModule(string.Empty, out component); vbe.Setup(s => s.ActiveCodePane).Returns(value: null); var mockHost = new Mock <IHostApplication>(); mockHost.SetupAllProperties(); var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock <ISinks>().Object)); parser.Parse(new CancellationTokenSource()); if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } var vm = new SearchResultsWindowViewModel(); var command = new FindAllImplementationsCommand(null, null, parser.State, vbe.Object, vm, null); command.Execute(null); Assert.IsFalse(vm.Tabs.Any()); }
public void FindAllReferences_ReferenceSelected_ReturnsCorrectNumber() { const string inputCode = @"Public Sub Foo() End Sub Private Sub Bar() Foo: Foo Foo Foo End Sub"; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out _, new Selection(5, 5, 5, 5)); using (var state = MockParser.CreateAndParse(vbe.Object)) { var vm = new SearchResultsWindowViewModel(); var uiDispatcher = new Mock <IUiDispatcher>(); var command = new FindAllReferencesCommand(state, vbe.Object, vm, new FindAllReferencesService(null, null, state, vm, null, uiDispatcher.Object)); command.Execute(null); Assert.AreEqual(4, vm.Tabs[0].SearchResults.Count); } }
public void FindAllReferences_FormNoResults_DisplaysMessageBox() { var code = @" Public Sub DoSomething() End Sub "; var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected); var form = project.MockUserFormBuilder("Form1", code).Build(); project.AddComponent(form.Component, form.CodeModule); builder.AddProject(project.Build()); var vbe = builder.Build(); vbe.SetupGet(v => v.SelectedVBComponent).Returns(form.Component.Object); using (var state = MockParser.CreateAndParse(vbe.Object)) { AssertParserReady(state); var messageBox = new Mock <IMessageBox>(); var vm = new SearchResultsWindowViewModel(); var uiDispatcher = new Mock <IUiDispatcher>(); var command = new FindAllReferencesCommand(state, vbe.Object, vm, new FindAllReferencesService(null, messageBox.Object, state, vm, null, uiDispatcher.Object)); var target = state.AllUserDeclarations.Single(s => s.IdentifierName == "Form1"); command.Execute(target); messageBox.Verify(m => m.NotifyWarn(It.IsAny <string>(), It.IsAny <string>()), Times.Once); } }
public void FindAllImplementations_NoResults_DisplayMessageBox() { const string inputCode = @"Public Sub Foo() End Sub"; //Arrange var builder = new MockVbeBuilder(); VBComponent component; var vbe = builder.BuildFromSingleModule(inputCode, vbext_ComponentType.vbext_ct_ClassModule, out component, default(Selection)); var mockHost = new Mock <IHostApplication>(); mockHost.SetupAllProperties(); var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock <ISinks>().Object)); parser.Parse(new CancellationTokenSource()); if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } var messageBox = new Mock <IMessageBox>(); messageBox.Setup(m => m.Show(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <MessageBoxButtons>(), It.IsAny <MessageBoxIcon>())).Returns(DialogResult.OK); var vm = new SearchResultsWindowViewModel(); var command = new FindAllImplementationsCommand(null, messageBox.Object, parser.State, vbe.Object, vm, null); command.Execute(parser.State.AllUserDeclarations.Single(s => s.IdentifierName == "Foo")); messageBox.Verify(m => m.Show(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <MessageBoxButtons>(), It.IsAny <MessageBoxIcon>()), Times.Once); }
public void FindAllImplementations_SelectedImplementation_ReturnsCorrectNumber() { const string inputClass = @"Implements IClass1 Public Sub IClass1_Foo() End Sub"; const string inputInterface = @"Public Sub Foo() End Sub"; var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject", ProjectProtection.Unprotected) .AddComponent("Class1", ComponentType.ClassModule, inputClass) .AddComponent("Class2", ComponentType.ClassModule, inputClass) .AddComponent("IClass1", ComponentType.ClassModule, inputInterface) .Build(); var vbe = builder.AddProject(project).Build(); var uiDispatcher = new Mock <IUiDispatcher>(); using (var state = MockParser.CreateAndParse(vbe.Object)) { var vm = new SearchResultsWindowViewModel(); var command = new FindAllImplementationsCommand(null, null, state, vbe.Object, vm, null, uiDispatcher.Object); command.Execute(state.AllUserDeclarations.First(s => s.IdentifierName == "IClass1_Foo")); Assert.AreEqual(2, vm.Tabs[0].SearchResults.Count); } }
public void FindAllReferences_SingleResult_Navigates() { const string inputCode = @"Public Sub Foo() End Sub Private Sub Bar() Foo End Sub"; //Arrange var builder = new MockVbeBuilder(); VBComponent component; var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); var mockHost = new Mock <IHostApplication>(); mockHost.SetupAllProperties(); var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock <ISinks>().Object)); parser.Parse(new CancellationTokenSource()); if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } var navigateCommand = new Mock <INavigateCommand>(); var vm = new SearchResultsWindowViewModel(); var command = new FindAllReferencesCommand(navigateCommand.Object, null, parser.State, vbe.Object, vm, null); command.Execute(parser.State.AllUserDeclarations.Single(s => s.IdentifierName == "Foo")); navigateCommand.Verify(n => n.Execute(It.IsAny <object>()), Times.Once); }
public void FindAllReferences_SingleResult_Navigates() { const string inputCode = @"Public Sub Foo() End Sub Private Sub Bar() Foo End Sub"; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out _); using (var state = MockParser.CreateAndParse(vbe.Object)) { var navigateCommand = new Mock <INavigateCommand>(); var vm = new SearchResultsWindowViewModel(); var uiDispatcher = new Mock <IUiDispatcher>(); var command = new FindAllReferencesCommand(state, vbe.Object, vm, new FindAllReferencesService(navigateCommand.Object, null, state, vm, null, uiDispatcher.Object)); command.Execute(state.AllUserDeclarations.Single(s => s.IdentifierName == "Foo")); navigateCommand.Verify(n => n.Execute(It.IsAny <object>()), Times.Once); } }
public void FindAllReferences_FormMultipleResults_ReturnsCorrectNumber() { var code = @" Public Sub DoSomething() Form1.Width = 20 Form1.Height = 200 End Sub "; var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected); var form = project.MockUserFormBuilder("Form1", code).AddControl("TextBox1").Build(); project.AddComponent(form.Component, form.CodeModule); builder.AddProject(project.Build()); var vbe = builder.Build(); vbe.SetupGet(v => v.SelectedVBComponent).Returns(form.Component.Object); using (var state = MockParser.CreateAndParse(vbe.Object)) { AssertParserReady(state); var vm = new SearchResultsWindowViewModel(); var uiDispatcher = new Mock <IUiDispatcher>(); var command = new FindAllReferencesCommand(state, vbe.Object, vm, new FindAllReferencesService(null, null, state, vm, null, uiDispatcher.Object)); var target = state.AllUserDeclarations.Single(s => s.IdentifierName == "Form1"); command.Execute(target); Assert.AreEqual(1, vm.Tabs.Count); Assert.AreEqual(2, vm.Tabs[0].SearchResults.Count); } }
public void FindAllImplementations_SelectedImplementation_ReturnsCorrectNumber() { const string inputClass = @"Implements IClass1 Public Sub IClass1_Foo() End Sub"; const string inputInterface = @"Public Sub Foo() End Sub"; var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject", ProjectProtection.Unprotected) .AddComponent("Class1", ComponentType.ClassModule, inputClass) .AddComponent("Class2", ComponentType.ClassModule, inputClass) .AddComponent("IClass1", ComponentType.ClassModule, inputInterface) .Build(); var vbe = builder.AddProject(project).Build(); var parser = MockParser.Create(vbe.Object); parser.Parse(new CancellationTokenSource()); if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } var vm = new SearchResultsWindowViewModel(); var command = new FindAllImplementationsCommand(null, null, parser.State, vbe.Object, vm, null); command.Execute(parser.State.AllUserDeclarations.First(s => s.IdentifierName == "IClass1_Foo")); Assert.AreEqual(2, vm.Tabs[0].SearchResults.Count); }
public void FindAllImplementations_CanExecute_StateNotReady() { const string inputCode = @"Public Sub Foo() End Sub Private Sub Bar() Foo: Foo Foo Foo End Sub"; IVBComponent component; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component); vbe.Setup(s => s.ActiveCodePane).Returns(value: null); var state = MockParser.CreateAndParse(vbe.Object); state.SetStatusAndFireStateChanged(this, ParserState.ResolvedDeclarations); var vm = new SearchResultsWindowViewModel(); var command = new FindAllImplementationsCommand(null, null, state, vbe.Object, vm, null); Assert.IsFalse(command.CanExecute(state.AllUserDeclarations.Single(s => s.IdentifierName == "Foo"))); }
public void FindAllReferences_ReturnsCorrectNumber() { const string inputCode = @"Public Sub Foo() End Sub Private Sub Bar() Foo: Foo Foo Foo End Sub"; IVBComponent component; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component); using (var state = MockParser.CreateAndParse(vbe.Object)) { var vm = new SearchResultsWindowViewModel(); var command = new FindAllReferencesCommand(null, null, state, vbe.Object, vm, null); command.Execute(state.AllUserDeclarations.Single(s => s.IdentifierName == "Foo")); Assert.AreEqual(4, vm.Tabs[0].SearchResults.Count); } }
public void FindAllReferences_NoResults_DisplayMessageBox() { const string inputCode = @"Public Sub Foo() End Sub"; IVBComponent component; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component); using (var state = MockParser.CreateAndParse(vbe.Object)) { var messageBox = new Mock <IMessageBox>(); messageBox.Setup(m => m.Show(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <MessageBoxButtons>(), It.IsAny <MessageBoxIcon>())).Returns(DialogResult.OK); var vm = new SearchResultsWindowViewModel(); var command = new FindAllReferencesCommand(null, messageBox.Object, state, vbe.Object, vm, null); command.Execute(state.AllUserDeclarations.Single(s => s.IdentifierName == "Foo")); messageBox.Verify(m => m.Show(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <MessageBoxButtons>(), It.IsAny <MessageBoxIcon>()), Times.Once); } }
public void FindAllReferences_ReferenceSelected_ReturnsCorrectNumber() { const string inputCode = @"Public Sub Foo() End Sub Private Sub Bar() Foo: Foo Foo Foo End Sub"; //Arrange var builder = new MockVbeBuilder(); VBComponent component; var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, new Selection(5, 5, 5, 5)); var mockHost = new Mock <IHostApplication>(); mockHost.SetupAllProperties(); var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock <ISinks>().Object)); parser.Parse(new CancellationTokenSource()); if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } var vm = new SearchResultsWindowViewModel(); var command = new FindAllReferencesCommand(null, null, parser.State, vbe.Object, vm, null); command.Execute(null); Assert.AreEqual(4, vm.Tabs[0].SearchResults.Count); }
public void FindAllImplementations_SingleResult_Navigates() { const string inputClass = @"Implements IClass1 Public Sub IClass1_Foo() End Sub"; const string inputInterface = @"Public Sub Foo() End Sub"; var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject", ProjectProtection.Unprotected) .AddComponent("Class1", ComponentType.ClassModule, inputClass) .AddComponent("IClass1", ComponentType.ClassModule, inputInterface) .Build(); var vbe = builder.AddProject(project).Build(); var uiDispatcher = new Mock <IUiDispatcher>(); using (var state = MockParser.CreateAndParse(vbe.Object)) { var navigateCommand = new Mock <INavigateCommand>(); var vm = new SearchResultsWindowViewModel(); var command = new FindAllImplementationsCommand(navigateCommand.Object, null, state, vbe.Object, vm, null, uiDispatcher.Object); command.Execute(state.AllUserDeclarations.Single(s => s.IdentifierName == "Foo")); navigateCommand.Verify(n => n.Execute(It.IsAny <object>()), Times.Once); } }
public void FindAllImplementations_CanExecute_NullActiveCodePane() { IVBComponent component; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(string.Empty, out component); vbe.Setup(s => s.ActiveCodePane).Returns(value: null); var state = MockParser.CreateAndParse(vbe.Object); var vm = new SearchResultsWindowViewModel(); var command = new FindAllImplementationsCommand(null, null, state, vbe.Object, vm, null); Assert.IsFalse(command.CanExecute(null)); }
public void FindAllReferences_CanExecute_NullActiveCodePane() { var vbe = MockVbeBuilder.BuildFromSingleStandardModule(string.Empty, out _); vbe.Setup(s => s.ActiveCodePane).Returns(value: null); using (var state = MockParser.CreateAndParse(vbe.Object)) { var vm = new SearchResultsWindowViewModel(); var uiDispatcher = new Mock <IUiDispatcher>(); var command = new FindAllReferencesCommand(state, vbe.Object, vm, new FindAllReferencesService(null, null, state, vm, null, uiDispatcher.Object)); Assert.IsFalse(command.CanExecute(null)); } }
public void FindAllReferences_NullTarget_Aborts() { IVBComponent component; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(string.Empty, out component); vbe.Setup(s => s.ActiveCodePane).Returns(value: null); var state = MockParser.CreateAndParse(vbe.Object); var vm = new SearchResultsWindowViewModel(); var command = new FindAllReferencesCommand(null, null, state, vbe.Object, vm, null); command.Execute(null); Assert.IsFalse(vm.Tabs.Any()); }
public void FindAllImplementations_NullTarget_Aborts() { var vbe = MockVbeBuilder.BuildFromSingleStandardModule(string.Empty, out _); vbe.Setup(s => s.ActiveCodePane).Returns(value: null); using (var state = MockParser.CreateAndParse(vbe.Object)) { var vm = new SearchResultsWindowViewModel(); var uiDispatcher = new Mock <IUiDispatcher>(); var command = new FindAllImplementationsCommand(state, vbe.Object, vm, new FindAllImplementationsService(null, null, state, vm, null, uiDispatcher.Object)); command.Execute(null); Assert.IsFalse(vm.Tabs.Any()); } }
public void FindAllImplementations_SelectedReference_ReturnsCorrectNumber() { const string inputClass = @"Implements IClass1 Public Sub IClass1_Foo() End Sub Public Sub Buzz() IClass1_Foo End Sub"; const string inputInterface = @"Public Sub Foo() End Sub"; //Arrange var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject", vbext_ProjectProtection.vbext_pp_none) .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputClass, new Selection(7, 5, 7, 5)) .AddComponent("Class2", vbext_ComponentType.vbext_ct_ClassModule, inputClass) .AddComponent("IClass1", vbext_ComponentType.vbext_ct_ClassModule, inputInterface) .Build(); var vbe = builder.AddProject(project).Build(); vbe.Setup(v => v.ActiveCodePane).Returns(project.Object.VBComponents.Item("Class1").CodeModule.CodePane); var mockHost = new Mock <IHostApplication>(); mockHost.SetupAllProperties(); var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock <ISinks>().Object)); parser.Parse(new CancellationTokenSource()); if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } var vm = new SearchResultsWindowViewModel(); var command = new FindAllImplementationsCommand(null, null, parser.State, vbe.Object, vm, null); command.Execute(null); Assert.AreEqual(2, vm.Tabs[0].SearchResults.Count); }
public void FindAllImplementations_ReturnsCorrectNumberForProperty() { var intrface = @"Option Explicit Public Property Get Foo(Bar As Long) As Long End Property Public Property Let Foo(Bar As Long, NewValue As Long) End Property "; var implementation = @"Option Explicit Implements TestInterface Private Property Get TestInterface_Foo(Bar As Long) As Long End Property Private Property Let TestInterface_Foo(Bar As Long, RHS As Long) End Property "; var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject", ProjectProtection.Unprotected) .AddComponent("Class1", ComponentType.ClassModule, implementation) .AddComponent("Class2", ComponentType.ClassModule, implementation) .AddComponent("TestInterface", ComponentType.ClassModule, intrface) .Build(); var vbe = builder.AddProject(project).Build(); var uiDispatcher = new Mock <IUiDispatcher>(); using (var state = MockParser.CreateAndParse(vbe.Object)) { var vm = new SearchResultsWindowViewModel(); var command = new FindAllImplementationsCommand(null, null, state, vbe.Object, vm, null, uiDispatcher.Object); command.Execute(state.AllUserDeclarations.Single(s => s.IdentifierName == "Foo" && s.DeclarationType == DeclarationType.PropertyGet)); Assert.AreEqual(2, vm.Tabs[0].SearchResults.Count); } }
public void FindAllReferences_NoResults_DisplayMessageBox() { const string inputCode = @"Public Sub Foo() End Sub"; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out _); using (var state = MockParser.CreateAndParse(vbe.Object)) { var messageBox = new Mock <IMessageBox>(); var vm = new SearchResultsWindowViewModel(); var uiDispatcher = new Mock <IUiDispatcher>(); var command = new FindAllReferencesCommand(state, vbe.Object, vm, new FindAllReferencesService(null, messageBox.Object, state, vm, null, uiDispatcher.Object)); command.Execute(state.AllUserDeclarations.Single(s => s.IdentifierName == "Foo")); messageBox.Verify(m => m.NotifyWarn(It.IsAny <string>(), It.IsAny <string>()), Times.Once); } }
public void FindAllImplementations_SingleResult_Navigates() { const string inputClass = @"Implements IClass1 Public Sub IClass1_Foo() End Sub"; const string inputInterface = @"Public Sub Foo() End Sub"; //Arrange var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject", vbext_ProjectProtection.vbext_pp_none) .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputClass) .AddComponent("IClass1", vbext_ComponentType.vbext_ct_ClassModule, inputInterface) .Build(); var vbe = builder.AddProject(project).Build(); var mockHost = new Mock <IHostApplication>(); mockHost.SetupAllProperties(); var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock <ISinks>().Object)); parser.Parse(new CancellationTokenSource()); if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } var navigateCommand = new Mock <INavigateCommand>(); var vm = new SearchResultsWindowViewModel(); var command = new FindAllImplementationsCommand(navigateCommand.Object, null, parser.State, vbe.Object, vm, null); command.Execute(parser.State.AllUserDeclarations.Single(s => s.IdentifierName == "Foo")); navigateCommand.Verify(n => n.Execute(It.IsAny <object>()), Times.Once); }
public void FindAllImplementations_SelectedReference_ReturnsCorrectNumber() { const string inputClass = @"Implements IClass1 Public Sub IClass1_Foo() End Sub Public Sub Buzz() IClass1_Foo End Sub"; const string inputInterface = @"Public Sub Foo() End Sub"; var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject", ProjectProtection.Unprotected) .AddComponent("Class1", ComponentType.ClassModule, inputClass, new Selection(7, 5, 7, 5)) .AddComponent("Class2", ComponentType.ClassModule, inputClass) .AddComponent("IClass1", ComponentType.ClassModule, inputInterface) .Build(); var vbe = builder.AddProject(project).Build(); vbe.Setup(v => v.ActiveCodePane).Returns(project.Object.VBComponents["Class1"].CodeModule.CodePane); var uiDispatcher = new Mock <IUiDispatcher>(); using (var state = MockParser.CreateAndParse(vbe.Object)) { var vm = new SearchResultsWindowViewModel(); var command = new FindAllImplementationsCommand(null, null, state, vbe.Object, vm, null, uiDispatcher.Object); command.Execute(null); Assert.AreEqual(2, vm.Tabs[0].SearchResults.Count); } }
//See issue #5277 at https://github.com/rubberduck-vba/Rubberduck/issues/5277 public void FindAllReferences_ArraySelected_ReturnsCorrectNumberIgnoringArrayAccesses() { const string inputCode = @" Private Sub Bar() Dim arr(0 To 1) As Variant arr(1) = arr(1) End Sub"; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out _, new Selection(4, 6, 4, 6)); using (var state = MockParser.CreateAndParse(vbe.Object)) { var vm = new SearchResultsWindowViewModel(); var service = ArrangeFindAllReferencesService(state, vm); var command = ArrangeFindAllReferencesCommand(state, vbe, vm, service); command.Execute(null); Assert.AreEqual(2, vm.Tabs[0].SearchResults.Count); } }
public void FindAllImplementations_StateNotReady_Aborts() { const string inputCode = @"Public Sub Foo() End Sub Private Sub Bar() Foo: Foo Foo Foo End Sub"; //Arrange var builder = new MockVbeBuilder(); VBComponent component; var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); vbe.Setup(s => s.ActiveCodePane).Returns(value: null); var mockHost = new Mock <IHostApplication>(); mockHost.SetupAllProperties(); var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock <ISinks>().Object)); parser.Parse(new CancellationTokenSource()); if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } parser.State.SetStatusAndFireStateChanged(ParserState.ResolvedDeclarations); var vm = new SearchResultsWindowViewModel(); var command = new FindAllImplementationsCommand(null, null, parser.State, vbe.Object, vm, null); command.Execute(parser.State.AllUserDeclarations.Single(s => s.IdentifierName == "Foo")); Assert.IsFalse(vm.Tabs.Any()); }