Analisys manager window was added

This commit is contained in:
RedikultsevEvg
2024-08-20 20:38:01 +05:00
parent 45dbd7a1ca
commit c1b9f80a96
50 changed files with 1036 additions and 281 deletions

View File

@@ -0,0 +1,77 @@
using Moq;
using NUnit.Framework;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperLogics.Models.Materials;
using System;
namespace StructureHelperTests.UnitTests.UpdateStrategiesTests
{
namespace YourNamespace.Tests
{
[TestFixture]
public class ConcreteLibUpdateStrategyTests
{
private Mock<IUpdateStrategy<ILibMaterial>> mockLibUpdateStrategy;
private ConcreteLibUpdateStrategy strategy;
[SetUp]
public void Setup()
{
mockLibUpdateStrategy = new Mock<IUpdateStrategy<ILibMaterial>>();
strategy = new ConcreteLibUpdateStrategy(mockLibUpdateStrategy.Object);
}
[Test]
public void Update_ShouldUpdateTargetObject_WhenSourceAndTargetAreNotTheSame()
{
// Arrange
var targetMock = new Mock<IConcreteLibMaterial>();
var sourceMock = new Mock<IConcreteLibMaterial>();
sourceMock.Setup(s => s.TensionForULS).Returns(false);
sourceMock.Setup(s => s.TensionForSLS).Returns(true);
sourceMock.Setup(s => s.RelativeHumidity).Returns(0.75);
// Act
strategy.Update(targetMock.Object, sourceMock.Object);
// Assert
mockLibUpdateStrategy.Verify(l => l.Update(targetMock.Object, sourceMock.Object), Times.Once);
targetMock.VerifySet(t => t.TensionForULS = false);
targetMock.VerifySet(t => t.TensionForSLS = true);
targetMock.VerifySet(t => t.RelativeHumidity = 0.75);
}
[Test]
public void Update_ShouldNotUpdate_WhenSourceAndTargetAreSame()
{
// Arrange
var targetMock = new Mock<IConcreteLibMaterial>();
// Act
strategy.Update(targetMock.Object, targetMock.Object);
// Assert
mockLibUpdateStrategy.Verify(l => l.Update(It.IsAny<IConcreteLibMaterial>(), It.IsAny<IConcreteLibMaterial>()), Times.Never);
targetMock.VerifySet(t => t.TensionForULS = It.IsAny<bool>(), Times.Never);
targetMock.VerifySet(t => t.TensionForSLS = It.IsAny<bool>(), Times.Never);
targetMock.VerifySet(t => t.RelativeHumidity = It.IsAny<double>(), Times.Never);
}
[Test]
public void Update_ShouldThrowStructureHelperException_WhenObjectsAreOfDifferentTypes()
{
// Arrange
var targetMock = new Mock<IConcreteLibMaterial>();
var sourceMock = new Mock<ConcreteLibMaterial>();
// Act & Assert
Assert.Throws<StructureHelperException>(() => strategy.Update(targetMock.Object, sourceMock.Object));
}
}
}
}

View File

