VersionTest.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. //
  2. // VersionTest.cs - NUnit Test Cases for the System.Version class
  3. //
  4. // author:
  5. // Duco Fijma ([email protected])
  6. //
  7. // (C) 2002 Duco Fijma
  8. //
  9. using NUnit.Framework;
  10. using System;
  11. namespace MonoTests.System
  12. {
  13. public class VersionTest : TestCase
  14. {
  15. public VersionTest () {}
  16. public void TestCtors ()
  17. {
  18. Version v1;
  19. bool exception;
  20. /*
  21. v1 = new Version ();
  22. AssertEquals ("A1", 0, v1.Major);
  23. AssertEquals ("A2", 0, v1.Minor);
  24. AssertEquals ("A3", -1, v1.Build);
  25. AssertEquals ("A4", -1, v1.Revision);
  26. */
  27. v1 = new Version (23, 7);
  28. AssertEquals ("A5", 23, v1.Major);
  29. AssertEquals ("A6", 7, v1.Minor);
  30. AssertEquals ("A7", -1, v1.Build);
  31. AssertEquals ("A8", -1, v1.Revision);
  32. v1 = new Version (23, 7, 99);
  33. AssertEquals ("A9", 23, v1.Major);
  34. AssertEquals ("A10", 7, v1.Minor);
  35. AssertEquals ("A11", 99, v1.Build);
  36. AssertEquals ("A12", -1, v1.Revision);
  37. v1 = new Version (23, 7, 99, 42);
  38. AssertEquals ("A13", 23, v1.Major);
  39. AssertEquals ("A14", 7, v1.Minor);
  40. AssertEquals ("A15", 99, v1.Build);
  41. AssertEquals ("A16", 42, v1.Revision);
  42. try {
  43. v1 = new Version (23, -1);
  44. exception = false;
  45. }
  46. catch (ArgumentOutOfRangeException) {
  47. exception = true;
  48. }
  49. Assert ("A17", exception);
  50. try {
  51. v1 = new Version (23, 7, -1);
  52. exception = false;
  53. }
  54. catch (ArgumentOutOfRangeException) {
  55. exception = true;
  56. }
  57. Assert ("A18", exception);
  58. try {
  59. v1 = new Version (23, 7, 99, -1);
  60. exception = false;
  61. }
  62. catch (ArgumentOutOfRangeException) {
  63. exception = true;
  64. }
  65. Assert ("A19", exception);
  66. }
  67. public void TestStringCtor ()
  68. {
  69. Version v1;
  70. bool exception;
  71. v1 = new Version("1.42.79");
  72. AssertEquals ("A1", 1, v1.Major);
  73. AssertEquals ("A2", 42, v1.Minor);
  74. AssertEquals ("A3", 79, v1.Build);
  75. AssertEquals ("A4", -1, v1.Revision);
  76. try {
  77. v1 = new Version ("1.42.-79");
  78. exception = false;
  79. }
  80. catch (ArgumentOutOfRangeException) {
  81. exception = true;
  82. }
  83. Assert ("A5", exception);
  84. try {
  85. v1 = new Version ("1");
  86. exception = false;
  87. }
  88. catch (ArgumentException) {
  89. exception = true;
  90. }
  91. Assert ("A6", exception);
  92. try {
  93. v1 = new Version ("1.2.3.4.5");
  94. exception = false;
  95. }
  96. catch (ArgumentException) {
  97. exception = true;
  98. }
  99. Assert ("A7", exception);
  100. try {
  101. v1 = new Version ((string) null);
  102. exception = false;
  103. }
  104. catch (ArgumentNullException) {
  105. exception = true;
  106. }
  107. Assert ("A6", exception);
  108. }
  109. public void TestClone ()
  110. {
  111. Version v1 = new Version (1, 2, 3, 4);
  112. Version v2 = (Version) v1.Clone ();
  113. Assert ("A1", v1.Equals (v2));
  114. Assert ("A2", !ReferenceEquals (v1, v2));
  115. }
  116. public void TestCompareTo ()
  117. {
  118. Assert ("A1", new Version (1, 2).CompareTo (new Version (1, 1)) > 0);
  119. Assert ("A2", new Version (1, 2, 3).CompareTo (new Version (2, 2, 3)) < 0);
  120. Assert ("A3", new Version (1, 2, 3, 4).CompareTo (new Version (1, 2, 2, 1)) > 0);
  121. Assert ("A4", new Version (1, 3).CompareTo (new Version (1, 2, 2, 1)) > 0);
  122. Assert ("A5", new Version (1, 2, 2).CompareTo (new Version (1, 2, 2, 1)) < 0);
  123. Assert ("A6", new Version (1, 2).CompareTo (new Version (1, 2)) == 0);
  124. Assert ("A7", new Version (1, 2, 3).CompareTo (new Version (1, 2, 3)) == 0);
  125. Assert ("A8", new Version (1, 1) < new Version (1, 2));
  126. Assert ("A9", new Version (1, 2) <= new Version (1, 2));
  127. Assert ("A10", new Version (1, 2) <= new Version (1, 3));
  128. Assert ("A11", new Version (1, 2) >= new Version (1, 2));
  129. Assert ("A12", new Version (1, 3) >= new Version (1, 2));
  130. Assert ("A13", new Version (1, 3) > new Version (1, 2));
  131. Version v1 = new Version(1, 2);
  132. bool exception;
  133. // LAMESPEC: Docs say this should throw a ArgumentNullException,
  134. // but it simply works. Seems any version is subsequent to null
  135. Assert ("A14:", v1.CompareTo (null) > 0);
  136. try {
  137. v1.CompareTo ("A string is not a version");
  138. exception = false;
  139. }
  140. catch (ArgumentException) {
  141. exception = true;
  142. }
  143. Assert ("A15", exception);
  144. }
  145. public void TestEquals ()
  146. {
  147. Version v1 = new Version (1, 2);
  148. Version v2 = new Version (1, 2, 3, 4);
  149. Version v3 = new Version (1, 2, 3, 4);
  150. AssertEquals ("A1", true, v2.Equals (v3));
  151. AssertEquals ("A2", true, v2.Equals (v2));
  152. AssertEquals ("A3", false, v1.Equals (v3));
  153. AssertEquals ("A4", true, v2 == v3);
  154. AssertEquals ("A5", true, v2 == v2);
  155. AssertEquals ("A6", false, v1 == v3);
  156. AssertEquals ("A7", false, v2.Equals ((Version) null));
  157. AssertEquals ("A8", false, v2.Equals ("A string"));
  158. }
  159. public void TestToString ()
  160. {
  161. Version v1 = new Version (1,2);
  162. Version v2 = new Version (1,2,3);
  163. Version v3 = new Version (1,2,3,4);
  164. AssertEquals ("A1", "1.2", v1.ToString ());
  165. AssertEquals ("A2", "1.2.3", v2.ToString ());
  166. AssertEquals ("A3", "1.2.3.4", v3.ToString ());
  167. AssertEquals ("A4", "" , v3.ToString (0));
  168. AssertEquals ("A5", "1" , v3.ToString (1));
  169. AssertEquals ("A6", "1.2" , v3.ToString (2));
  170. AssertEquals ("A7", "1.2.3" , v3.ToString (3));
  171. AssertEquals ("A8", "1.2.3.4" , v3.ToString (4));
  172. bool exception;
  173. try {
  174. v2.ToString (4);
  175. exception = false;
  176. }
  177. catch (ArgumentException) {
  178. exception = true;
  179. }
  180. Assert ("A9", exception);
  181. try {
  182. v3.ToString (42);
  183. exception = false;
  184. }
  185. catch (ArgumentException) {
  186. exception = true;
  187. }
  188. Assert ("A10", exception);
  189. }
  190. }
  191. }