예제 #1
0
        public void Node_NodeChangedAndRelevantPropertyOfNewNodeChanged_ExpectPropertiesChangedEventRaised()
        {
            //Arrange
            var modelProblem = new ModelProblem("test");

            var node1 = modelProblem.AddNode();
            var node2 = modelProblem.AddNode();

            var modelForce = modelProblem.AddForce(node1);

            var nodeViewModel1 = new NodeViewModel(node1);
            var nodeViewModel2 = new NodeViewModel(node2);

            var forceViewModel = new ForceViewModel(modelForce, nodeViewModel1);

            forceViewModel.Node = nodeViewModel2;
            var eventChecker = new PropertyChangedEventChecker(forceViewModel);

            //Act
            nodeViewModel2.X = 123;

            //Assert
            Assert.That(eventChecker.PropertiesRaised, Is.EqualTo(new[]
            {
                "Node",
                "ResultGeometry"
            }));
        }
예제 #2
0
        private static IModelNode BuildTestNode()
        {
            var modelProblem = new ModelProblem("test");

            var node = modelProblem.AddNode();

            return(node);
        }
예제 #3
0
        public void AddForce_NullNode_ExpectArgumentNullException()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            //Act
            //Assert
            Assert.Throws <ArgumentNullException>(() => modelProblem.AddForce(null));
        }
        private static IModelElement BuildElement()
        {
            var modelProblem = new ModelProblem("test");

            var node1 = modelProblem.AddNode();
            var node2 = modelProblem.AddNode();

            return(modelProblem.AddElement(node1, node2));
        }
예제 #5
0
        public void DeleteMaterial_NullMaterial_ExpectArgumentNullException()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            //Act
            //Assert
            Assert.Throws <ArgumentNullException>(() => modelProblem.DeleteMaterial(null));
        }
예제 #6
0
        public void AddNode_EmptyProblem_ExpectNodeIdCorrectlyInitialized()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            //Act
            var node = modelProblem.AddNode();

            //Assert
            Assert.That(node.Id, Is.EqualTo(1));
        }
예제 #7
0
        public void AddMaterial_EmptyProblem_ExpectMaterialIdCorrectlyInitialized()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            //Act
            var material = modelProblem.AddMaterial();

            //Assert
            Assert.That(material.Id, Is.EqualTo(1));
        }
예제 #8
0
        public void AddMaterial_EmptyProblem_ExpectMaterialAddedToCollection()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            //Act
            var material = modelProblem.AddMaterial();

            //Assert
            Assert.That(modelProblem.Materials.Contains(material), Is.True);
        }
예제 #9
0
        public void DeleteMaterial_MaterialIsUsedByElement_ExpectInvalidOperationException()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            var element = modelProblem.AddElement(modelProblem.AddNode(), modelProblem.AddNode());

            //Act
            //Assert
            Assert.Throws <InvalidOperationException>(() => modelProblem.DeleteMaterial(element.Material));
        }
예제 #10
0
        public void AddForce_InvalidOriginNode_ExpectInvalidOperationException()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            var node = new ModelNode(new ModelProblem("otherProblem"), 123);

            //Act
            //Assert
            Assert.Throws <InvalidOperationException>(() => modelProblem.AddForce(node));
        }
예제 #11
0
        public void AddNode_EmptyProblem_ExpectNodeAddedToCollection()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            //Act
            var node = modelProblem.AddNode();

            //Assert
            Assert.That(modelProblem.Nodes.Contains(node), Is.True);
        }
예제 #12
0
        public void AddElement_NullDestinationNode_ExpectArgumentNullException()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            var node = modelProblem.AddNode();

            //Act
            //Assert
            Assert.Throws <ArgumentNullException>(() => modelProblem.AddElement(node, null));
        }
예제 #13
0
        public void AddElement_BothNodesAreTheSame_ExpectInvalidOperationException()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            var origin = modelProblem.AddNode();

            //Act
            //Assert
            Assert.Throws <InvalidOperationException>(() => modelProblem.AddElement(origin, origin));
        }
