Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/editor updates #57

Merged
merged 2 commits into from
Jan 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added Images/NextArrow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions src/.editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -97,3 +97,4 @@ dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_compound_assignment = true:suggestion
dotnet_style_prefer_simplified_interpolation = true:suggestion
dotnet_diagnostic.CA1859.severity = none
6 changes: 2 additions & 4 deletions src/GCAAnalyser/Analyzers/AnalyzeM62XComPorts.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,8 @@ public void Analyze(string fileName, IGCodeAnalyses gCodeAnalyses)
}

//open port
if (!comPortUsage.ContainsKey(comPort))
{
if (!comPortUsage.TryGetValue(comPort, out bool _))
comPortUsage.Add(comPort, false);
}

if ((command.PreviousCommand?.LineNumber == command.LineNumber || command.NextCommand?.LineNumber == command.LineNumber) &&
(command.PreviousCommand?.MasterLineNumber == command.MasterLineNumber || command.NextCommand?.MasterLineNumber == command.MasterLineNumber))
Expand All @@ -80,7 +78,7 @@ public void Analyze(string fileName, IGCodeAnalyses gCodeAnalyses)
else if (command.CommandValue == Constants.MCode621)
{
// close port
if (!comPortUsage.ContainsKey(comPort))
if (!comPortUsage.TryGetValue(comPort, out bool _))
codeAnalyses.AddError(GSend.Language.Resources.AnalyzeError4, command.LineNumber, comPort);
else if (!comPortUsage[comPort])
codeAnalyses.AddError(GSend.Language.Resources.AnalyzeError5, command.LineNumber, comPort);
Expand Down
60 changes: 60 additions & 0 deletions src/GCATests/Mocks/MockEditorPluginHost.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using GSendControls.Abstractions;

using GSendShared;
using GSendShared.Plugins;

namespace GSendTests.Mocks
{
internal class MockEditorPluginHost : IEditorPluginHost
{
public MockEditorPluginHost()
{
Editor = new MockITextEditor();
}

public bool IsDirty => throw new NotImplementedException();

public bool IsSubprogram => throw new NotImplementedException();

public string FileName => throw new NotImplementedException();

public ITextEditor Editor { get; set; }

public PluginHosts Host => throw new NotImplementedException();

public int MaximumMenuIndex => throw new NotImplementedException();

public IGSendContext GSendContext => throw new NotImplementedException();

public void AddMenu(IPluginMenu pluginMenu)
{
throw new NotImplementedException();
}

public void AddMessage(InformationType informationType, string message)
{
throw new NotImplementedException();
}

public void AddPlugin(IGSendPluginModule pluginModule)
{
throw new NotImplementedException();
}

public void AddToolbar(IPluginToolbarButton toolbarButton)
{
throw new NotImplementedException();
}

public IPluginMenu GetMenu(MenuParent menuParent)
{
throw new NotImplementedException();
}
}
}
51 changes: 51 additions & 0 deletions src/GCATests/Mocks/MockITextEditor.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
using System;
using System.Drawing;
using System.Security.Policy;
using System.Windows.Forms;

using GSendControls.Abstractions;

namespace GSendTests.Mocks
{
internal class MockITextEditor : ITextEditor
{
public string Text { get; set; } = String.Empty;

public int LineCount { get; set; } = 23;

public bool ShowGotoDialogCalled { get; private set; }

public bool ShowFindDialogCalled { get; private set; }

public bool ShowReplaceDialogCalled { get; private set; }

public IWin32Window Parent => throw new NotImplementedException();

public Rectangle ParentRectangle => throw new NotImplementedException();

public int SelectionStart => throw new NotImplementedException();

public int SelectionLength => throw new NotImplementedException();

public Rectangle Position => throw new NotImplementedException();

public Control ParentControl => throw new NotImplementedException();

public Point ParentDesktopLocation => throw new NotImplementedException();

public void ShowFindDialog()
{
ShowFindDialogCalled = true;
}

public void ShowGoToDialog()
{
ShowGotoDialogCalled = true;
}

public void ShowReplaceDialog()
{
ShowReplaceDialogCalled = true;
}
}
}
3 changes: 2 additions & 1 deletion src/GCATests/Mocks/MockPluginMenu.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Drawing;

using GSendControls.Abstractions;
Expand Down Expand Up @@ -65,7 +66,7 @@ public void UpdateHost<T>(T senderPluginHost)
_senderPluginHost = senderPluginHost as ISenderPluginHost;
}

