Add beam shear analysis converting from DTO

This commit is contained in:
Evgeny Redikultsev
2025-06-08 20:02:56 +05:00
parent 0d7f47653b
commit 4845a35ba5
28 changed files with 166 additions and 280 deletions

View File

@@ -1,56 +0,0 @@
using Moq;
using NUnit.Framework;
using StructureHelperCommon.Models.Forces;
using StructureHelperCommon.Models;
using StructureHelperLogics.Models.BeamShears.Logics;
using StructureHelperLogics.Models.BeamShears;
using StructureHelperCommon.Infrastructures.Enums;
namespace StructureHelperTests.UnitTests.BeamShearTests
{
namespace YourNamespace.Tests
{
[TestFixture]
public class GetDirectShearForceLogicTests
{
private Mock<IShiftTraceLogger> _mockLogger;
private Mock<ISumForceByShearLoadLogic> _mockSummaryForceLogic;
private GetDirectShearForceLogic _logic;
[SetUp]
public void Setup()
{
_mockLogger = new Mock<IShiftTraceLogger>();
_mockSummaryForceLogic = new Mock<ISumForceByShearLoadLogic>();
var mockAction = new Mock<IBeamShearAction>();
var mockInclinedSection = new Mock<IInclinedSection>();
var mockShearLoad = new Mock<IBeamSpanLoad>();
mockAction.Setup(a => a.SupportAction.SupportForce.ForceTuple.Qx).Returns(100.0);
mockAction.Setup(a => a.SupportAction.ShearLoads).Returns(new List<IBeamSpanLoad> { mockShearLoad.Object });
mockInclinedSection.Setup(i => i.StartCoord).Returns(2.0);
mockInclinedSection.Setup(i => i.EndCoord).Returns(5.0);
_mockSummaryForceLogic.Setup(s => s.GetSumShearForce(mockShearLoad.Object, 2.0, 5.0)).Returns(new ForceTuple() { Qy = 50.0});
_logic = new GetDirectShearForceLogic(mockAction.Object, mockInclinedSection.Object, LimitStates.ULS, CalcTerms.ShortTerm, _mockLogger.Object, _mockSummaryForceLogic.Object);
}
[Test]
public void GetShearForce_ShouldReturnCorrectShearForce()
{
// Arrange
// Act
double result = _logic.CalculateShearForceTuple().Qy;
// Assert
Assert.That(result, Is.EqualTo(150.0));
_mockLogger.Verify(l => l.AddMessage(It.IsAny<string>(), It.IsAny<TraceLogStatuses>()), Times.AtLeastOnce);
}
}
}
}

View File

