Assert.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. using System;
  2. using System.Diagnostics;
  3. using System.Threading;
  4. using System.Windows;
  5. namespace Standard;
  6. internal static class Assert
  7. {
  8. private static void _Break()
  9. {
  10. Debugger.Break();
  11. }
  12. [Conditional("DEBUG")]
  13. public static void Evaluate(Assert.EvaluateFunction argument)
  14. {
  15. argument();
  16. }
  17. [Obsolete("Use Assert.AreEqual instead of Assert.Equals", false)]
  18. [Conditional("DEBUG")]
  19. public static void Equals<T>(T expected, T actual)
  20. {
  21. }
  22. [Conditional("DEBUG")]
  23. public static void AreEqual<T>(T expected, T actual)
  24. {
  25. if (expected == null)
  26. {
  27. if (actual != null && !actual.Equals(expected))
  28. {
  29. Assert._Break();
  30. return;
  31. }
  32. }
  33. else if (!expected.Equals(actual))
  34. {
  35. Assert._Break();
  36. }
  37. }
  38. [Conditional("DEBUG")]
  39. public static void AreNotEqual<T>(T notExpected, T actual)
  40. {
  41. if (notExpected == null)
  42. {
  43. if (actual == null || actual.Equals(notExpected))
  44. {
  45. Assert._Break();
  46. return;
  47. }
  48. }
  49. else if (notExpected.Equals(actual))
  50. {
  51. Assert._Break();
  52. }
  53. }
  54. [Conditional("DEBUG")]
  55. public static void Implies(bool condition, bool result)
  56. {
  57. if (condition && !result)
  58. {
  59. Assert._Break();
  60. }
  61. }
  62. [Conditional("DEBUG")]
  63. public static void Implies(bool condition, Assert.ImplicationFunction result)
  64. {
  65. if (condition && !result())
  66. {
  67. Assert._Break();
  68. }
  69. }
  70. [Conditional("DEBUG")]
  71. public static void IsNeitherNullNorEmpty(string value)
  72. {
  73. }
  74. [Conditional("DEBUG")]
  75. public static void IsNeitherNullNorWhitespace(string value)
  76. {
  77. if (string.IsNullOrEmpty(value))
  78. {
  79. Assert._Break();
  80. }
  81. if (value.Trim().Length == 0)
  82. {
  83. Assert._Break();
  84. }
  85. }
  86. [Conditional("DEBUG")]
  87. public static void IsNotNull<T>(T value) where T : class
  88. {
  89. if (value == null)
  90. {
  91. Assert._Break();
  92. }
  93. }
  94. [Conditional("DEBUG")]
  95. public static void IsDefault<T>(T value) where T : struct
  96. {
  97. value.Equals(default(T));
  98. }
  99. [Conditional("DEBUG")]
  100. public static void IsNotDefault<T>(T value) where T : struct
  101. {
  102. value.Equals(default(T));
  103. }
  104. [Conditional("DEBUG")]
  105. public static void IsFalse(bool condition)
  106. {
  107. if (condition)
  108. {
  109. Assert._Break();
  110. }
  111. }
  112. [Conditional("DEBUG")]
  113. public static void IsFalse(bool condition, string message)
  114. {
  115. if (condition)
  116. {
  117. Assert._Break();
  118. }
  119. }
  120. [Conditional("DEBUG")]
  121. public static void IsTrue(bool condition)
  122. {
  123. if (!condition)
  124. {
  125. Assert._Break();
  126. }
  127. }
  128. [Conditional("DEBUG")]
  129. public static void IsTrue(bool condition, string message)
  130. {
  131. if (!condition)
  132. {
  133. Assert._Break();
  134. }
  135. }
  136. [Conditional("DEBUG")]
  137. public static void Fail()
  138. {
  139. Assert._Break();
  140. }
  141. [Conditional("DEBUG")]
  142. public static void Fail(string message)
  143. {
  144. Assert._Break();
  145. }
  146. [Conditional("DEBUG")]
  147. public static void IsNull<T>(T item) where T : class
  148. {
  149. if (item != null)
  150. {
  151. Assert._Break();
  152. }
  153. }
  154. [Conditional("DEBUG")]
  155. public static void BoundedDoubleInc(double lowerBoundInclusive, double value, double upperBoundInclusive)
  156. {
  157. if (value < lowerBoundInclusive || value > upperBoundInclusive)
  158. {
  159. Assert._Break();
  160. }
  161. }
  162. [Conditional("DEBUG")]
  163. public static void BoundedInteger(int lowerBoundInclusive, int value, int upperBoundExclusive)
  164. {
  165. if (value < lowerBoundInclusive || value >= upperBoundExclusive)
  166. {
  167. Assert._Break();
  168. }
  169. }
  170. [Conditional("DEBUG")]
  171. public static void IsApartmentState(ApartmentState expectedState)
  172. {
  173. if (Thread.CurrentThread.GetApartmentState() != expectedState)
  174. {
  175. Assert._Break();
  176. }
  177. }
  178. [Conditional("DEBUG")]
  179. public static void NullableIsNotNull<T>(T? value) where T : struct
  180. {
  181. if (value == null)
  182. {
  183. Assert._Break();
  184. }
  185. }
  186. [Conditional("DEBUG")]
  187. public static void NullableIsNull<T>(T? value) where T : struct
  188. {
  189. if (value != null)
  190. {
  191. Assert._Break();
  192. }
  193. }
  194. [Conditional("DEBUG")]
  195. public static void IsNotOnMainThread()
  196. {
  197. if (Application.Current.Dispatcher.CheckAccess())
  198. {
  199. Assert._Break();
  200. }
  201. }
  202. public delegate void EvaluateFunction();
  203. public delegate bool ImplicationFunction();
  204. }