Add Cross-section repositort tests
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperCommon.Models.Forces;
|
||||
using System.Collections.Generic;
|
||||
namespace StructureHelperTests.UnitTests.UpdateStrategiesTests
|
||||
{
|
||||
|
||||
|
||||
[TestFixture]
|
||||
public class HasForceActionUpdateCloningStrategyTests
|
||||
{
|
||||
private Mock<ICloningStrategy> _cloningStrategyMock;
|
||||
private HasForceActionUpdateCloningStrategy _strategy;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
_cloningStrategyMock = new Mock<ICloningStrategy>();
|
||||
_strategy = new HasForceActionUpdateCloningStrategy(_cloningStrategyMock.Object);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Update_WithNullCloningStrategy_ThrowsStructureHelperException()
|
||||
{
|
||||
var targetObjectMock = new Mock<IHasForceActions>();
|
||||
var sourceObjectMock = new Mock<IHasForceActions>();
|
||||
Assert.Throws<StructureHelperException>(() =>
|
||||
{
|
||||
new HasForceActionUpdateCloningStrategy(null).Update(targetObjectMock.Object, sourceObjectMock.Object);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Update_WithNullSourceObject_ThrowsStructureHelperException()
|
||||
{
|
||||
var targetObjectMock = new Mock<IHasForceActions>();
|
||||
Assert.Throws<StructureHelperException>(() =>
|
||||
{
|
||||
_strategy.Update(targetObjectMock.Object, null);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Update_WithNullTargetObject_ThrowsStructureHelperException()
|
||||
{
|
||||
var sourceObjectMock = new Mock<IHasForceActions>();
|
||||
Assert.Throws<StructureHelperException>(() =>
|
||||
{
|
||||
_strategy.Update(null, sourceObjectMock.Object);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Update_WithSameObjects_DoesNotPerformCloning()
|
||||
{
|
||||
var sourceObjectMock = new Mock<IHasForceActions>();
|
||||
_strategy.Update(sourceObjectMock.Object, sourceObjectMock.Object);
|
||||
|
||||
_cloningStrategyMock.Verify(cs => cs.Clone(It.IsAny<object>(), null), Times.Never);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Update_ClonesEachForceActionAndAddsToTargetObject()
|
||||
{
|
||||
// Arrange
|
||||
var targetForceActions = new List<IForceAction>();
|
||||
var targetObjectMock = new Mock<IHasForceActions>();
|
||||
var sourceObjectMock = new Mock<IHasForceActions>();
|
||||
|
||||
var sourceForceActions = new List<IForceAction> { new ForceCombinationByFactor(), new ForceCombinationByFactor() };
|
||||
var clonedForceActions = new List<IForceAction> { new ForceCombinationByFactor(), new ForceCombinationByFactor() };
|
||||
|
||||
sourceObjectMock.SetupGet(s => s.ForceActions).Returns(sourceForceActions);
|
||||
targetObjectMock.SetupGet(t => t.ForceActions).Returns(targetForceActions);
|
||||
|
||||
_cloningStrategyMock.Setup(cs => cs.Clone(sourceForceActions[0], null))
|
||||
.Returns(clonedForceActions[0]);
|
||||
_cloningStrategyMock.Setup(cs => cs.Clone(sourceForceActions[1], null))
|
||||
.Returns(clonedForceActions[1]);
|
||||
|
||||
// Act
|
||||
_strategy.Update(targetObjectMock.Object, sourceObjectMock.Object);
|
||||
|
||||
// Assert
|
||||
Assert.That(targetForceActions, Has.Count.EqualTo(2));
|
||||
Assert.That(targetForceActions, Is.EquivalentTo(clonedForceActions));
|
||||
|
||||
_cloningStrategyMock.Verify(cs => cs.Clone(sourceForceActions[0], null), Times.Once);
|
||||
_cloningStrategyMock.Verify(cs => cs.Clone(sourceForceActions[1], null), Times.Once);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using StructureHelper.Models.Materials;
|
||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperLogics.Models.Materials.Logics;
|
||||
using StructureHelperLogics.Models.Materials;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace StructureHelperTests.UnitTests.UpdateStrategiesTests
|
||||
{
|
||||
|
||||
|
||||
[TestFixture]
|
||||
public class HasMaterialsUpdateCloningStrategyTests
|
||||
{
|
||||
private Mock<ICloningStrategy> _cloningStrategyMock;
|
||||
private HasMaterialsUpdateCloningStrategy _strategy;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
_cloningStrategyMock = new Mock<ICloningStrategy>();
|
||||
_strategy = new HasMaterialsUpdateCloningStrategy(_cloningStrategyMock.Object);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Update_WithNullCloningStrategy_ThrowsStructureHelperException()
|
||||
{
|
||||
var targetObjectMock = new Mock<IHasHeadMaterials>();
|
||||
var sourceObjectMock = new Mock<IHasHeadMaterials>();
|
||||
Assert.Throws<StructureHelperException>(() =>
|
||||
{
|
||||
new HasMaterialsUpdateCloningStrategy(null).Update(targetObjectMock.Object, sourceObjectMock.Object);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Update_WithNullSourceObject_ThrowsStructureHelperException()
|
||||
{
|
||||
var targetObjectMock = new Mock<IHasHeadMaterials>();
|
||||
Assert.Throws<StructureHelperException>(() =>
|
||||
{
|
||||
_strategy.Update(targetObjectMock.Object, null);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Update_WithNullTargetObject_ThrowsStructureHelperException()
|
||||
{
|
||||
var sourceObjectMock = new Mock<IHasHeadMaterials>();
|
||||
Assert.Throws<StructureHelperException>(() =>
|
||||
{
|
||||
_strategy.Update(null, sourceObjectMock.Object);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Update_WithSameObjects_DoesNotPerformCloning()
|
||||
{
|
||||
var sourceObjectMock = new Mock<IHasHeadMaterials>();
|
||||
_strategy.Update(sourceObjectMock.Object, sourceObjectMock.Object);
|
||||
|
||||
_cloningStrategyMock.Verify(cs => cs.Clone(It.IsAny<IHeadMaterial>(), null), Times.Never);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Update_ClonesAndAddsEachMaterialToTarget()
|
||||
{
|
||||
// Arrange
|
||||
var targetMaterials = new List<IHeadMaterial>();
|
||||
var targetObjectMock = new Mock<IHasHeadMaterials>();
|
||||
targetObjectMock.SetupGet(t => t.HeadMaterials).Returns(targetMaterials);
|
||||
|
||||
var sourceMaterials = new List<IHeadMaterial>
|
||||
{
|
||||
Mock.Of<IHeadMaterial>(m => m.Name == "Material1"),
|
||||
Mock.Of<IHeadMaterial>(m => m.Name == "Material2")
|
||||
};
|
||||
var sourceObjectMock = new Mock<IHasHeadMaterials>();
|
||||
sourceObjectMock.SetupGet(s => s.HeadMaterials).Returns(sourceMaterials);
|
||||
|
||||
var clonedMaterial1 = Mock.Of<IHeadMaterial>(m => m.Name == "ClonedMaterial1");
|
||||
var clonedMaterial2 = Mock.Of<IHeadMaterial>(m => m.Name == "ClonedMaterial2");
|
||||
|
||||
_cloningStrategyMock.Setup(cs => cs.Clone(sourceMaterials[0], null)).Returns(clonedMaterial1);
|
||||
_cloningStrategyMock.Setup(cs => cs.Clone(sourceMaterials[1], null)).Returns(clonedMaterial2);
|
||||
|
||||
// Act
|
||||
_strategy.Update(targetObjectMock.Object, sourceObjectMock.Object);
|
||||
|
||||
// Assert
|
||||
//Assert.IsEmpty(targetMaterials, "Target materials should be cleared before adding new ones.");
|
||||
Assert.That(targetMaterials, Has.Count.EqualTo(2));
|
||||
Assert.That(targetMaterials, Contains.Item(clonedMaterial1));
|
||||
Assert.That(targetMaterials, Contains.Item(clonedMaterial2));
|
||||
|
||||
_cloningStrategyMock.Verify(cs => cs.Clone(sourceMaterials[0], null), Times.Once);
|
||||
_cloningStrategyMock.Verify(cs => cs.Clone(sourceMaterials[1], null), Times.Once);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperLogics.NdmCalculations.Primitives.Logics;
|
||||
using StructureHelperLogics.NdmCalculations.Primitives;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace StructureHelperTests.UnitTests.UpdateStrategiesTests
|
||||
{
|
||||
|
||||
|
||||
[TestFixture]
|
||||
public class HasPrimitivesUpdateCloningStrategyTests
|
||||
{
|
||||
private Mock<ICloningStrategy> _cloningStrategyMock;
|
||||
private HasPrimitivesUpdateCloningStrategy _strategy;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
_cloningStrategyMock = new Mock<ICloningStrategy>();
|
||||
_strategy = new HasPrimitivesUpdateCloningStrategy(_cloningStrategyMock.Object);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Update_WithNullCloningStrategy_ThrowsStructureHelperException()
|
||||
{
|
||||
var targetObjectMock = new Mock<IHasPrimitives>();
|
||||
var sourceObjectMock = new Mock<IHasPrimitives>();
|
||||
Assert.Throws<StructureHelperException>(() =>
|
||||
{
|
||||
new HasPrimitivesUpdateCloningStrategy(null).Update(targetObjectMock.Object, sourceObjectMock.Object);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Update_WithNullSourceObject_ThrowsStructureHelperException()
|
||||
{
|
||||
var targetObjectMock = new Mock<IHasPrimitives>();
|
||||
Assert.Throws<StructureHelperException>(() =>
|
||||
{
|
||||
_strategy.Update(targetObjectMock.Object, null);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Update_WithNullTargetObject_ThrowsStructureHelperException()
|
||||
{
|
||||
var sourceObjectMock = new Mock<IHasPrimitives>();
|
||||
Assert.Throws<StructureHelperException>(() =>
|
||||
{
|
||||
_strategy.Update(null, sourceObjectMock.Object);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Update_WithSameObjects_DoesNotPerformCloning()
|
||||
{
|
||||
var sourceObjectMock = new Mock<IHasPrimitives>();
|
||||
_strategy.Update(sourceObjectMock.Object, sourceObjectMock.Object);
|
||||
|
||||
_cloningStrategyMock.Verify(cs => cs.Clone(It.IsAny<INdmPrimitive>(), null), Times.Never);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Update_ProcessesEachPrimitiveCorrectly()
|
||||
{
|
||||
// Arrange
|
||||
ICloningStrategy deepCloningStrategy = new DeepCloningStrategy();
|
||||
var targetPrimitives = new List<INdmPrimitive>();
|
||||
var targetObjectMock = new Mock<IHasPrimitives>();
|
||||
targetObjectMock.SetupGet(t => t.Primitives).Returns(targetPrimitives);
|
||||
|
||||
var sourcePrimitive1 = Mock.Of<INdmPrimitive>(p => p.Name == "sp1" && p.NdmElement == new NdmElement());
|
||||
var sourceHostPrimitive = Mock.Of<INdmPrimitive>(p => p.Name == "shp" && p.NdmElement == new NdmElement());
|
||||
var sourcePrimitive2 = Mock.Of<IRebarNdmPrimitive>(p => p.Name == "sp2" && p.NdmElement == new NdmElement() && p.HostPrimitive == sourceHostPrimitive);
|
||||
var sourcePrimitives = new List<INdmPrimitive>
|
||||
{
|
||||
sourcePrimitive1,
|
||||
sourcePrimitive2
|
||||
};
|
||||
var sourceObjectMock = new Mock<IHasPrimitives>();
|
||||
sourceObjectMock.SetupGet(s => s.Primitives).Returns(sourcePrimitives);
|
||||
|
||||
var clonedPrimitive1 = Mock.Of<INdmPrimitive>(p => p.Name == "cp1" && p.NdmElement == new NdmElement());
|
||||
var clonedPrimitive2 = Mock.Of<IRebarNdmPrimitive>(p => p.Name == "cp2" && p.NdmElement == new NdmElement() && p.HostPrimitive == sourceHostPrimitive);
|
||||
var clonedHostPrimitive = Mock.Of<INdmPrimitive>(p => p.Name == "chp" && p.NdmElement == new NdmElement());
|
||||
|
||||
_cloningStrategyMock.Setup(cs => cs.Clone(sourcePrimitive1, null)).Returns(clonedPrimitive1);
|
||||
_cloningStrategyMock.Setup(cs => cs.Clone(It.Is<INdmPrimitive>(p => p.Name == "sp2"), null)).Returns(clonedPrimitive2);
|
||||
//_cloningStrategyMock.Setup(cs => cs.Clone(sourcePrimitive2, null)).Returns(clonedPrimitive2);
|
||||
_cloningStrategyMock.Setup(cs => cs.Clone(sourcePrimitive2.HostPrimitive, null)).Returns(clonedHostPrimitive);
|
||||
|
||||
// Act
|
||||
_strategy.Update(targetObjectMock.Object, sourceObjectMock.Object);
|
||||
|
||||
// Assert
|
||||
//Assert.IsEmpty(targetPrimitives, "Target primitives should be cleared before adding new ones.");
|
||||
Assert.That(targetPrimitives, Has.Count.EqualTo(2));
|
||||
Assert.That(targetPrimitives, Contains.Item(clonedPrimitive1));
|
||||
Assert.That(targetPrimitives, Contains.Item(clonedPrimitive2));
|
||||
|
||||
_cloningStrategyMock.Verify(cs => cs.Clone(sourcePrimitive1, null), Times.Once);
|
||||
_cloningStrategyMock.Verify(cs => cs.Clone(It.Is<INdmPrimitive>(p => p.Name == "sp2"), null), Times.Once);
|
||||
//_cloningStrategyMock.Verify(cs => cs.Clone(sourcePrimitive2, null), Times.Once);
|
||||
_cloningStrategyMock.Verify(cs => cs.Clone(sourcePrimitive2.HostPrimitive, null), Times.Once);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user