1 2 using System; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Text; 6 using NUnit.Framework; 7 using System.Diagnostics.Contracts; 8 using System.Diagnostics; 9 using System.Reflection; 10 using System.Diagnostics.Contracts.Internal; 11 12 namespace MonoTests.System.Diagnostics.Contracts.Helpers { 13 14 public class TestContractBase { 15 TestContractBase()16 protected TestContractBase() { 17 // Get the type of System.Diagnostics.Contracts.ContractException 18 // Have to do this differently depending on how the test is being run. 19 this.ContractExceptionType = Type.GetType("System.Diagnostics.Contracts.ContractException"); 20 if (this.ContractExceptionType == null) { 21 // Special code for when Contracts namespace is not in CorLib 22 var mGetContractExceptionType = typeof (Contract).GetMethod ("GetContractExceptionType", BindingFlags.NonPublic | BindingFlags.Static); 23 this.ContractExceptionType = (Type) mGetContractExceptionType.Invoke (null, null); 24 } 25 } 26 27 [SetUp] Setup()28 public void Setup() { 29 // Remove all event handlers from Contract.ContractFailed 30 var eventField = typeof(global::System.Runtime.CompilerServices.ContractHelper).GetField("contractFailedEvent", BindingFlags.Static | BindingFlags.NonPublic); 31 eventField.SetValue(null, null); 32 } 33 34 [TearDown] TearDown()35 public void TearDown() { 36 } 37 38 protected Type ContractExceptionType { get; private set; } 39 40 } 41 } 42 43