Browse Source

Configurator.Net: Added more Vm tests

git-svn-id: https://arducopter.googlecode.com/svn/trunk@1227 f9c3cf11-9bcb-44bc-f272-b75c42450872
master
mandrolic 14 years ago
parent
commit
b9e2dcd124
  1. 8
      Configurator/Configurator.Net/PresentationModels/AltitudeHoldConfigVm.cs
  2. 12
      Configurator/Configurator.Net/PresentationModels/CalibrationOffsetsDataVm.cs
  3. 2
      Configurator/Configurator.Net/PresentationModels/MonitorVm.cs
  4. 44
      Configurator/Configurator.Net/Test/AcroModeConfigVmTest.cs
  5. 52
      Configurator/Configurator.Net/Test/AltitudeHoldVmTest.cs
  6. 3
      Configurator/Configurator.Net/Test/ArducopterConfiguratorTest.csproj
  7. 22
      Configurator/Configurator.Net/Test/CalibrationOffsetsDataVmTest.cs
  8. 22
      Configurator/Configurator.Net/Test/PositionHoldConfigVmTest.cs
  9. 57
      Configurator/Configurator.Net/Test/VmTestBase.cs

8
Configurator/Configurator.Net/PresentationModels/AltitudeHoldConfigVm.cs

@ -1,5 +1,13 @@ @@ -1,5 +1,13 @@
namespace ArducopterConfigurator.PresentationModels
{
/// <summary>
/// Vm for Altitude hold settings
/// </summary>
/// <remarks>
/// Todo: this one is weird because the APM sends and receives the values
/// in a different order
/// There is a unit test to cover it but it will need fixing.
/// </remarks>
public class AltitudeHoldConfigVm : MonitorVm
{
public AltitudeHoldConfigVm(IComms sp)

12
Configurator/Configurator.Net/PresentationModels/CalibrationOffsetsDataVm.cs

@ -28,13 +28,13 @@ namespace ArducopterConfigurator.PresentationModels @@ -28,13 +28,13 @@ namespace ArducopterConfigurator.PresentationModels
public int GyroRollOffset { get; set; }
public int GyroPitchOffset { get; set; }
public int GyroYawOffset { get; set; }
public float GyroRollOffset { get; set; }
public float GyroPitchOffset { get; set; }
public float GyroYawOffset { get; set; }
public int AccelRollOffset { get; set; }
public int AccelPitchOffset { get; set; }
public int AccelZOffset { get; set; }
public float AccelRollOffset { get; set; }
public float AccelPitchOffset { get; set; }
public float AccelZOffset { get; set; }
protected override void OnActivated()
{

2
Configurator/Configurator.Net/PresentationModels/MonitorVm.cs

@ -127,7 +127,7 @@ namespace ArducopterConfigurator @@ -127,7 +127,7 @@ namespace ArducopterConfigurator
int val;
if (!int.TryParse(s, out val))
{
Debug.WriteLine("Error parsing float: " + s);
Debug.WriteLine("Error parsing int: " + s);
break;
}
value = val;

44
Configurator/Configurator.Net/Test/AcroModeConfigVmTest.cs

@ -39,48 +39,4 @@ namespace ArducopterConfiguratorTest @@ -39,48 +39,4 @@ namespace ArducopterConfiguratorTest
}
[TestFixture]
public class AltitudeHoldVmTest : VmTestBase<AltitudeHoldConfigVm>
{
[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);
}
}
}

52
Configurator/Configurator.Net/Test/AltitudeHoldVmTest.cs

@ -1,44 +1,52 @@ @@ -1,44 +1,52 @@
using ArducopterConfigurator;
using ArducopterConfigurator.PresentationModels;
using NUnit.Framework;
namespace ArducopterConfiguratorTest
{
public abstract class VmTestBase<T> where T : MonitorVm
[TestFixture]
public class AltitudeHoldVmTest : VmTestBase<AltitudeHoldConfigVm>
{
protected T _vm;
protected FakeComms _fakeComms;
protected string sampleLineOfData;
protected string getCommand;
protected string setCommand;
[Test]
public void ActivateSendsCorrectCommand()
[SetUp]
public void Setup()
{
_vm.Activate();
Assert.AreEqual(1, _fakeComms.SentItems.Count);
Assert.AreEqual(getCommand, _fakeComms.SentItems[0]);
sampleLineOfData = "0.800,0.200,0.300";
getCommand = "F";
setCommand = "E";
_fakeComms = new FakeComms();
_vm = new AltitudeHoldConfigVm(_fakeComms);
}
[Test]
public void ReceivedDataIgnoredWhenNotActive()
// For whatever reason, for Altitude the properties are sent in P, D ,I
// order, but received in P,I,D order
public void UpdateStringSentIsCorrect()
{
bool inpcFired = false;
_vm.PropertyChanged += delegate { inpcFired = true; };
_vm.P = 1.0F;
_vm.I = 2.0F;
_vm.D = 3.0F;
_fakeComms.FireLineRecieve(sampleLineOfData);
Assert.False(inpcFired);
_vm.UpdateCommand.Execute(null);
Assert.AreEqual(1, _fakeComms.SentItems.Count);
Assert.AreEqual("E1;3;2", _fakeComms.SentItems[0]);
}
[Test]
public void UpdateStringReceivedPopulatesValues()
// For whatever reason, for Altitude the properties are sent in P, D ,I
// order, but received in P,I,D order
public void UpdateStringReceivedPopulatesValuesCorrectly()
{
bool inpcFired = false;
_vm.PropertyChanged += delegate { inpcFired = true; };
_vm.Activate();
_fakeComms.FireLineRecieve(sampleLineOfData);
Assert.True(inpcFired);
Assert.AreEqual(0.8f, _vm.P);
Assert.AreEqual(0.2f, _vm.I);
Assert.AreEqual(0.3f, _vm.D);
}
}
}