public bool GetShortcut(out string groupName, out string shortcutName)
public bool GetShortcut(in List<int> defaultKeys, out string groupName, out string shortcutName)
{
throw new NotImplementedException();
}
Expand Down
74 changes: 74 additions & 0 deletions src/GCATests/Plugins/SearchMenu/FindMenuItemTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
using System;
using System.Diagnostics.CodeAnalysis;

using GSendControls.Abstractions;
using GSendControls.Plugins.InternalPlugins.SearchMenu;

using GSendShared.Plugins;

using GSendTests.Mocks;

using Microsoft.VisualStudio.TestTools.UnitTesting;

using Moq;

namespace GSendTests.Plugins.SearchMenu
{
[TestClass]
[ExcludeFromCodeCoverage]
public class FindMenuItemTests
{
[TestMethod]
public void Construct_FindMenuItem_Success()
{
MockPluginMenu parentMenu = new MockPluginMenu("test", MenuType.MenuItem, null);
FindMenuItem sut = new(parentMenu, new MockITextEditor());
Assert.IsNotNull(sut);
Assert.IsNull(sut.MenuImage);
Assert.AreEqual(MenuType.MenuItem, sut.MenuType);
Assert.IsNotNull(sut.ParentMenu);
Assert.AreSame(parentMenu, sut.ParentMenu);
Assert.AreEqual("Find", sut.Text);
Assert.AreEqual(0, sut.Index);
Assert.IsFalse(sut.ReceiveClientMessages);
Assert.IsTrue(sut.GetShortcut([], out string grpName, out string shrtCutName));
Assert.AreEqual("Search Menu", grpName);
Assert.AreEqual("Find", shrtCutName);
Assert.IsFalse(sut.IsChecked());
Assert.IsFalse(sut.IsEnabled());
Assert.IsTrue(sut.IsVisible());
}

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Construct_InvalidParam_ParentNull_Throws_ArgumentNullException()
{
new FindMenuItem(null, new Mock<ITextEditor>().Object);
}

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Construct_InvalidParam_TextEditorNull_Throws_ArgumentNullException()
{
new FindMenuItem(new MockPluginMenu("test", MenuType.MenuItem, null), null);
}

[TestMethod]
public void UpdateHost_DoesNotCrash_Success()
{
FindMenuItem sut = new(new MockPluginMenu("test", MenuType.MenuItem, null), new MockITextEditor());
Assert.IsNotNull(sut);
sut.UpdateHost<FindMenuItem>(null);
}

[TestMethod]
public void IsEnabled_HasText_ReturnsTrue()
{
MockITextEditor mockITextEditor = new();
mockITextEditor.Text = "Some Text";
MockPluginMenu parentMenu = new MockPluginMenu("test", MenuType.MenuItem, null);
FindMenuItem sut = new(parentMenu, mockITextEditor);
Assert.IsTrue(sut.IsEnabled());
}
}
}
85 changes: 85 additions & 0 deletions src/GCATests/Plugins/SearchMenu/GotoMenuItemTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
using System;
using System.Diagnostics.CodeAnalysis;

using GSendControls.Abstractions;
using GSendControls.Plugins.InternalPlugins.SearchMenu;

using GSendShared.Plugins;

using GSendTests.Mocks;

using Microsoft.VisualStudio.TestTools.UnitTesting;

using Moq;