@@ -4,6 +4,7 @@ using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Models.Forces;
using StructureHelperCommon.Models;
using StructureHelperLogics.Models.BeamShears;
using StructureHelperCommon.Infrastructures.Enums;
namespace StructureHelperTests.UnitTests.BeamShearTests
{
@@ -12,25 +13,33 @@ namespace StructureHelperTests.UnitTests.BeamShearTests
{
private Mock<IShiftTraceLogger> _mockLogger;
private Mock<ICoordinateByLevelLogic> _mockCoordinateByLevelLogic;
private Mock<IFactoredCombinationProperty> _mockCombination;
private SumConcentratedForceLogic _logic;
[SetUp]
public void Setup()
{
_mockLogger = new Mock<IShiftTraceLogger>();
_mockCoordinateByLevelLogic = new Mock<ICoordinateByLevelLogic>();
_mockCombination = new Mock<IFactoredCombinationProperty>();
_logic = new SumConcentratedForceLogic(_mockCoordinateByLevelLogic.Object, _mockLogger.Object);
}
[Test]
public void GetSumShearForce_ShouldReturnCorrectForce_ForValidConcentratedForce()
{
// Arrange
// Arrange
_mockCombination.Setup(f => f.LimitState).Returns(LimitStates.ULS);
_mockCombination.Setup(f => f.CalcTerm).Returns(CalcTerms.ShortTerm);
_mockCombination.Setup(f => f.LongTermFactor).Returns(0.9);
_mockCombination.Setup(f => f.ULSFactor).Returns(1.2);
var mockConcentratedForce = new Mock<IConcentratedForce>();
mockConcentratedForce.Setup(f => f.ForceCoordinate).Returns(3.0);
mockConcentratedForce.Setup(f => f.ForceValue).Returns(new ForceTuple() { Qy = 100.0 });
mockConcentratedForce.Setup(f => f.LoadRatio).Returns(0.8);
mockConcentratedForce.Setup(f => f.RelativeLoadLevel).Returns(0.5);
mockConcentratedForce.Setup(f => f.CombinationProperty).Returns(_mockCombination.Object);
_mockCoordinateByLevelLogic.Setup(c => c.GetCoordinate(2.0, 5.0, 0.5)).Returns(3.5);
@@ -38,7 +47,7 @@ namespace StructureHelperTests.UnitTests.BeamShearTests
double result = _logic.GetSumShearForce(mockConcentratedForce.Object, 2.0, 5.0).Qy;
// Assert
Assert.That(result, Is.EqualTo(80.0));
Assert.That(result, Is.EqualTo(72.000000000000014d));
_mockLogger.Verify(l => l.AddMessage(It.IsAny<string>(), It.IsAny<TraceLogStatuses>()), Times.AtLeastOnce);
}
@@ -47,7 +56,9 @@ namespace StructureHelperTests.UnitTests.BeamShearTests
{
// Arrange
var mockConcentratedForce = new Mock<IConcentratedForce>();
mockConcentratedForce.Setup(f => f.ForceCoordinate).Returns(6.0);
mockConcentratedForce.Setup(f => f.ForceCoordinate).Returns(6.0);
mockConcentratedForce.Setup(f => f.ForceValue).Returns(new ForceTuple() { Qy = 100.0 });
mockConcentratedForce.Setup(f => f.Name).Returns("Zero_name");
// Act
double result = _logic.GetSumShearForce(mockConcentratedForce.Object, 2.0, 5.0).Qy;

View File

@@ -4,6 +4,7 @@ using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Models.Forces;
using StructureHelperCommon.Models;
using StructureHelperLogics.Models.BeamShears;
using StructureHelperCommon.Infrastructures.Enums;
namespace StructureHelperTests.UnitTests.BeamShearTests
{
@@ -13,25 +14,32 @@ namespace StructureHelperTests.UnitTests.BeamShearTests
private Mock<IShiftTraceLogger> _mockLogger;
private Mock<ICoordinateByLevelLogic> _mockCoordinateByLevelLogic;
private SumDistributedLoadLogic _logic;
private Mock<IFactoredCombinationProperty> _mockCombination;
[SetUp]
[SetUp]
public void Setup()
{
_mockLogger = new Mock<IShiftTraceLogger>();
_mockCoordinateByLevelLogic = new Mock<ICoordinateByLevelLogic>();
_logic = new SumDistributedLoadLogic(_mockCoordinateByLevelLogic.Object, _mockLogger.Object);
_mockCombination = new Mock<IFactoredCombinationProperty>();
_logic = new SumDistributedLoadLogic(_mockCoordinateByLevelLogic.Object, _mockLogger.Object);
}
[Test]
public void GetSumShearForce_ShouldReturnCorrectForce_ForValidDistributedLoad()
{
// Arrange
var mockDistributedLoad = new Mock<IDistributedLoad>();
// Arrange
_mockCombination.Setup(f => f.LimitState).Returns(LimitStates.ULS);
_mockCombination.Setup(f => f.CalcTerm).Returns(CalcTerms.ShortTerm);
_mockCombination.Setup(f => f.LongTermFactor).Returns(0.9);
_mockCombination.Setup(f => f.ULSFactor).Returns(1.2);
var mockDistributedLoad = new Mock<IDistributedLoad>();
mockDistributedLoad.Setup(d => d.StartCoordinate).Returns(1.0);
mockDistributedLoad.Setup(d => d.EndCoordinate).Returns(4.0);
mockDistributedLoad.Setup(d => d.LoadValue).Returns(new ForceTuple() { Qy = 50.0 });
mockDistributedLoad.Setup(d => d.LoadRatio).Returns(0.9);
mockDistributedLoad.Setup(d => d.RelativeLoadLevel).Returns(0.5);
mockDistributedLoad.Setup(d => d.CombinationProperty).Returns(_mockCombination.Object);
_mockCoordinateByLevelLogic.Setup(c => c.GetCoordinate(2.0, 5.0, 0.5)).Returns(4.5);
@@ -39,7 +47,7 @@ namespace StructureHelperTests.UnitTests.BeamShearTests
double result = _logic.GetSumShearForce(mockDistributedLoad.Object, 2.0, 5.0).Qy;
// Assert
Assert.That(result, Is.EqualTo(135.0));
Assert.That(result, Is.EqualTo(121.50000000000001d));
_mockLogger.Verify(l => l.AddMessage(It.IsAny<string>(), It.IsAny<TraceLogStatuses>()), Times.AtLeastOnce);
}
@@ -49,6 +57,7 @@ namespace StructureHelperTests.UnitTests.BeamShearTests
// Arrange
var mockDistributedLoad = new Mock<IDistributedLoad>();
mockDistributedLoad.Setup(d => d.StartCoordinate).Returns(6.0);
mockDistributedLoad.Setup(d => d.LoadValue.Qy).Returns(100);
// Act
double result = _logic.GetSumShearForce(mockDistributedLoad.Object, 2.0, 5.0).Qy;