Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

83 lines
2.3 KiB
C#

using System;
using System.Collections.Generic;
using NUnit.Framework;
namespace MonoTests.Common
{
delegate void AssertThrowsDelegate();
static class AssertExtensions
{
public static void AreEqual (byte[] expected, byte[] data, string message)
{
if (expected == null) {
if (data == null)
return;
Assert.Fail ("{0}{1}Expected: null{1}Got: byte array with {2} elements and of rank {3}{1}",
message, Environment.NewLine, data.Length, data.Rank);
}
if (data == null)
Assert.Fail ("{0}{1}Expected: byte array with {2} elements and rank {3}{1}Got: null{1}",
message, Environment.NewLine, expected.Length, expected.Rank);
if (expected.Rank > 1)
Assert.Fail ("Only single-dimensional arrays are supported.");
if (expected.Rank != data.Rank || expected.Length != data.Length)
Assert.Fail ("{0}{1}Expected: byte array with {2} elements and rank {3}{1}Got: byte array with {4} elements and rank {5}{1}",
message, Environment.NewLine, expected.Length, expected.Rank, data.Length, data.Rank);
int max = expected.Length;
for (int i = 0; i < max; i++) {
if (expected[i] != data[i])
Assert.Fail ("{0}{1}Arrays differ at index {2}.{1}Expected 0x{3:X} got 0x{4:X}{1}",
message, Environment.NewLine, i, expected[i], data[i]);
}
}
public static void Throws<ET> (AssertThrowsDelegate code, string message)
{
Throws(typeof(ET), code, message);
}
public static void Throws(Type exceptionType, AssertThrowsDelegate code, string message)
{
if (code == null)
Assert.Fail("No code provided for the test.");
Exception exception = null;
try
{
code();
}
catch (Exception ex)
{
exception = ex;
}
if (exceptionType == null)
{
if (exception == null)
Assert.Fail("{0}{1}Expected: any exception thrown{1}But was: no exception thrown{1}",
message, Environment.NewLine);
return;
}
if (exception == null || exception.GetType() != exceptionType)
Assert.Fail("{0}{1}Expected: {2}{1}But was: {3}{1}{4}{1}",
message,
Environment.NewLine,
exceptionType,
exception == null ? "no exception" : exception.GetType().ToString(),
exception == null ? "no exception" : exception.ToString());
}
public static void Throws(AssertThrowsDelegate code, string message)
{
Throws(null, code, message);
}
}
}