예제 #14
0
        private static IModelProblem BuildProblem(ProblemMemento problemMemento)
        {
            var modelProblem = new ModelProblem(problemMemento.Name);

            Dictionary <int, IModelNode>     nodesDictionary     = new Dictionary <int, IModelNode>();
            Dictionary <int, IModelMaterial> materialsDictionary = new Dictionary <int, IModelMaterial>();

            foreach (var nodeMemento in problemMemento.Nodes.OrderBy(x => x.Id))
            {
                var modelNode = modelProblem.AddNode();

                modelNode.IsXFixed      = nodeMemento.IsXFixed;
                modelNode.IsYFixed      = nodeMemento.IsYFixed;
                modelNode.IsZFixed      = nodeMemento.IsZFixed;
                modelNode.Coordinates.X = nodeMemento.X;
                modelNode.Coordinates.Y = nodeMemento.Y;
                modelNode.Coordinates.Z = nodeMemento.Z;

                nodesDictionary.Add(nodeMemento.Id, modelNode);
            }

            foreach (var forceMemento in problemMemento.Forces.OrderBy(x => x.Id))
            {
                var applicationNode = nodesDictionary[forceMemento.NodeId];

                var modelForce = modelProblem.AddForce(applicationNode);
                modelForce.ApplicationVector.X = forceMemento.ApplicationVectorX;
                modelForce.ApplicationVector.Y = forceMemento.ApplicationVectorY;
                modelForce.ApplicationVector.Z = forceMemento.ApplicationVectorZ;
            }

            foreach (var mementoMaterial in problemMemento.Materials.OrderBy(x => x.Id))
            {
                var modelMaterial = modelProblem.AddMaterial();

                modelMaterial.Name          = mementoMaterial.Name;
                modelMaterial.YoungsModulus = mementoMaterial.YoungsModulus;

                materialsDictionary.Add(mementoMaterial.Id, modelMaterial);
            }

            foreach (var elementMemento in problemMemento.Elements.OrderBy(x => x.Id))
            {
                var modelMaterial        = materialsDictionary[elementMemento.MaterialId];
                var originModelNode      = nodesDictionary[elementMemento.OriginNodeId];
                var destinationModelNode = nodesDictionary[elementMemento.DestinationNodeId];

                var modelElement = modelProblem.AddElement(originModelNode, destinationModelNode);
                modelElement.Material         = modelMaterial;
                modelElement.CrossSectionArea = elementMemento.CrossSectionArea;
            }

            return(modelProblem);
        }
예제 #15
0
        public void SerializeProblem_NullFilePath_ThrowsArgumentException()
        {
            //Arrange
            var filesystem        = new FakeFileSystem();
            var problemSerializer = new ProblemSerializer(filesystem);

            var modelProblem = new ModelProblem("test");

            //Act
            //Assert
            Assert.Throws <ArgumentException>(() => problemSerializer.SerializeProblem(modelProblem, null));
        }
예제 #16
0
        private static (NodeViewModel, IModelForce) BuildTestForce()
        {
            var modelProblem = new ModelProblem("test");

            var node = modelProblem.AddNode();

            var force = modelProblem.AddForce(node);

            var nodeViewModel = new NodeViewModel(node);

            return(nodeViewModel, force);
        }
예제 #17
0
        public void Ctor_ExpectPropertiesCorrectlyInitialized()
        {
            //Arrange
            //Act
            var modelProblem = new ModelProblem("problem name");

            //Assert
            Assert.That(modelProblem.Name, Is.EqualTo("problem name"));
            Assert.That(modelProblem.Nodes, Is.Empty);
            Assert.That(modelProblem.Elements, Is.Empty);
            Assert.That(modelProblem.Forces, Is.Empty);
        }
예제 #18
0
        public void DeleteNode_NodeIsUsedByElementInDestinationNode_ExpectInvalidOperationException()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            var node    = modelProblem.AddNode();
            var element = modelProblem.AddElement(modelProblem.AddNode(), node);

            //Act
            //Assert
            Assert.Throws <InvalidOperationException>(() => modelProblem.DeleteNode(node));
        }
예제 #19
0
        public void AddElement_InvalidOriginNode_ExpectInvalidOperationException()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            var origin      = new ModelNode(new ModelProblem("otherProblem"), 123);
            var destination = modelProblem.AddNode();

            //Act
            //Assert
            Assert.Throws <InvalidOperationException>(() => modelProblem.AddElement(origin, destination));
        }