3
Configurator/Configurator.Net/Test/ArducopterConfiguratorTest.csproj

@ -42,10 +42,13 @@ @@ -42,10 +42,13 @@
<ItemGroup>
<Compile Include="AcroModeConfigVmTest.cs" />
<Compile Include="AltitudeHoldVmTest.cs" />
<Compile Include="CalibrationOffsetsDataVmTest.cs" />
<Compile Include="MainVmTests.cs" />
<Compile Include="MotorCommandsVmTest.cs" />
<Compile Include="PositionHoldConfigVmTest.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="StableModeConfigVmTest.cs" />
<Compile Include="VmTestBase.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ArducopterConfigurator.csproj">

22
Configurator/Configurator.Net/Test/CalibrationOffsetsDataVmTest.cs

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
using ArducopterConfigurator.PresentationModels;
using NUnit.Framework;
namespace ArducopterConfiguratorTest
{
[TestFixture]
public class CalibrationOffsetsDataVmTest : VmTestBase<CalibrationOffsetsDataVm>
{
[SetUp]
public void Setup()
{
sampleLineOfData = "0.100,0.200,0.300,0.400,0.500,0.600";
getCommand = "J";
setCommand = "I";
_fakeComms = new FakeComms();
_vm = new CalibrationOffsetsDataVm(_fakeComms);
}
}
}

22
Configurator/Configurator.Net/Test/PositionHoldConfigVmTest.cs

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
using ArducopterConfigurator.PresentationModels;
using NUnit.Framework;
namespace ArducopterConfiguratorTest
{
[TestFixture]
public class PositionHoldConfigVmTest : VmTestBase<PositionHoldConfigVm>
{
[SetUp]
public void Setup()
{
sampleLineOfData = "0.015,0.005,0.010,0.015,0.005,0.010,22.000,0.870";
getCommand = "D";
setCommand = "C";
_fakeComms = new FakeComms();
_vm = new PositionHoldConfigVm(_fakeComms);
}
}
}

57
Configurator/Configurator.Net/Test/VmTestBase.cs

@ -0,0 +1,57 @@ @@ -0,0 +1,57 @@
using ArducopterConfigurator;
using NUnit.Framework;
namespace ArducopterConfiguratorTest
{
public abstract class VmTestBase<T> where T : MonitorVm
{
protected T _vm;
protected FakeComms _fakeComms;
protected string sampleLineOfData; // should be taken from a real APM if possible
protected string getCommand;
protected string setCommand;
[Test]
public void ActivateSendsCorrectCommand()
{
_vm.Activate();
Assert.AreEqual(1, _fakeComms.SentItems.Count);
Assert.AreEqual(getCommand, _fakeComms.SentItems[0]);
}
[Test]
public void ReceivedDataIgnoredWhenNotActive()
{
bool inpcFired = false;
_vm.PropertyChanged += delegate { inpcFired = true; };
_fakeComms.FireLineRecieve(sampleLineOfData);
Assert.False(inpcFired);
}
[Test]
public void ReceivedDataIgnoredAfterDeActive()
{
_vm.Activate();
_fakeComms.FireLineRecieve(sampleLineOfData);
_vm.DeActivate();
_fakeComms.FireLineRecieve(sampleLineOfData);
bool inpcFired = false;
_vm.PropertyChanged += delegate { inpcFired = true; };
Assert.False(inpcFired);
}
[Test]
public void UpdateStringReceivedPopulatesValues()
{
bool inpcFired = false;
_vm.PropertyChanged += delegate { inpcFired = true; };
_vm.Activate();
_fakeComms.FireLineRecieve(sampleLineOfData);
Assert.True(inpcFired);
}
}
}
Loading…
Cancel
Save