Files
StructureHelper/StructureHelperTests/UnitTests/Calcuators/CheckForceTupleInputDataLogicTests.cs
2024-08-12 12:46:40 +05:00

137 lines
5.3 KiB
C#

using NUnit.Framework;
using Moq;
using System.Collections.Generic;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Models.Calculators;
using StructureHelperCommon.Models;
using StructureHelperLogics.NdmCalculations.Analyses.ByForces.Logics;
using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
using StructureHelperLogics.NdmCalculations.Primitives;
using LoaderCalculator.Data.Ndms;
using StructureHelperCommon.Models.Forces;
namespace StructureHelperTests.UnitTests.Calcuators
{
[TestFixture]
public class CheckForceTupleInputDataLogicTests
{
private Mock<IForceTupleInputData> _mockInputData;
private Mock<IShiftTraceLogger> _mockTraceLogger;
private CheckForceTupleInputDataLogic _checkLogic;
[SetUp]
public void SetUp()
{
_mockInputData = new Mock<IForceTupleInputData>();
_mockTraceLogger = new Mock<IShiftTraceLogger>();
_checkLogic = new CheckForceTupleInputDataLogic(_mockInputData.Object, _mockTraceLogger.Object);
}
[Test]
public void Check_InputDataIsNull_ThrowsStructureHelperException()
{
// Arrange
_checkLogic = new CheckForceTupleInputDataLogic(null, _mockTraceLogger.Object);
// Act & Assert
var ex = Assert.Throws<StructureHelperException>(() => _checkLogic.Check());
Assert.That(ex.Message, Is.EqualTo(ErrorStrings.ParameterIsNull + ": Input data"));
_mockTraceLogger.Verify(x => x.AddMessage(ErrorStrings.ParameterIsNull + ": Input data"), Times.Once);
}
[Test]
public void Check_NdmCollectionIsNullOrEmpty_ReturnsFalseAndLogsError()
{
// Arrange
_mockInputData.Setup(x => x.NdmCollection).Returns((IEnumerable<INdm>)null);
// Act
var result = _checkLogic.Check();
// Assert
Assert.IsFalse(result);
//Assert.That(_checkLogic.CheckResult, Is.EqualTo("Ndm collection is null or empty"));
_mockTraceLogger.Verify(x => x.AddMessage("\nNdm collection is null or empty"), Times.Once);
}
[Test]
public void Check_TupleIsNull_ReturnsFalseAndLogsError()
{
// Arrange
_mockInputData.Setup(x => x.NdmCollection).Returns(new List<INdm>());
_mockInputData.Setup(x => x.ForceTuple).Returns((IForceTuple)null);
// Act
var result = _checkLogic.Check();
// Assert
Assert.IsFalse(result);
//Assert.That(_checkLogic.CheckResult, Is.EqualTo("Force tuple is null"));
_mockTraceLogger.Verify(x => x.AddMessage("\nForce tuple is null"), Times.Once);
}
[Test]
public void Check_AccuracyIsNull_ReturnsFalseAndLogsError()
{
// Arrange
_mockInputData.Setup(x => x.NdmCollection).Returns(new List<INdm>());
_mockInputData.Setup(x => x.ForceTuple).Returns(new ForceTuple());
_mockInputData.Setup(x => x.Accuracy).Returns((IAccuracy)null);
// Act
var result = _checkLogic.Check();
// Assert
Assert.IsFalse(result);
//Assert.That(_checkLogic.CheckResult, Is.EqualTo("Accuracy requirements is not assigned"));
_mockTraceLogger.Verify(x => x.AddMessage("\nAccuracy requirements is not assigned"), Times.Once);
}
[Test]
public void Check_AccuracyValuesAreInvalid_ReturnsFalseAndLogsErrors()
{
// Arrange
var mockAccuracy = new Mock<IAccuracy>();
mockAccuracy.Setup(x => x.IterationAccuracy).Returns(0);
mockAccuracy.Setup(x => x.MaxIterationCount).Returns(0);
_mockInputData.Setup(x => x.NdmCollection).Returns(new List<INdm>());
_mockInputData.Setup(x => x.ForceTuple).Returns(new ForceTuple());
_mockInputData.Setup(x => x.Accuracy).Returns(mockAccuracy.Object);
// Act
var result = _checkLogic.Check();
// Assert
Assert.IsFalse(result);
//Assert.That(_checkLogic.CheckResult, Is.EqualTo("Value of accuracy 0 must be grater than zeroMax number of iteration 0 must be grater than zero"));
_mockTraceLogger.Verify(x => x.AddMessage("\nValue of accuracy 0 must be grater than zero"), Times.Once);
_mockTraceLogger.Verify(x => x.AddMessage("\nMax number of iteration 0 must be grater than zero"), Times.Once);
}
[Test]
public void Check_AllConditionsMet_ReturnsTrue()
{
// Arrange
var mockAccuracy = new Mock<IAccuracy>();
mockAccuracy.Setup(x => x.IterationAccuracy).Returns(1);
mockAccuracy.Setup(x => x.MaxIterationCount).Returns(10);
_mockInputData.Setup(x => x.NdmCollection).Returns(new List<INdm> { new Mock<INdm>().Object });
_mockInputData.Setup(x => x.ForceTuple).Returns(new ForceTuple());
_mockInputData.Setup(x => x.Accuracy).Returns(mockAccuracy.Object);
// Act
var result = _checkLogic.Check();
// Assert
Assert.IsTrue(result);
Assert.That(_checkLogic.CheckResult, Is.EqualTo(string.Empty));
}
}
}