This repository has been archived by the owner on Aug 2, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 26
/
ThrowsNothingConstraint.cs
69 lines (62 loc) · 2.51 KB
/
ThrowsNothingConstraint.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// ****************************************************************
// Copyright 2008, Charlie Poole
// This is free software licensed under the NUnit license. You may
// obtain a copy of the license at http://nunit.org
// ****************************************************************
using System;
namespace NUnit.Framework.Constraints
{
/// <summary>
/// ThrowsNothingConstraint tests that a delegate does not
/// throw an exception.
/// </summary>
public class ThrowsNothingConstraint : Constraint
{
private Exception caughtException;
/// <summary>
/// Test whether the constraint is satisfied by a given value
/// </summary>
/// <param name="actual">The value to be tested</param>
/// <returns>True if no exception is thrown, otherwise false</returns>
public override bool Matches(object actual)
{
caughtException = ExceptionInterceptor.Intercept(actual);
return caughtException == null;
}
/// <summary>
/// Test whether the constraint is satisfied by a given delegate
/// </summary>
/// <param name="del">Delegate returning the value to be tested</param>
/// <returns>True if no exception is thrown, otherwise false</returns>
#if CLR_2_0 || CLR_4_0
public override bool Matches<T>(ActualValueDelegate<T> del)
{
return Matches(new GenericInvocationDescriptor<T>(del));
}
#else
public override bool Matches(ActualValueDelegate del)
{
return Matches(new ObjectInvocationDescriptor(del));
}
#endif
/// <summary>
/// Write the constraint description to a MessageWriter
/// </summary>
/// <param name="writer">The writer on which the description is displayed</param>
public override void WriteDescriptionTo(MessageWriter writer)
{
writer.Write(string.Format("No Exception to be thrown"));
}
/// <summary>
/// Write the actual value for a failing constraint test to a
/// MessageWriter. Overridden in ThrowsNothingConstraint to write
/// information about the exception that was actually caught.
/// </summary>
/// <param name="writer">The writer on which the actual value is displayed</param>
public override void WriteActualValueTo(MessageWriter writer)
{
writer.WriteLine(" ({0})", caughtException.Message);
writer.Write(caughtException.StackTrace);
}
}
}