plugin system docs
custom buttons for plugins calibration functions for Leeform
This commit is contained in:
170
VisionBuilder.UI.Tests/DynamicButtonTests.cs
Normal file
170
VisionBuilder.UI.Tests/DynamicButtonTests.cs
Normal file
@@ -0,0 +1,170 @@
|
||||
using VisionBuilder.UI.Common.ViewModel;
|
||||
using VisionBuilder.UI.Common.ViewModel.Classes;
|
||||
using VisionBuilder.UI.Common.ViewModel.Interfaces.UI;
|
||||
|
||||
namespace VisionBuilder.UI.Tests;
|
||||
|
||||
[TestClass]
|
||||
public sealed class DynamicButtonTests
|
||||
{
|
||||
private class StubSettingsService : ISettingsService
|
||||
{
|
||||
public Task ShowSettingsDialogAsync() => Task.CompletedTask;
|
||||
}
|
||||
|
||||
#region ButtonDefinition Tests
|
||||
|
||||
[TestMethod]
|
||||
public void ClickButton_Execute_InvokesCallback()
|
||||
{
|
||||
bool called = false;
|
||||
var button = new ButtonDefinition("key1", "Test", () => called = true);
|
||||
|
||||
button.Execute();
|
||||
|
||||
Assert.IsTrue(called);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void ClickButton_HasCorrectProperties()
|
||||
{
|
||||
var button = new ButtonDefinition("myKey", "My Title", () => { });
|
||||
|
||||
Assert.AreEqual("myKey", button.Key);
|
||||
Assert.AreEqual("My Title", button.Title);
|
||||
Assert.AreEqual(EButtonType.Click, button.Type);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void ToggleButton_Execute_TogglesAndInvokesCallback()
|
||||
{
|
||||
bool? receivedState = null;
|
||||
var button = new ButtonDefinition("key1", "Test", (state) => receivedState = state);
|
||||
|
||||
button.Execute();
|
||||
|
||||
Assert.IsTrue(button.IsToggled);
|
||||
Assert.AreEqual(true, receivedState);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void ToggleButton_ExecuteTwice_TogglesBack()
|
||||
{
|
||||
bool? receivedState = null;
|
||||
var button = new ButtonDefinition("key1", "Test", (state) => receivedState = state);
|
||||
|
||||
button.Execute();
|
||||
button.Execute();
|
||||
|
||||
Assert.IsFalse(button.IsToggled);
|
||||
Assert.AreEqual(false, receivedState);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void ToggleButton_InitialState_IsRespected()
|
||||
{
|
||||
var button = new ButtonDefinition("key1", "Test", (_) => { }, initialState: true);
|
||||
|
||||
Assert.IsTrue(button.IsToggled);
|
||||
Assert.AreEqual(EButtonType.Toggle, button.Type);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void ButtonDefinition_IsVisible_DefaultTrue()
|
||||
{
|
||||
var button = new ButtonDefinition("key1", "Test", () => { });
|
||||
|
||||
Assert.IsTrue(button.IsVisible);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void ButtonDefinition_SetVisibility_RaisesPropertyChanged()
|
||||
{
|
||||
var button = new ButtonDefinition("key1", "Test", () => { });
|
||||
string? changedProperty = null;
|
||||
button.PropertyChanged += (_, args) => changedProperty = args.PropertyName;
|
||||
|
||||
button.IsVisible = false;
|
||||
|
||||
Assert.AreEqual(nameof(ButtonDefinition.IsVisible), changedProperty);
|
||||
Assert.IsFalse(button.IsVisible);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void ToggleButton_Execute_RaisesToggledPropertyChanged()
|
||||
{
|
||||
var button = new ButtonDefinition("key1", "Test", (_) => { });
|
||||
string? changedProperty = null;
|
||||
button.PropertyChanged += (_, args) => changedProperty = args.PropertyName;
|
||||
|
||||
button.Execute();
|
||||
|
||||
Assert.AreEqual(nameof(ButtonDefinition.IsToggled), changedProperty);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region MainWindowVM Tests
|
||||
|
||||
[TestMethod]
|
||||
public void MainWindowVM_AddButton_AddsToCollection()
|
||||
{
|
||||
var vm = new MainWindowVM(new StubSettingsService());
|
||||
var button = new ButtonDefinition("key1", "Test", () => { });
|
||||
|
||||
vm.AddButton(button);
|
||||
|
||||
Assert.AreEqual(1, vm.DynamicButtons.Count);
|
||||
Assert.AreSame(button, vm.DynamicButtons[0]);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void MainWindowVM_SetButtonVisibility_UpdatesButton()
|
||||
{
|
||||
var vm = new MainWindowVM(new StubSettingsService());
|
||||
var button = new ButtonDefinition("key1", "Test", () => { });
|
||||
vm.AddButton(button);
|
||||
|
||||
vm.SetButtonVisibility("key1", false);
|
||||
|
||||
Assert.IsFalse(button.IsVisible);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void MainWindowVM_SetButtonVisibility_NonExistentKey_DoesNothing()
|
||||
{
|
||||
var vm = new MainWindowVM(new StubSettingsService());
|
||||
var button = new ButtonDefinition("key1", "Test", () => { });
|
||||
vm.AddButton(button);
|
||||
|
||||
vm.SetButtonVisibility("nonexistent", false);
|
||||
|
||||
Assert.IsTrue(button.IsVisible);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void MainWindowVM_RemoveButton_RemovesFromCollection()
|
||||
{
|
||||
var vm = new MainWindowVM(new StubSettingsService());
|
||||
var button = new ButtonDefinition("key1", "Test", () => { });
|
||||
vm.AddButton(button);
|
||||
|
||||
vm.RemoveButton("key1");
|
||||
|
||||
Assert.AreEqual(0, vm.DynamicButtons.Count);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void MainWindowVM_RemoveButton_NonExistentKey_DoesNothing()
|
||||
{
|
||||
var vm = new MainWindowVM(new StubSettingsService());
|
||||
var button = new ButtonDefinition("key1", "Test", () => { });
|
||||
vm.AddButton(button);
|
||||
|
||||
vm.RemoveButton("nonexistent");
|
||||
|
||||
Assert.AreEqual(1, vm.DynamicButtons.Count);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
Reference in New Issue
Block a user