public void Calculate_DisplacementVector_SmallNumberOfDegreesOfFreedom_Success()
        {
            Mock <IStiffnessMatrix> stiffnessMatrix = new Mock <IStiffnessMatrix>();

            stiffnessMatrix.Setup(sm => sm.Size).Returns(6);
            Mock <ISpan> span = new Mock <ISpan>();

            SetUpSpan(span);

            VectorAdapter deflectionVector = SetUpDeflectionVector();

            var spanCalculationEngine = new SpanCalculationEngine(span.Object, stiffnessMatrix.Object);

            spanCalculationEngine.CalculateDisplacement(deflectionVector, numberOfDegreesOfFreedom: 0);

            Assert.That(spanCalculationEngine.Displacements[0], Is.EqualTo(0));
            Assert.That(spanCalculationEngine.Displacements[1], Is.EqualTo(0));
            Assert.That(spanCalculationEngine.Displacements[2], Is.EqualTo(0));
            Assert.That(spanCalculationEngine.Displacements[3], Is.EqualTo(0));
            Assert.That(spanCalculationEngine.Displacements[4], Is.EqualTo(0));
            Assert.That(spanCalculationEngine.Displacements[5], Is.EqualTo(0));

            Assert.That(span.Object.LeftNode.HorizontalDeflection.Value, Is.EqualTo(0));
            Assert.That(span.Object.LeftNode.VerticalDeflection.Value, Is.EqualTo(0));
            Assert.That(span.Object.LeftNode.RightRotation.Value, Is.EqualTo(0));
            Assert.That(span.Object.RightNode.HorizontalDeflection.Value, Is.EqualTo(0));
            Assert.That(span.Object.RightNode.VerticalDeflection.Value, Is.EqualTo(0));
            Assert.That(span.Object.RightNode.LeftRotation.Value, Is.EqualTo(0));

            Assert.That(span.Object.LeftNode.LeftRotation, Is.Null);
            Assert.That(span.Object.RightNode.RightRotation, Is.Null);
        }
        public void SpanCalculationEngine_Creation_NullStiffnessMatrix_Success()
        {
            var span = new Mock <ISpan>();

            var spanCalculationEngine = new SpanCalculationEngine(span.Object, null);

            Assert.That(spanCalculationEngine.StiffnessMatrix, Is.Not.Null);
        }
        public void SpanCalculationEngine_Creation_Success()
        {
            var span            = new Mock <ISpan>();
            var stiffnessMatrix = new Mock <IStiffnessMatrix>();

            var spanCalculationEngine = new SpanCalculationEngine(span.Object, stiffnessMatrix.Object);

            Assert.That(spanCalculationEngine.StiffnessMatrix, Is.SameAs(stiffnessMatrix.Object));
        }
        public void Calculate_SpanLoadVector_NodeLoadsIncluded_Success()
        {
            Mock <IStiffnessMatrix> stiffnessMatrix = new Mock <IStiffnessMatrix>();

            stiffnessMatrix.Setup(sm => sm.Size).Returns(6);
            Mock <ISpan> span = SetFakeObjects(includeNoadLoads: true);

            var spanCalculationEngine = new SpanCalculationEngine(span.Object, stiffnessMatrix.Object);

            spanCalculationEngine.CalculateSpanLoadVector();

            Assert.That(spanCalculationEngine.LoadVector[0], Is.EqualTo(28));
            Assert.That(spanCalculationEngine.LoadVector[1], Is.EqualTo(29));
            Assert.That(spanCalculationEngine.LoadVector[2], Is.EqualTo(44));
            Assert.That(spanCalculationEngine.LoadVector[3], Is.EqualTo(4));
            Assert.That(spanCalculationEngine.LoadVector[4], Is.EqualTo(8));
            Assert.That(spanCalculationEngine.LoadVector[5], Is.EqualTo(12));
        }
        public void SpanCalculate_Force_Success()
        {
            Mock <IStiffnessMatrix> stiffnessMatrix = new Mock <IStiffnessMatrix>();

            stiffnessMatrix.Setup(sm => sm.Matrix)
            .Returns(MatrixAdapter.Create(rows: 2, columns: 2, values: new double[4] {
                1, 2, 3, 4
            }));

            Mock <ISpan> span = new Mock <ISpan>();

            var spanCalculationEngine = new SpanCalculationEngine(span.Object, stiffnessMatrix.Object);
            var loadVector            = VectorAdapter.Create(values: new double[2] {
                2, 1
            });
            var displacements = VectorAdapter.Create(values: new double[2] {
                1, 3
            });

            spanCalculationEngine.CalculateForce(loadVector, displacements);

            Assert.That(spanCalculationEngine.Forces[0], Is.EqualTo(12));
            Assert.That(spanCalculationEngine.Forces[1], Is.EqualTo(15));
        }