diff --git a/Configurator/Configurator.Net/PresentationModels/AcroModeConfigVm.cs b/Configurator/Configurator.Net/PresentationModels/AcroModeConfigVm.cs index e04ed937b6..4535131d0b 100644 --- a/Configurator/Configurator.Net/PresentationModels/AcroModeConfigVm.cs +++ b/Configurator/Configurator.Net/PresentationModels/AcroModeConfigVm.cs @@ -24,7 +24,7 @@ namespace ArducopterConfigurator.PresentationModels UpdateCommand = new DelegateCommand(_ => UpdateValues()); } - public float TransmitterFactor { get; private set; } + public float TransmitterFactor { get; set; } public ICommand RefreshCommand { get; private set; } diff --git a/Configurator/Configurator.Net/Test/AcroModeConfigVmTest.cs b/Configurator/Configurator.Net/Test/AcroModeConfigVmTest.cs new file mode 100644 index 0000000000..6a8b3e67a5 --- /dev/null +++ b/Configurator/Configurator.Net/Test/AcroModeConfigVmTest.cs @@ -0,0 +1,86 @@ +using ArducopterConfigurator.PresentationModels; +using NUnit.Framework; + +namespace ArducopterConfiguratorTest +{ + [TestFixture] + public class AcroModeConfigVmTest : VmTestBase + { + [SetUp] + public void Setup() + { + sampleLineOfData = "1.950,0.100,0.200,1.950,0.300,0.400,3.200,0.500,0.600,0.320"; + getCommand = "P"; + setCommand = "O"; + + _fakeComms = new FakeComms(); + _vm = new AcroModeConfigVm(_fakeComms); + } + + [Test] + public void UpdateStringSentIsCorrect() + { + _vm.PitchP = 1.0F; + _vm.PitchI = 2.0F; + _vm.PitchD = 3.0F; + _vm.RollP = 5.0F; + _vm.RollI = 6.0F; + _vm.RollD = 7.0F; + _vm.YawP = 8.0F; + _vm.YawI = 9.0F; + _vm.YawD = 10.0F; + _vm.TransmitterFactor = 4.0F; + + _vm.UpdateCommand.Execute(null); + + Assert.AreEqual(1, _fakeComms.SentItems.Count); + Assert.AreEqual("O5;6;7;1;2;3;8;9;10;4", _fakeComms.SentItems[0]); + } + } + + + [TestFixture] + public class AltitudeHoldVmTest : VmTestBase + { + + [SetUp] + public void Setup() + { + sampleLineOfData = "0.800,0.200,0.300"; + getCommand = "F"; + setCommand = "E"; + + _fakeComms = new FakeComms(); + _vm = new AltitudeHoldConfigVm(_fakeComms); + } + + + [Test] + public void UpdateStringSentIsCorrect() + { + _vm.P = 1.0F; + _vm.I = 2.0F; + _vm.D = 3.0F; + + _vm.UpdateCommand.Execute(null); + + Assert.AreEqual(1, _fakeComms.SentItems.Count); + Assert.AreEqual("E1;3;2", _fakeComms.SentItems[0]); + } + + [Test] + // For whatever reason, for Altitude the properties are sent in P, D ,I + // order, but received in P,I,D order + public void UpdateStringReceivedPopulatesValuesCorrectly() + { + _vm.Activate(); + _fakeComms.FireLineRecieve(sampleLineOfData); + + Assert.AreEqual(0.8f, _vm.P); + Assert.AreEqual(0.2f, _vm.I); + Assert.AreEqual(0.3f, _vm.D); + } + + + } + } diff --git a/Configurator/Configurator.Net/Test/AltitudeHoldVmTest.cs b/Configurator/Configurator.Net/Test/AltitudeHoldVmTest.cs index 9c084d7753..1660eead60 100644 --- a/Configurator/Configurator.Net/Test/AltitudeHoldVmTest.cs +++ b/Configurator/Configurator.Net/Test/AltitudeHoldVmTest.cs @@ -1,48 +1,44 @@ -using ArducopterConfigurator.PresentationModels; +using ArducopterConfigurator; using NUnit.Framework; namespace ArducopterConfiguratorTest { - [TestFixture] - public class AltitudeHoldVmTest + public abstract class VmTestBase where T : MonitorVm { - private FakeComms _fakeComms; - private AltitudeHoldConfigVm _vm; + protected T _vm; + protected FakeComms _fakeComms; + protected string sampleLineOfData; + protected string getCommand; + protected string setCommand; - [SetUp] - public void Setup() + [Test] + public void ActivateSendsCorrectCommand() { - _fakeComms = new FakeComms(); - _vm = new AltitudeHoldConfigVm(_fakeComms); + _vm.Activate(); + Assert.AreEqual(1, _fakeComms.SentItems.Count); + Assert.AreEqual(getCommand, _fakeComms.SentItems[0]); } [Test] - public void UpdateStringSentIsCorrect() + public void ReceivedDataIgnoredWhenNotActive() { - _vm.P = 1.0F; - _vm.I = 2.0F; - _vm.D = 3.0F; - - _vm.UpdateCommand.Execute(null); - - Assert.AreEqual(1, _fakeComms.SentItems.Count); - - Assert.AreEqual("E1;3;2", _fakeComms.SentItems[0]); + bool inpcFired = false; + _vm.PropertyChanged += delegate { inpcFired = true; }; + _fakeComms.FireLineRecieve(sampleLineOfData); + Assert.False(inpcFired); } [Test] - // For whatever reason, for Altitude the properties are sent in P, D ,I - // order, but received in P,I,D order - public void UpdateStringReceivedPopulatesValuesCorrectly() + public void UpdateStringReceivedPopulatesValues() { - _fakeComms.FireLineRecieve("F1;2;3"); - - Assert.AreEqual(1f, _vm.P); - Assert.AreEqual(2f, _vm.I); - Assert.AreEqual(3f, _vm.D); - } + bool inpcFired = false; + _vm.PropertyChanged += delegate { inpcFired = true; }; + _vm.Activate(); + _fakeComms.FireLineRecieve(sampleLineOfData); + Assert.True(inpcFired); + } } -} \ No newline at end of file +} diff --git a/Configurator/Configurator.Net/Test/ArducopterConfiguratorTest.csproj b/Configurator/Configurator.Net/Test/ArducopterConfiguratorTest.csproj index 00768dd935..a1ea511a6c 100644 --- a/Configurator/Configurator.Net/Test/ArducopterConfiguratorTest.csproj +++ b/Configurator/Configurator.Net/Test/ArducopterConfiguratorTest.csproj @@ -40,10 +40,12 @@ + + diff --git a/Configurator/Configurator.Net/Test/MainVmTests.cs b/Configurator/Configurator.Net/Test/MainVmTests.cs index f09a2c9eb2..5a1de338bf 100644 --- a/Configurator/Configurator.Net/Test/MainVmTests.cs +++ b/Configurator/Configurator.Net/Test/MainVmTests.cs @@ -7,7 +7,7 @@ using NUnit.Framework; namespace ArducopterConfiguratorTest { - internal class FakeComms : IComms + public class FakeComms : IComms { public event Action LineOfDataReceived; public string CommPort { get; set; } @@ -51,73 +51,10 @@ namespace ArducopterConfiguratorTest [Test] public void StateInitiallyDisconnected() { - Assert.AreEqual(MainVm.SessionStates.Disconnected,_vm.ConnectionState); - } - - - } - - - [TestFixture] - public class StableModeConfigVmTest - { - private FakeComms _fakeComms; - private StableModeConfigVm _vm; - - [SetUp] - public void Setup() - { - _fakeComms = new FakeComms(); - _vm = new StableModeConfigVm(_fakeComms); - - - } - - [Test] - public void UpdateStringSentIsCorrect() - { - _vm.PitchP = 1.0F; - _vm.PitchI = 2.0F; - _vm.PitchD = 3.0F; - _vm.RollP = 5.0F; - _vm.RollI = 6.0F; - _vm.RollD = 7.0F; - _vm.YawP = 8.0F; - _vm.YawI = 9.0F; - _vm.YawD = 10.0F; - _vm.MagnetometerEnable = true; - _vm.KPrate = 4.0F; - - _vm.UpdateCommand.Execute(null); - - - Assert.AreEqual(1,_fakeComms.SentItems.Count); - - //A[KP Quad Roll];[KI Quad Roll];[KP RATE ROLL]; - // [KP Quad Pitch];[KI Quad Pitch];[KP RATE PITCH]; - // [KP Quad Yaw];[KI Quad Yaw];[KP Rate Yaw]; - // [KP Rate];[Magneto] - Assert.AreEqual("A5;6;7;1;2;3;8;9;10;4;1", _fakeComms.SentItems[0]); - } - - [Test] - public void UpdateStringReceivedPopulatesValuesCorrectly() - { - _fakeComms.FireLineRecieve("B5;6;7;1;2;3;8;9;10;4;1"); - - Assert.AreEqual(1.0f,_vm.PitchP); - Assert.AreEqual(2f,_vm.PitchI); - Assert.AreEqual(3f,_vm.PitchD); - Assert.AreEqual(5f,_vm.RollP); - Assert.AreEqual(6f,_vm.RollI); - Assert.AreEqual(7f,_vm.RollD); - Assert.AreEqual(8f,_vm.YawP); - Assert.AreEqual(9f,_vm.YawI); - Assert.AreEqual(10f,_vm.YawD); - Assert.AreEqual(1f,_vm.MagnetometerEnable); - Assert.AreEqual(4f,_vm.KPrate); + Assert.AreEqual(MainVm.SessionStates.Disconnected, _vm.ConnectionState); } } } + diff --git a/Configurator/Configurator.Net/Test/StableModeConfigVmTest.cs b/Configurator/Configurator.Net/Test/StableModeConfigVmTest.cs new file mode 100644 index 0000000000..e9f7c3411d --- /dev/null +++ b/Configurator/Configurator.Net/Test/StableModeConfigVmTest.cs @@ -0,0 +1,66 @@ +using ArducopterConfigurator.PresentationModels; +using NUnit.Framework; + +namespace ArducopterConfiguratorTest +{ + [TestFixture] + public class StableModeConfigVmTest : VmTestBase + { + + [SetUp] + public void Setup() + { + sampleLineOfData = "1.950,0.100,0.200,1.950,0.300,0.400,3.200,0.500,0.600,0.320,1.00"; + getCommand = "B"; + setCommand = "A"; + + _fakeComms = new FakeComms(); + _vm = new StableModeConfigVm(_fakeComms); + } + + [Test] + public void UpdateStringSentIsCorrect() + { + _vm.PitchP = 1.0F; + _vm.PitchI = 2.0F; + _vm.PitchD = 3.0F; + _vm.RollP = 5.0F; + _vm.RollI = 6.0F; + _vm.RollD = 7.0F; + _vm.YawP = 8.0F; + _vm.YawI = 9.0F; + _vm.YawD = 10.0F; + _vm.MagnetometerEnable = true; + _vm.KPrate = 4.0F; + + _vm.UpdateCommand.Execute(null); + + + Assert.AreEqual(1, _fakeComms.SentItems.Count); + + //A[KP Quad Roll];[KI Quad Roll];[KP RATE ROLL]; + // [KP Quad Pitch];[KI Quad Pitch];[KP RATE PITCH]; + // [KP Quad Yaw];[KI Quad Yaw];[KP Rate Yaw]; + // [KP Rate];[Magneto] + Assert.AreEqual("A5;6;7;1;2;3;8;9;10;4;1", _fakeComms.SentItems[0]); + } + + [Test] + public void UpdateStringReceivedPopulatesValuesCorrectly() + { + _fakeComms.FireLineRecieve("B5;6;7;1;2;3;8;9;10;4;1"); + + Assert.AreEqual(1.0f, _vm.PitchP); + Assert.AreEqual(2f, _vm.PitchI); + Assert.AreEqual(3f, _vm.PitchD); + Assert.AreEqual(5f, _vm.RollP); + Assert.AreEqual(6f, _vm.RollI); + Assert.AreEqual(7f, _vm.RollD); + Assert.AreEqual(8f, _vm.YawP); + Assert.AreEqual(9f, _vm.YawI); + Assert.AreEqual(10f, _vm.YawD); + Assert.AreEqual(1f, _vm.MagnetometerEnable); + Assert.AreEqual(4f, _vm.KPrate); + } + } +} \ No newline at end of file