/TestSpss/SpssVariablesCollectionTest.cs

# · C# · 220 lines · 198 code · 12 blank · 10 comment · 0 complexity · c218c112130d12a031dc77052ebf666b MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using Microsoft.VisualStudio.TestTools.UnitTesting;
  4. namespace Spss.Testing
  5. {
  6. /// <summary>
  7. ///This is a test class for Spss.SpssVariablesCollection and is intended
  8. ///to contain all Spss.SpssVariablesCollection Unit Tests
  9. ///</summary>
  10. [TestClass()]
  11. [DeploymentItem("x86", "x86")]
  12. [DeploymentItem("x64", "x64")]
  13. public class SpssVariablesCollectionTest : TestBase
  14. {
  15. private TestContext testContextInstance;
  16. /// <summary>
  17. ///Gets or sets the test context which provides
  18. ///information about and functionality for the current test run.
  19. ///</summary>
  20. public TestContext TestContext
  21. {
  22. get
  23. {
  24. return testContextInstance;
  25. }
  26. set
  27. {
  28. testContextInstance = value;
  29. }
  30. }
  31. [TestMethod]
  32. public void Count()
  33. {
  34. Assert.AreEqual(SpssSafeWrapperTest.Test1VarNames.Length, docRead.Variables.Count);
  35. }
  36. [TestMethod]
  37. public void Enumerate()
  38. {
  39. int i = 0;
  40. foreach (SpssVariable var in docRead.Variables)
  41. {
  42. Assert.IsNotNull(var);
  43. Assert.IsTrue(i < SpssSafeWrapperTest.Test1VarNames.Length, "Too many variables!");
  44. Assert.AreEqual(SpssSafeWrapperTest.Test1VarNames[i], var.Name);
  45. i++;
  46. }
  47. Assert.AreEqual(SpssSafeWrapperTest.Test1VarNames.Length, i);
  48. }
  49. [TestMethod]
  50. public void IndexerByName()
  51. {
  52. SpssVariable var = docRead.Variables[SpssSafeWrapperTest.Test1VarNames[0]];
  53. Assert.IsNotNull(var);
  54. Assert.AreEqual(SpssSafeWrapperTest.Test1VarNames[0], var.Name);
  55. }
  56. [TestMethod]
  57. [ExpectedException(typeof(KeyNotFoundException))]
  58. public void IndexerByNameBad()
  59. {
  60. SpssVariable var = docRead.Variables["some bad var name"];
  61. }
  62. [TestMethod]
  63. [ExpectedException(typeof(KeyNotFoundException))]
  64. public void IndexerByNameEmpty()
  65. {
  66. SpssVariable var = docRead.Variables[string.Empty];
  67. }
  68. [TestMethod]
  69. [ExpectedException(typeof(ArgumentNullException))]
  70. public void IndexerByNameNull()
  71. {
  72. SpssVariable var = docRead.Variables[null];
  73. }
  74. [TestMethod]
  75. public void IndexerByOrdinal()
  76. {
  77. SpssVariable var = docRead.Variables[0];
  78. Assert.IsNotNull(var);
  79. Assert.AreEqual(SpssSafeWrapperTest.Test1VarNames[0], var.Name);
  80. }
  81. [TestMethod]
  82. [ExpectedException(typeof(ArgumentOutOfRangeException))]
  83. public void IndexerByOrdinalNegative()
  84. {
  85. SpssVariable var = docRead.Variables[-1];
  86. }
  87. [TestMethod]
  88. [ExpectedException(typeof(ArgumentOutOfRangeException))]
  89. public void IndexerByOrdinalTooHigh()
  90. {
  91. SpssVariable var = docRead.Variables[4096]; // just some insanely high number
  92. }
  93. [TestMethod]
  94. public void SameVarObjectRepeatedly()
  95. {
  96. SpssVariable var1 = docRead.Variables[0];
  97. SpssVariable var2 = docRead.Variables[0];
  98. Assert.AreSame(var1, var2);
  99. }
  100. [TestMethod]
  101. [ExpectedException(typeof(ArgumentNullException))]
  102. public void AddNull()
  103. {
  104. docRead.Variables.Add(null);
  105. }
  106. [TestMethod]
  107. [ExpectedException(typeof(ArgumentNullException))]
  108. public void InsertNull()
  109. {
  110. docRead.Variables.Insert(0, null);
  111. }
  112. [TestMethod]
  113. [ExpectedException(typeof(SpssVariableNameConflictException))]
  114. public void AddVarWithSameName()
  115. {
  116. SpssVariable var1 = new SpssStringVariable();
  117. var1.Name = "var1";
  118. docWrite.Variables.Add(var1);
  119. SpssVariable var2 = new SpssStringVariable();
  120. var2.Name = "Var1";
  121. docWrite.Variables.Add(var2);
  122. }
  123. [TestMethod]
  124. [ExpectedException(typeof(SpssVariableNameConflictException))]
  125. public void RenameVarToConflictingName()
  126. {
  127. SpssVariable var1 = new SpssStringVariable();
  128. var1.Name = "var1";
  129. docWrite.Variables.Add(var1);
  130. SpssVariable var2 = new SpssStringVariable();
  131. var2.Name = "var2";
  132. docWrite.Variables.Add(var2);
  133. // Now rename one variable to match the name of the other.
  134. // Capitalization differences should still cause an exception.
  135. var2.Name = "Var1";
  136. }
  137. [TestMethod]
  138. public void AddVariableToNewFile()
  139. {
  140. SpssVariable var = new SpssStringVariable();
  141. var.Name = "var1";
  142. docWrite.Variables.Add(var);
  143. Assert.AreEqual(1, docWrite.Variables.Count);
  144. }
  145. [TestMethod]
  146. public void CommitVariableToNewFile()
  147. {
  148. try
  149. {
  150. AddVariableToNewFile();
  151. }
  152. catch (Exception)
  153. {
  154. Assert.Inconclusive("AddVariableToNewFile() failed.");
  155. }
  156. docWrite.CommitDictionary();
  157. }
  158. [TestMethod]
  159. [ExpectedException(typeof(InvalidOperationException))]
  160. public void AddVariableAfterCommit()
  161. {
  162. try
  163. {
  164. CommitVariableToNewFile();
  165. }
  166. catch (Exception)
  167. {
  168. Assert.Inconclusive("AddVariableToNewFileAndCommit() failed.");
  169. }
  170. SpssVariable var = new SpssStringVariable();
  171. var.Name = "anothervar";
  172. docWrite.Variables.Add(var);
  173. }
  174. [TestMethod]
  175. public void CommitVariableWithLabels()
  176. {
  177. SpssNumericVariable var = new SpssNumericVariable();
  178. var.Name = "var1";
  179. var.ValueLabels.Add(1, "Never");
  180. var.ValueLabels.Add(2, "Rarely");
  181. docWrite.Variables.Add(var);
  182. docWrite.CommitDictionary();
  183. docWrite.Close();
  184. }
  185. [TestMethod]
  186. [ExpectedException(typeof(InvalidOperationException))]
  187. public void ChangeLabelAfterCommit()
  188. {
  189. try
  190. {
  191. CommitVariableWithLabels();
  192. }
  193. catch (Exception)
  194. {
  195. Assert.Inconclusive("CommitVariableWithLabels() failed.");
  196. }
  197. SpssNumericVariable var = (SpssNumericVariable)docWrite.Variables[0];
  198. var.ValueLabels[6] = "break";
  199. }
  200. [TestMethod]
  201. public void LookUpLoadedLabels()
  202. {
  203. SpssNumericVariable var = (SpssNumericVariable)docRead.Variables["numLabels"];
  204. Assert.AreEqual(23, var.ValueLabels.Count);
  205. Assert.AreEqual("fattening", var.ValueLabels[1]);
  206. }
  207. }
  208. }