6 using System.Collections.Generic;
10 using System.Diagnostics.Contracts;
11 using MonoTests.System.Diagnostics.Contracts.Helpers;
13 namespace MonoTests.System.Diagnostics.Contracts {
16 public class ContractMarkerMethodsTest : TestContractBase {
19 /// Contract.EndContractBlock() has no effects.
21 [Test, RunAgainstReference]
22 public void TestEndContractBlock ()
24 Contract.EndContractBlock ();
28 /// Contract.OldValue() has no effect, and always returns the default value for the type.
30 [Test, RunAgainstReference]
31 public void TestOldValue ()
33 int i = Contract.OldValue<int> (8);
34 object o = Contract.OldValue<object> (new object ());
36 Assert.AreEqual (0, i, "TestOldValue() int value wrong");
37 Assert.IsNull (o, "TestOldValue() object value wrong");
41 /// Contract.Result() has no effect, and always returns the default value for the type.
43 [Test, RunAgainstReference]
44 public void TestResult ()
46 int i = Contract.Result<int> ();
47 object o = Contract.Result<object> ();
49 Assert.AreEqual (0, i, "TestResult() int value wrong");
50 Assert.IsNull (o, "TestResult() object value wrong");
54 /// Contract.ValueAtReturn() has no effect, and always returns the default value for the type.
56 [Test, RunAgainstReference]
57 public void TestValueAtReturn ()
62 i = Contract.ValueAtReturn (out iOut);
63 o = Contract.ValueAtReturn (out oOut);
65 Assert.AreEqual (0, i, "TestValueAtReturn() int return value wrong");
66 Assert.IsNull (o, "TestValueAtReturn() object return value wrong");
67 Assert.AreEqual (0, iOut, "TestValueAtReturn() int out value wrong");
68 Assert.IsNull (oOut, "TestValueAtReturn() object out value wrong");