public void PairwiseComparison_Constructor_ValidAlternatives_InitsImportancesPrioritiesAndLMax() { //Arrange var alternative1 = new AlternativeNode(new Alternative()); var alternative2 = new AlternativeNode(new Alternative()); var alternative3 = new AlternativeNode(new Alternative()); var alternatives = new List <AlternativeNode>() { alternative1, alternative2, alternative3 }; //Act var comparison = new PairwiseComparison(alternatives); //Assert foreach (var node1 in alternatives) { foreach (var node2 in alternatives) { Assert.AreEqual(1M, comparison[node1, node2]); } } foreach (var node in alternatives) { Assert.AreEqual(1M / 3, comparison[node]); } Assert.AreEqual(3, comparison.LMax); }
public void PairwiseComparison_Constructor_NotUniqueAlternatives_ThrowsInvalidOperationException() { //Arrange var alternative = new AlternativeNode(new Alternative()); var alternatives = new List <AlternativeNode>() { alternative, alternative }; Exception exception = null; //Act try { var comparison = new PairwiseComparison(alternatives); } catch (Exception e) { exception = e; } //Assert Assert.IsNotNull(exception); Assert.IsInstanceOfType(exception, typeof(InvalidOperationException)); Assert.AreEqual("Minimum 2 unique nodes are expected for pairwise comparison.", exception.Message); }
public void AlternativeNode_Name_ReturnsAlternativeName() { //Arange => Act var alternativeNode = new AlternativeNode(new Alternative("Alternative")); //Assert Assert.AreEqual("Alternative", alternativeNode.Name); }
public void CriterionNode_CriterionNode_SetsCriterionNode() { //Arrange var alternativeNode = new AlternativeNode(new Alternative()); var criterion = new CriterionNode(); //Act alternativeNode.CriterionNode = criterion; //Assert Assert.AreEqual(criterion, alternativeNode.CriterionNode); Assert.IsTrue(criterion.AlternativeNodes.Contains(alternativeNode)); }
public void CriterionNode_CriterionNode_ExistingCriterion_SetsCriterionNodeToNull() { //Arrange var alternativeNode = new AlternativeNode(new Alternative()); var criterion = new CriterionNode(); //Act alternativeNode.CriterionNode = criterion; alternativeNode.CriterionNode = null; //Arrange Assert.IsNull(alternativeNode.CriterionNode); Assert.IsFalse(criterion.AlternativeNodes.Contains(alternativeNode)); }
public void CriterionNode_CriterionNode_ExistingCriterion_ChangesCriterionNode() { //Arrange var alternativeNode = new AlternativeNode(new Alternative()); var criterion = new CriterionNode(); var criterionNew = new CriterionNode(); //Act alternativeNode.CriterionNode = criterion; alternativeNode.CriterionNode = criterionNew; //Arrange Assert.IsFalse(criterion.AlternativeNodes.Contains(alternativeNode)); Assert.AreEqual(criterionNew, alternativeNode.CriterionNode); Assert.IsTrue(criterionNew.AlternativeNodes.Contains(alternativeNode)); }
public void AlternativeNode_Constructor_NullAlternative_ThrowsException() { //Arrange Exception exception = null; //Act try { var alternative = new AlternativeNode(null); } catch (Exception e) { exception = e; } //Assert Assert.IsNotNull(exception); Assert.IsInstanceOfType(exception, typeof(ArgumentException)); }
public void AlternativeNode_Name_Setter_ThrowsException() { //Arrange var alternativeNode = new AlternativeNode(new Alternative("Alternative")); Exception exception = null; //Act try { alternativeNode.Name = "New alternative"; } catch (Exception e) { exception = e; } //Assert Assert.IsNotNull(exception); Assert.IsInstanceOfType(exception, typeof(InvalidOperationException)); Assert.AreEqual(exception.Message, "Changing Name property of AlternativeNode object directly is not allowed. Change Name property of correspondent Alternative object instead."); }