@@ -0,0 +1,104 @@
using Moq;
using NUnit.Framework;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperLogics.NdmCalculations.Cracking;
namespace StructureHelperTests.UnitTests.UpdateStrategiesTests
{
[TestFixture]
public class CrackCalculatorUpdateStrategyTests
{
private Mock<IUpdateStrategy<ICrackCalculatorInputData>> _inputDataUpdateStrategyMock;
private CrackCalculatorUpdateStrategy _crackCalculatorUpdateStrategy;
[SetUp]
public void SetUp()
{
_inputDataUpdateStrategyMock = new Mock<IUpdateStrategy<ICrackCalculatorInputData>>();
_crackCalculatorUpdateStrategy = new CrackCalculatorUpdateStrategy(_inputDataUpdateStrategyMock.Object);
}
[Test]
public void Update_WhenTargetAndSourceAreSameObject_DoesNotCallInputDataUpdateStrategy()
{
// Arrange
var calculator = new Mock<ICrackCalculator>().Object;
// Act
_crackCalculatorUpdateStrategy.Update(calculator, calculator);
// Assert
_inputDataUpdateStrategyMock.Verify(s => s.Update(It.IsAny<ICrackCalculatorInputData>(), It.IsAny<ICrackCalculatorInputData>()), Times.Never);
}
[Test]
public void Update_WhenSourceObjectIsNull_ThrowsArgumentNullException()
{
// Arrange
var targetObject = new Mock<ICrackCalculator>().Object;
// Act & Assert
Assert.Throws<StructureHelperException>(() => _crackCalculatorUpdateStrategy.Update(targetObject, null));
}
[Test]
public void Update_WhenTargetObjectIsNull_ThrowsArgumentNullException()
{
// Arrange
var sourceObject = new Mock<ICrackCalculator>().Object;
// Act & Assert
Assert.Throws<StructureHelperException>(() => _crackCalculatorUpdateStrategy.Update(null, sourceObject));
}
[Test]
public void Update_UpdatesTargetObjectNameAndCallsInputDataUpdateStrategy()
{
// Arrange
var targetObject = new Mock<ICrackCalculator>();
var sourceObject = new Mock<ICrackCalculator>();
var targetInputData = new Mock<ICrackCalculatorInputData>().Object;
var sourceInputData = new Mock<ICrackCalculatorInputData>().Object;
targetObject.SetupAllProperties();
targetObject.Object.InputData = targetInputData;
sourceObject.SetupAllProperties();
sourceObject.Object.InputData = sourceInputData;
sourceObject.Setup(x => x.Name).Returns("Source Name");
// Act
_crackCalculatorUpdateStrategy.Update(targetObject.Object, sourceObject.Object);
// Assert
Assert.AreEqual("Source Name", targetObject.Object.Name);
_inputDataUpdateStrategyMock.Verify(s => s.Update(targetInputData, sourceInputData), Times.Once);
}
[Test]
public void Update_WhenTargetInputDataIsNull_CreatesNewInputDataAndUpdatesIt()
{
// Arrange
var targetObject = new Mock<ICrackCalculator>();
var sourceObject = new Mock<ICrackCalculator>();
var sourceInputData = new Mock<ICrackCalculatorInputData>().Object;
targetObject.SetupAllProperties();
targetObject.Object.InputData = null;
sourceObject.SetupAllProperties();
sourceObject.Object.InputData = sourceInputData;
// Act
_crackCalculatorUpdateStrategy.Update(targetObject.Object, sourceObject.Object);
// Assert
Assert.IsNotNull(targetObject.Object.InputData);
_inputDataUpdateStrategyMock.Verify(s => s.Update(targetObject.Object.InputData, sourceInputData), Times.Once);
}
}
}

View File

@@ -0,0 +1,89 @@
using Moq;
using NUnit.Framework;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Forces;
using StructureHelperLogics.NdmCalculations.Cracking;
using StructureHelperLogics.NdmCalculations.Primitives;
namespace StructureHelperTests.UnitTests.UpdateStrategiesTests
{
[TestFixture]
public class CrackInputDataUpdateStrategyTests
{
[Test]
public void Update_WithValidInput_UpdatesTargetObject()
{
// Arrange
var mockUserCrackInputDataUpdateStrategy = new Mock<IUpdateStrategy<IUserCrackInputData>>();
var targetObject = new Mock<ICrackCalculatorInputData>();
var sourceObject = new Mock<ICrackCalculatorInputData>();
var forceActions = new List<IForceAction> { new Mock<IForceAction>().Object };
var primitives = new List<INdmPrimitive> { new Mock<INdmPrimitive>().Object };
var userCrackInputData = new Mock<IUserCrackInputData>();
sourceObject.Setup(s => s.ForceActions).Returns(forceActions);
sourceObject.Setup(s => s.Primitives).Returns(primitives);
sourceObject.Setup(s => s.UserCrackInputData).Returns(userCrackInputData.Object);
targetObject.Setup(t => t.ForceActions).Returns(new List<IForceAction>());
targetObject.Setup(t => t.Primitives).Returns(new List<INdmPrimitive>());
targetObject.SetupProperty(t => t.UserCrackInputData, new Mock<IUserCrackInputData>().Object);
var strategy = new CrackInputDataUpdateStrategy(mockUserCrackInputDataUpdateStrategy.Object);
// Act
strategy.Update(targetObject.Object, sourceObject.Object);
// Assert
Assert.AreEqual(forceActions, targetObject.Object.ForceActions);
Assert.AreEqual(primitives, targetObject.Object.Primitives);
mockUserCrackInputDataUpdateStrategy.Verify(s => s.Update(It.IsAny<IUserCrackInputData>(), It.IsAny<IUserCrackInputData>()), Times.Once);
}
[Test]
public void Update_WhenTargetAndSourceAreSame_DoesNotUpdate()
{
// Arrange
var mockUserCrackInputDataUpdateStrategy = new Mock<IUpdateStrategy<IUserCrackInputData>>();
var targetObject = new Mock<ICrackCalculatorInputData>();
var strategy = new CrackInputDataUpdateStrategy(mockUserCrackInputDataUpdateStrategy.Object);
// Act
strategy.Update(targetObject.Object, targetObject.Object);
// Assert
mockUserCrackInputDataUpdateStrategy.Verify(s => s.Update(It.IsAny<IUserCrackInputData>(), It.IsAny<IUserCrackInputData>()), Times.Never);
}
[Test]
public void Update_WithNullTarget_ThrowsStructureHelperException()
{
// Arrange
var mockUserCrackInputDataUpdateStrategy = new Mock<IUpdateStrategy<IUserCrackInputData>>();
var sourceObject = new Mock<ICrackCalculatorInputData>();
var strategy = new CrackInputDataUpdateStrategy(mockUserCrackInputDataUpdateStrategy.Object);
// Act & Assert
Assert.Throws<StructureHelperException>(() => strategy.Update(null, sourceObject.Object));
}
[Test]
public void Update_WithNullSource_ThrowsStructureHelperException()
{
// Arrange
var mockUserCrackInputDataUpdateStrategy = new Mock<IUpdateStrategy<IUserCrackInputData>>();
var targetObject = new Mock<ICrackCalculatorInputData>();
var strategy = new CrackInputDataUpdateStrategy(mockUserCrackInputDataUpdateStrategy.Object);
// Act & Assert
Assert.Throws<StructureHelperException>(() => strategy.Update(targetObject.Object, null));
}
}
}

