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 _mockInputData; private Mock _mockTraceLogger; private CheckForceTupleInputDataLogic _checkLogic; [SetUp] public void SetUp() { _mockInputData = new Mock(); _mockTraceLogger = new Mock(); _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(() => _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)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()); _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()); _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(); mockAccuracy.Setup(x => x.IterationAccuracy).Returns(0); mockAccuracy.Setup(x => x.MaxIterationCount).Returns(0); _mockInputData.Setup(x => x.NdmCollection).Returns(new List()); _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(); mockAccuracy.Setup(x => x.IterationAccuracy).Returns(1); mockAccuracy.Setup(x => x.MaxIterationCount).Returns(10); _mockInputData.Setup(x => x.NdmCollection).Returns(new List { new Mock().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)); } } }