PageRenderTime 26ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 1ms

/Src/Branches/Alpha-20130226/AhpTest/HierarchyTest.cs

http://ahp.codeplex.com
C# | 179 lines | 150 code | 29 blank | 0 comment | 0 complexity | 0a6c8bfed682b8d44ebd165ae6a5d68e MD5 | raw file
  1. using System;
  2. using System.Text;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using Microsoft.VisualStudio.TestTools.UnitTesting;
  6. using Ahp;
  7. namespace AhpTest
  8. {
  9. [TestClass]
  10. public class HierarchyTest
  11. {
  12. [TestMethod]
  13. public void InitialStateTest()
  14. {
  15. Hierarchy hierarchy1 = new Hierarchy();
  16. Assert.IsNotNull(hierarchy1.GoalNode, "After Hierarchy object initialized GoalNode property must be initialized with default value");
  17. Assert.AreEqual("Goal", hierarchy1.GoalNode.Name, "GoalNode default name must be \"Goal\"");
  18. Hierarchy hierarchy2 = new Hierarchy("Other goal");
  19. Assert.AreEqual("Other goal", hierarchy2.GoalNode.Name);
  20. }
  21. [TestMethod]
  22. public void AddAlternativeTest()
  23. {
  24. Hierarchy hierarchy = new Hierarchy();
  25. hierarchy.GoalNode.CriterionNodes.Add(new CriterionNode("Criterion1"));
  26. hierarchy.GoalNode.CriterionNodes.Add(new CriterionNode("Criterion2"));
  27. hierarchy.GoalNode.CriterionNodes.Add(new CriterionNode("Criterion3"));
  28. hierarchy.GoalNode.CriterionNodes[0].SubcriterionNodes.Add(new CriterionNode("Criterion11"));
  29. Alternative alternative1 = new Alternative("Alternative1");
  30. Alternative alternative2 = new Alternative("Alternative2");
  31. Alternative alternative3 = new Alternative("Alternative3");
  32. hierarchy.Alternatives.Add(alternative1);
  33. hierarchy.Alternatives.Add(alternative2);
  34. hierarchy.Alternatives.Add(alternative3);
  35. foreach (CriterionNode lowestCriterion in hierarchy.GoalNode.GetLowestCriterionNodes())
  36. {
  37. Assert.IsNotNull(lowestCriterion.AlternativeNodes[alternative1]);
  38. Assert.IsNotNull(lowestCriterion.AlternativeNodes[alternative2]);
  39. Assert.IsNotNull(lowestCriterion.AlternativeNodes[alternative3]);
  40. }
  41. }
  42. [TestMethod]
  43. public void RemoveAlternativeTest()
  44. {
  45. Hierarchy hierarchy = new Hierarchy();
  46. hierarchy.GoalNode.CriterionNodes.Add(new CriterionNode("Criterion1"));
  47. hierarchy.GoalNode.CriterionNodes.Add(new CriterionNode("Criterion2"));
  48. hierarchy.GoalNode.CriterionNodes.Add(new CriterionNode("Criterion3"));
  49. hierarchy.GoalNode.CriterionNodes[0].SubcriterionNodes.Add(new CriterionNode("Criterion11"));
  50. Alternative alternative1 = new Alternative("Alternative1");
  51. Alternative alternative2 = new Alternative("Alternative2");
  52. Alternative alternative3 = new Alternative("Alternative3");
  53. hierarchy.Alternatives.Add(alternative1);
  54. hierarchy.Alternatives.Add(alternative2);
  55. hierarchy.Alternatives.Add(alternative3);
  56. foreach (CriterionNode lowestCriterion in hierarchy.GoalNode.GetLowestCriterionNodes())
  57. {
  58. Assert.IsNotNull(lowestCriterion.AlternativeNodes[alternative1]);
  59. Assert.IsNotNull(lowestCriterion.AlternativeNodes[alternative2]);
  60. Assert.IsNotNull(lowestCriterion.AlternativeNodes[alternative3]);
  61. }
  62. hierarchy.Alternatives.Remove(alternative1);
  63. foreach (CriterionNode lowestCriterion in hierarchy.GoalNode.GetLowestCriterionNodes())
  64. {
  65. Assert.IsNull(lowestCriterion.AlternativeNodes[alternative1]);
  66. }
  67. }
  68. [TestMethod]
  69. public void ClearAlternativeTest()
  70. {
  71. Hierarchy hierarchy = new Hierarchy();
  72. hierarchy.GoalNode.CriterionNodes.Add(new CriterionNode("Criterion1"));
  73. hierarchy.GoalNode.CriterionNodes.Add(new CriterionNode("Criterion2"));
  74. hierarchy.GoalNode.CriterionNodes.Add(new CriterionNode("Criterion3"));
  75. hierarchy.GoalNode.CriterionNodes[0].SubcriterionNodes.Add(new CriterionNode("Criterion11"));
  76. Alternative alternative1 = hierarchy.Alternatives.Add("Alternative1");
  77. Alternative alternative2 = hierarchy.Alternatives.Add("Alternative2");
  78. Alternative alternative3 = hierarchy.Alternatives.Add("Alternative3");
  79. foreach (CriterionNode lowestCriterion in hierarchy.GoalNode.GetLowestCriterionNodes())
  80. {
  81. Assert.IsTrue(lowestCriterion.AlternativeNodes.ContainsWithAlternative(alternative1));
  82. Assert.IsTrue(lowestCriterion.AlternativeNodes.ContainsWithAlternative(alternative2));
  83. Assert.IsTrue(lowestCriterion.AlternativeNodes.ContainsWithAlternative(alternative3));
  84. }
  85. hierarchy.Alternatives.Clear();
  86. foreach (CriterionNode lowestCriterion in hierarchy.GoalNode.GetLowestCriterionNodes())
  87. {
  88. Assert.IsFalse(lowestCriterion.AlternativeNodes.ContainsWithAlternative(alternative1));
  89. Assert.IsFalse(lowestCriterion.AlternativeNodes.ContainsWithAlternative(alternative2));
  90. Assert.IsFalse(lowestCriterion.AlternativeNodes.ContainsWithAlternative(alternative3));
  91. }
  92. }
  93. [TestMethod]
  94. public void RefreshAlternativeNodesTest()
  95. {
  96. Hierarchy hierarchy = new Hierarchy();
  97. Alternative alternative1 = hierarchy.Alternatives.Add("Alternative1");
  98. Alternative alternative2 = hierarchy.Alternatives.Add("Alternative2");
  99. Alternative alternative3 = hierarchy.Alternatives.Add("Alternative3");
  100. hierarchy.GoalNode.CriterionNodes.Add(new CriterionNode("Criterion1"));
  101. hierarchy.GoalNode.CriterionNodes.Add(new CriterionNode("Criterion2"));
  102. hierarchy.GoalNode.CriterionNodes.Add(new CriterionNode("Criterion3"));
  103. CriterionNode criterion11 = hierarchy.GoalNode.CriterionNodes[0].SubcriterionNodes.Add("Criterion11");
  104. Alternative alternative4 = new Alternative("Alternative4");
  105. criterion11.AlternativeNodes.Add(new AlternativeNode(alternative4));
  106. hierarchy.RefreshAlternativeNodes();
  107. foreach (CriterionNode lowestCriterion in hierarchy.GoalNode.GetLowestCriterionNodes())
  108. {
  109. Assert.IsTrue(lowestCriterion.AlternativeNodes.ContainsWithAlternative(alternative1));
  110. Assert.IsTrue(lowestCriterion.AlternativeNodes.ContainsWithAlternative(alternative2));
  111. Assert.IsTrue(lowestCriterion.AlternativeNodes.ContainsWithAlternative(alternative3));
  112. Assert.IsFalse(lowestCriterion.AlternativeNodes.ContainsWithAlternative(alternative4));
  113. }
  114. }
  115. [TestMethod]
  116. [ExpectedException(typeof(KeyNotFoundException))]
  117. public void AlternativeNodeIndexerWrongAlternativeKeyTest()
  118. {
  119. Hierarchy hierarchy = new Hierarchy();
  120. CriterionNode criterionNode = hierarchy.GoalNode.CriterionNodes.Add("Criterion");
  121. AlternativeNode alternativeNode = hierarchy[new Alternative("WrongKey"), criterionNode];
  122. }
  123. [TestMethod]
  124. [ExpectedException(typeof(KeyNotFoundException))]
  125. public void AlternativeNodeIndexerWrongCriterionKeyTest()
  126. {
  127. Hierarchy hierarchy = new Hierarchy();
  128. Alternative alternative = hierarchy.Alternatives.Add("Alternative");
  129. AlternativeNode alternativeNode = hierarchy[alternative, new CriterionNode("WrongKey")];
  130. }
  131. [TestMethod]
  132. public void AlternativeNodeIndexerTest()
  133. {
  134. Hierarchy hierarchy = new Hierarchy();
  135. Alternative alternative1 = hierarchy.Alternatives.Add("Alternative1");
  136. Alternative alternative2 = hierarchy.Alternatives.Add("Alternative2");
  137. CriterionNode criterion1 = hierarchy.GoalNode.CriterionNodes.Add("Criterion1");
  138. CriterionNode criterion2 = hierarchy.GoalNode.CriterionNodes.Add("Criterion2");
  139. CriterionNode criterion11 = hierarchy.GoalNode.CriterionNodes[0].SubcriterionNodes.Add("Criterion11");
  140. Assert.AreEqual(hierarchy[alternative1, criterion2].Alternative, alternative1);
  141. Assert.AreEqual(hierarchy[alternative1, criterion2].CriterionNode, criterion2);
  142. Assert.AreEqual(hierarchy[alternative1, criterion11].Alternative, alternative1);
  143. Assert.AreEqual(hierarchy[alternative1, criterion11].CriterionNode, criterion11);
  144. Assert.AreEqual(hierarchy[alternative2, criterion2].Alternative, alternative2);
  145. Assert.AreEqual(hierarchy[alternative2, criterion2].CriterionNode, criterion2);
  146. Assert.AreEqual(hierarchy[alternative2, criterion11].Alternative, alternative2);
  147. Assert.AreEqual(hierarchy[alternative1, criterion11].CriterionNode, criterion11);
  148. }
  149. }
  150. }