View File

@@ -0,0 +1,98 @@
using NUnit.Framework;
using Moq;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Models.Materials.Libraries;
using StructureHelperCommon.Models.Materials;
using StructureHelperLogics.Models.Materials;
namespace StructureHelperTests.UnitTests.UpdateStrategiesTests
{
[TestFixture]
public class LibMaterialUpdateStrategyTests
{
private Mock<ILibMaterial> mockTargetMaterial;
private Mock<ILibMaterial> mockSourceMaterial;
private LibMaterialUpdateStrategy updateStrategy;
[SetUp]
public void Setup()
{
mockTargetMaterial = new Mock<ILibMaterial>();
mockSourceMaterial = new Mock<ILibMaterial>();
updateStrategy = new LibMaterialUpdateStrategy();
var targetSafetyFactors = new List<IMaterialSafetyFactor>();
mockTargetMaterial.Setup(t => t.SafetyFactors).Returns(targetSafetyFactors);
}
[Test]
public void Update_ShouldThrowException_WhenTargetAndSourceAreDifferentTypes()
{
// Arrange
var mockTarget1 = new ConcreteLibMaterial();
var mockTarget2 = new ReinforcementLibMaterial();
// Act & Assert
Assert.Throws<StructureHelperException>(() => updateStrategy.Update(mockTarget1, mockTarget2));
}
[Test]
public void Update_ShouldCopyMaterialEntityAndMaterialLogic()
{
// Arrange
var materialEntity = new Mock<ILibMaterialEntity>().Object;
var materialLogic = new Mock<IMaterialLogic>().Object;
mockSourceMaterial.Setup(s => s.MaterialEntity).Returns(materialEntity);
mockSourceMaterial.Setup(s => s.MaterialLogic).Returns(materialLogic);
// Act
updateStrategy.Update(mockTargetMaterial.Object, mockSourceMaterial.Object);
// Assert
mockTargetMaterial.VerifySet(t => t.MaterialEntity = materialEntity, Times.Once);
mockTargetMaterial.VerifySet(t => t.MaterialLogic = materialLogic, Times.Once);
}
//[Test]
public void Update_ShouldClearAndCopySafetyFactors()
{
// Arrange
var mockSafetyFactor1 = new Mock<IMaterialSafetyFactor>();
var mockSafetyFactor2 = new Mock<IMaterialSafetyFactor>();
var safetyFactors = new List<IMaterialSafetyFactor> { mockSafetyFactor1.Object, mockSafetyFactor2.Object };
var targetSafetyFactors = new List<IMaterialSafetyFactor>();
mockSourceMaterial.Setup(s => s.SafetyFactors).Returns(safetyFactors);
mockSafetyFactor1.Setup(f => f.Clone()).Returns(mockSafetyFactor1.Object);
mockSafetyFactor2.Setup(f => f.Clone()).Returns(mockSafetyFactor2.Object);
mockTargetMaterial.Setup(t => t.SafetyFactors).Returns(targetSafetyFactors);
// Act
updateStrategy.Update(mockTargetMaterial.Object, mockSourceMaterial.Object);
// Assert
//mockTargetMaterial.Verify(t => t.SafetyFactors.Clear(), Times.Once);
//mockTargetMaterial.Verify(t => t.SafetyFactors.Add(mockSafetyFactor1.Object), Times.Once);
//mockTargetMaterial.Verify(t => t.SafetyFactors.Add(mockSafetyFactor2.Object), Times.Once);
}
[Test]
public void Update_ShouldNotPerformUpdate_WhenObjectsAreReferenceEqual()
{
//Arrange
// Act
updateStrategy.Update(mockTargetMaterial.Object, mockTargetMaterial.Object);
// Assert
mockTargetMaterial.VerifySet(t => t.MaterialEntity = It.IsAny<ILibMaterialEntity>(), Times.Never);
//mockTargetMaterial.Verify(t => t.SafetyFactors.Clear(), Times.Never);
mockTargetMaterial.VerifySet(t => t.MaterialLogic = It.IsAny<IMaterialLogic>(), Times.Never);
}
}
}