예제 #20
0
        public void DeleteNode_NodeDoesNotExistInProblem_ExpectNothingHappens()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            var strayNode = new ModelNode(new ModelProblem("otherProblem"), 666);

            //Act
            modelProblem.DeleteNode(strayNode);

            //Assert
            Assert.That(modelProblem.Nodes, Is.Empty);
        }
예제 #21
0
        public void AddForce_ForceWithSameNodeAlreadyExists_ExpectInvalidOperationException()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            var node = modelProblem.AddNode();

            modelProblem.AddForce(node);

            //Act
            //Assert
            Assert.Throws <InvalidOperationException>(() => modelProblem.AddForce(node));
        }
예제 #22
0
        public void DeleteMaterial_MaterialDoesExistInProblem_ExpectMaterialRemovedFromCollection()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            var material = modelProblem.AddMaterial();

            //Act
            modelProblem.DeleteMaterial(material);

            //Assert
            Assert.That(modelProblem.Materials, Is.Empty);
        }
예제 #23
0
        public void DeleteNode_NodeDoesExistInProblem_ExpectNodeRemovedFromCollection()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            var node = modelProblem.AddNode();

            //Act
            modelProblem.DeleteNode(node);

            //Assert
            Assert.That(modelProblem.Nodes, Is.Empty);
        }
예제 #24
0
        public void DeleteForce_ForceDoesExistInProblem_ExpectForceRemovedFromCollection()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            var force = modelProblem.AddForce(modelProblem.AddNode());

            //Act
            modelProblem.DeleteForce(force);

            //Assert
            Assert.That(modelProblem.Forces, Is.Empty);
        }
예제 #25
0
        public void ValidateElements_MakeElementHaveSameNodeAsDestinationAndOrigin_ExpectInvalidOperationException()
        {
            //Arrange
            ModelProblem problem = new ModelProblem("problem");

            var node1 = problem.AddNode();
            var node2 = problem.AddNode();

            var element = problem.AddElement(node1, node2);

            //Act
            //Assert
            Assert.Throws <InvalidOperationException>(() => element.OriginNode = node2);
        }
예제 #26
0
        public void AddElement_EmptyProblem_ExpectElementMaterialAddedToCollection()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            var origin      = modelProblem.AddNode();
            var destination = modelProblem.AddNode();

            //Act
            var element = modelProblem.AddElement(origin, destination);

            //Assert
            Assert.That(modelProblem.Materials.Contains(element.Material), Is.True);
        }
예제 #27
0
        public void AddElement_EmptyProblem_ExpectElementIdCorrectlyInitialized()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            var origin      = modelProblem.AddNode();
            var destination = modelProblem.AddNode();

            //Act
            var element = modelProblem.AddElement(origin, destination);

            //Assert
            Assert.That(element.Id, Is.EqualTo(1));
        }
예제 #28
0
        public void DeleteMaterial_MaterialDoesNotExistInProblem_ExpectNothingHappens()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            var otherProblem  = new ModelProblem("otherProblem");
            var strayMaterial = new ModelMaterial(otherProblem, 666, "strayMaterial", 1);

            //Act
            modelProblem.DeleteMaterial(strayMaterial);

            //Assert
            Assert.That(modelProblem.Materials, Is.Empty);
        }
예제 #29
0
        public void DeleteForce_ForceDoesNotExistInProblem_ExpectNothingHappens()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            var otherProblem = new ModelProblem("otherProblem");
            var strayForce   = new ModelForce(otherProblem, 345, new ModelNode(otherProblem, 1234));

            //Act
            modelProblem.DeleteForce(strayForce);

            //Assert
            Assert.That(modelProblem.Forces, Is.Empty);
        }
예제 #30
0
        public void DeleteElement_ElementDoesNotExistInProblem_ExpectNothingHappens()
        {
            //Arrange
            var modelProblem = new ModelProblem("problem");

            var otherProblem = new ModelProblem("otherProblem");
            var strayElement = new ModelBarElement(otherProblem, 1234, new ModelNode(otherProblem, 123), new ModelNode(otherProblem, 1234));

            //Act
            modelProblem.DeleteElement(strayElement);

            //Assert
            Assert.That(modelProblem.Elements, Is.Empty);
        }