Files
DP44/DataPRO/StateMachine.Tests/StatesShould.cs
2026-04-17 14:55:32 -04:00

115 lines
3.8 KiB
C#

using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DTS.DASLib.Service.StateMachine;
using NSubstitute;
using DTS.Common.Interface.DASFactory;
namespace StateMachine.Tests
{
[TestFixture]
public class StatesShould
{
[Test]
public void Instance_ShouldNotBeNull()
{
//Arrange
var sut = States.Instance;
//Act && Assert
Assert.That(sut, Is.Not.Null);
}
[Test]
public void Instance_ShouldBeSame()
{
//Arrange
var sut = States.Instance;
//Act && Assert
Assert.That(sut, Is.Not.Null.And.SameAs(States.Instance));
}
[Test]
public void States_ShouldReturnCorrectInstanceOfState()
{
//Arrange
var sut = States.Instance;
//Act && Assert
Assert.That(sut.Arm.State, Is.EqualTo(State.Arm));
Assert.That(sut.Arming.State, Is.EqualTo(State.Arming));
Assert.That(sut.Configure.State, Is.EqualTo(State.Configure));
Assert.That(sut.ConfigureStart.State, Is.EqualTo(State.ConfigureStart));
Assert.That(sut.Diagnose.State, Is.EqualTo(State.Diagnose));
Assert.That(sut.Download.State, Is.EqualTo(State.Download));
Assert.That(sut.HardwareDiscovery.State, Is.EqualTo(State.HardwareDiscovery));
Assert.That(sut.HardwareDiscoveryStart.State, Is.EqualTo(State.HardwareDiscoveryStart));
Assert.That(sut.Prepare.State, Is.EqualTo(State.Prepare));
Assert.That(sut.Realtime.State, Is.EqualTo(State.Realtime));
Assert.That(sut.RealtimeStart.State, Is.EqualTo(State.RealtimeStart));
}
[Test]
public void GetIDASState_ReturnAllKnownStates()
{
//Arrange
var sut = States.Instance;
//Act & Assert
var states = Enum.GetValues(typeof(State)).Cast<State>();
foreach (var state in states)
{
var dasState = sut.GetIDASState(state);
Assert.That(dasState.State, Is.EqualTo(state));
}
}
[Test]
public void GetIDASState_ShouldThrowException_WithUndefinedState()
{
//Arrange
var sut = States.Instance;
var enumVal = 45;
//Act & Assert
Assert.That(false, Is.EqualTo(Enum.IsDefined(typeof(State), enumVal)));
Assert.That(
() => sut.GetIDASState((State)enumVal)
, Throws.TypeOf<InvalidOperationException>()
.With
.Property("Message")
.EqualTo("Undefined State"));
}
[Test]
public void SetDASFactory_ShouldSetToAnInstanceOfDASFactory()
{
//Arrange
var sut = States.Instance;
var dasFactory = Substitute.For<IDASFactory>();
dasFactory.Language.Returns("En");
//Act
States.SetDASFactory(dasFactory);
//Assert
//Test thal all states have the defined DASFactory instance.
var states = Enum.GetValues(typeof(State)).Cast<State>();
foreach (var state in states)
{
//Depends on GetIDASState_ReturnAllKnownStates , If this test broken first fix GetIDASState_ReturnAllKnownStates
//Isolate the dependency to the GetIDASState_ReturnAllKnownStates test if it's possible
var dasState = sut.GetIDASState(state);
Assert.That(dasState.DASFactory, Is.Not.Null);
Assert.That(dasState.DASFactory.Language, Is.EqualTo("En"));
}
}
}
}