using Moq; using NUnit.Framework; using StructureHelperCommon.Models.Forces; using StructureHelperCommon.Models; using StructureHelperLogics.Models.BeamShears; namespace StructureHelperTests.UnitTests.BeamShearTests { [TestFixture] public class GetShearForceLogicTests { private Mock _mockLogger; private Mock _mockGetFactorLogic; private Mock _mockGetDirectShearForceLogic; private Mock _mockInputData; private ShearForceLogic _logic; [SetUp] public void Setup() { _mockLogger = new Mock(); _mockGetFactorLogic = new Mock(); _mockGetDirectShearForceLogic = new Mock(); _mockInputData = new Mock(); _logic = new ShearForceLogic( _mockInputData.Object, _mockLogger.Object, _mockGetFactorLogic.Object, _mockGetDirectShearForceLogic.Object ); } [Test] public void GetShearForce_ShouldReturnCorrectShearForce() { // Arrange _mockGetFactorLogic.Setup(f => f.GetFactor()).Returns(1.5); _mockGetDirectShearForceLogic.Setup(d => d.CalculateShearForce()).Returns(new ForceTuple() { Qy = 100.0 }); // Act double result = _logic.GetShearForce().Qy; // Assert Assert.That(result, Is.EqualTo(150.0)); _mockLogger.Verify(l => l.AddMessage(It.IsAny(), It.IsAny()), Times.AtLeastOnce); } } }