namespace GSendTests.Plugins.SearchMenu
{
[TestClass]
[ExcludeFromCodeCoverage]
public class GotoMenuItemTests
{
[TestMethod]
public void Construct_GotoMenuItem_Success()
{
MockPluginMenu parentMenu = new MockPluginMenu("test", MenuType.MenuItem, null);
GotoMenuItem sut = new(parentMenu, new MockITextEditor());
Assert.IsNotNull(sut);
Assert.IsNull(sut.MenuImage);
Assert.AreEqual(MenuType.MenuItem, sut.MenuType);
Assert.IsNotNull(sut.ParentMenu);
Assert.AreSame(parentMenu, sut.ParentMenu);
Assert.AreEqual("Goto", sut.Text);
Assert.AreEqual(20, sut.Index);
Assert.IsFalse(sut.ReceiveClientMessages);
Assert.IsFalse(sut.GetShortcut([], out string grpName, out string shrtCutName));
Assert.IsNull(grpName);
Assert.IsNull(shrtCutName);
Assert.IsFalse(sut.IsChecked());
Assert.IsTrue(sut.IsEnabled());
Assert.IsTrue(sut.IsVisible());
}

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Construct_InvalidParam_ParentNull_Throws_ArgumentNullException()
{
new GotoMenuItem(null, new Mock<ITextEditor>().Object);
}

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Construct_InvalidParam_TextEditorNull_Throws_ArgumentNullException()
{
new GotoMenuItem(new MockPluginMenu("test", MenuType.MenuItem, null), null);
}

[TestMethod]
public void UpdateHost_DoesNotCrash_Success()
{
GotoMenuItem sut = new(new MockPluginMenu("test", MenuType.MenuItem, null), new MockITextEditor());
Assert.IsNotNull(sut);
sut.UpdateHost<GotoMenuItem>(null);
}

[TestMethod]
public void IsEnabled_HasText_ReturnsTrue()
{
MockITextEditor mockITextEditor = new();
mockITextEditor.Text = "Some Text";
MockPluginMenu parentMenu = new MockPluginMenu("test", MenuType.MenuItem, null);
GotoMenuItem sut = new(parentMenu, mockITextEditor);
Assert.IsTrue(sut.IsEnabled());
}

[TestMethod]
public void IsEnabled_HasNoText_ReturnsFalse()
{
MockITextEditor mockITextEditor = new();
mockITextEditor.Text = "Some Text";
mockITextEditor.LineCount = 0;
MockPluginMenu parentMenu = new MockPluginMenu("test", MenuType.MenuItem, null);
GotoMenuItem sut = new(parentMenu, mockITextEditor);
Assert.IsFalse(sut.IsEnabled());
}
}
}
74 changes: 74 additions & 0 deletions src/GCATests/Plugins/SearchMenu/ReplaceMenuItemTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
using System;
using System.Diagnostics.CodeAnalysis;

using GSendControls.Abstractions;
using GSendControls.Plugins.InternalPlugins.SearchMenu;

using GSendShared.Plugins;

using GSendTests.Mocks;

using Microsoft.VisualStudio.TestTools.UnitTesting;

using Moq;

namespace GSendTests.Plugins.SearchMenu
{
[TestClass]
[ExcludeFromCodeCoverage]
public class ReplaceMenuItemTests
{
[TestMethod]
public void Construct_ReplaceMenuItem_Success()
{
MockPluginMenu parentMenu = new MockPluginMenu("test", MenuType.MenuItem, null);
ReplaceMenuItem sut = new(parentMenu, new MockITextEditor());
Assert.IsNotNull(sut);
Assert.IsNull(sut.MenuImage);
Assert.AreEqual(MenuType.MenuItem, sut.MenuType);
Assert.IsNotNull(sut.ParentMenu);
Assert.AreSame(parentMenu, sut.ParentMenu);
Assert.AreEqual("Replace", sut.Text);
Assert.AreEqual(1, sut.Index);
Assert.IsFalse(sut.ReceiveClientMessages);
Assert.IsTrue(sut.GetShortcut([], out string grpName, out string shrtCutName));
Assert.AreEqual("Search Menu", grpName);
Assert.AreEqual("Replace", shrtCutName);
Assert.IsFalse(sut.IsChecked());
Assert.IsFalse(sut.IsEnabled());
Assert.IsTrue(sut.IsVisible());
}

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Construct_InvalidParam_ParentNull_Throws_ArgumentNullException()
{
new ReplaceMenuItem(null, new Mock<ITextEditor>().Object);
}

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Construct_InvalidParam_TextEditorNull_Throws_ArgumentNullException()
{
new ReplaceMenuItem(new MockPluginMenu("test", MenuType.MenuItem, null), null);
}

[TestMethod]
public void UpdateHost_DoesNotCrash_Success()
{
ReplaceMenuItem sut = new(new MockPluginMenu("test", MenuType.MenuItem, null), new MockITextEditor());
Assert.IsNotNull(sut);
sut.UpdateHost<ReplaceMenuItem>(null);
}

[TestMethod]
public void IsEnabled_HasText_ReturnsTrue()
{
MockITextEditor mockITextEditor = new();
mockITextEditor.Text = "Some Text";
MockPluginMenu parentMenu = new MockPluginMenu("test", MenuType.MenuItem, null);
ReplaceMenuItem sut = new(parentMenu, mockITextEditor);
Assert.IsTrue(sut.IsEnabled());
}
}
}
Loading
Loading