Files
HandyControl/Net35/HandyControl_Net35/Shell/Standard/Assert.cs
T
2019-01-21 00:43:10 +08:00

233 lines
5.5 KiB
C#

namespace Standard
{
using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Windows;
internal static class Assert
{
private static void _Break()
{
Debugger.Break();
}
[Conditional("DEBUG")]
public static void AreEqual<T>(T expected, T actual)
{
if (expected == null)
{
if ((actual != null) && !actual.Equals(expected))
{
_Break();
}
}
else if (!expected.Equals(actual))
{
_Break();
}
}
[Conditional("DEBUG")]
public static void AreNotEqual<T>(T notExpected, T actual)
{
if (notExpected == null)
{
if ((actual == null) || actual.Equals(notExpected))
{
_Break();
}
}
else if (notExpected.Equals(actual))
{
_Break();
}
}
[Conditional("DEBUG")]
public static void BoundedDoubleInc(double lowerBoundInclusive, double value, double upperBoundInclusive)
{
if ((value < lowerBoundInclusive) || (value > upperBoundInclusive))
{
_Break();
}
}
[Conditional("DEBUG")]
public static void BoundedInteger(int lowerBoundInclusive, int value, int upperBoundExclusive)
{
if ((value < lowerBoundInclusive) || (value >= upperBoundExclusive))
{
_Break();
}
}
[Obsolete("Use Assert.AreEqual instead of Assert.Equals", false), Conditional("DEBUG")]
public static void Equals<T>(T expected, T actual)
{
}
[Conditional("DEBUG")]
public static void Evaluate(EvaluateFunction argument)
{
argument();
}
[Conditional("DEBUG")]
public static void Fail()
{
_Break();
}
[Conditional("DEBUG")]
public static void Fail(string message)
{
_Break();
}
[Conditional("DEBUG")]
public static void Implies(bool condition, ImplicationFunction result)
{
if (condition && !result())
{
_Break();
}
}
[Conditional("DEBUG")]
public static void Implies(bool condition, bool result)
{
if (condition && !result)
{
_Break();
}
}
[Conditional("DEBUG")]
public static void IsApartmentState(ApartmentState expectedState)
{
if (Thread.CurrentThread.GetApartmentState() != expectedState)
{
_Break();
}
}
[Conditional("DEBUG")]
public static void IsDefault<T>(T value) where T: struct
{
value.Equals(default(T));
}
[Conditional("DEBUG")]
public static void IsFalse(bool condition)
{
if (condition)
{
_Break();
}
}
[Conditional("DEBUG")]
public static void IsFalse(bool condition, string message)
{
if (condition)
{
_Break();
}
}
[Conditional("DEBUG")]
public static void IsNeitherNullNorEmpty(string value)
{
}
[Conditional("DEBUG")]
public static void IsNeitherNullNorWhitespace(string value)
{
if (string.IsNullOrEmpty(value))
{
_Break();
}
if (value.Trim().Length == 0)
{
_Break();
}
}
[Conditional("DEBUG")]
public static void IsNotDefault<T>(T value) where T: struct
{
value.Equals(default(T));
}
[Conditional("DEBUG")]
public static void IsNotNull<T>(T value) where T: class
{
if (value == null)
{
_Break();
}
}
[Conditional("DEBUG")]
public static void IsNotOnMainThread()
{
if (Application.Current.Dispatcher.CheckAccess())
{
_Break();
}
}
[Conditional("DEBUG")]
public static void IsNull<T>(T item) where T: class
{
if (item != null)
{
_Break();
}
}
[Conditional("DEBUG")]
public static void IsTrue(bool condition)
{
if (!condition)
{
_Break();
}
}
[Conditional("DEBUG")]
public static void IsTrue(bool condition, string message)
{
if (!condition)
{
_Break();
}
}
[Conditional("DEBUG")]
public static void NullableIsNotNull<T>(T? value) where T: struct
{
if (!value.HasValue)
{
_Break();
}
}
[Conditional("DEBUG")]
public static void NullableIsNull<T>(T? value) where T: struct
{
if (value.HasValue)
{
_Break();
}
}
public delegate void EvaluateFunction();
public delegate bool ImplicationFunction();
}
}