public void TestComparerWithValueComparer() { Assert.Throws <ArgumentNullException>(() => Maybe.Comparer <int>(null)); var valueComparer = Comparer <TestRef> .Create((x, y) => x.Value.CompareTo(y.Value)); var comparer = Maybe.Comparer(valueComparer); { var x = Maybe <TestRef> .Nothing; var y = Maybe <TestRef> .Nothing; var result = comparer.Compare(x, y); Assert.AreEqual(0, result); } { var x = Maybe <TestRef> .Nothing; var y = Maybe.Just(new TestRef(1)); var result = comparer.Compare(x, y); Assert.AreEqual(-1, result); } { var x = Maybe <TestRef> .Just(new TestRef(1)); var y = Maybe <TestRef> .Nothing; var result = comparer.Compare(x, y); Assert.AreEqual(1, result); } { var x = Maybe <TestRef> .Just(new TestRef(1)); var y = Maybe <TestRef> .Just(new TestRef(1)); var result = comparer.Compare(x, y); Assert.AreEqual(0, result); } { var x = Maybe <TestRef> .Just(new TestRef(2)); var y = Maybe <TestRef> .Just(new TestRef(1)); var result = comparer.Compare(x, y); Assert.AreEqual(1, result); } { var x = Maybe <TestRef> .Just(new TestRef(1)); var y = Maybe <TestRef> .Just(new TestRef(2)); var result = comparer.Compare(x, y); Assert.AreEqual(-1, result); } }
public void TestComparerValueComparable() { var comparer = Maybe.Comparer <int>(); { var x = Maybe <int> .Nothing; var y = Maybe <int> .Nothing; var result = comparer.Compare(x, y); Assert.AreEqual(0, result); } { var x = Maybe <int> .Nothing; var y = Maybe.Just(1); var result = comparer.Compare(x, y); Assert.AreEqual(-1, result); } { var x = Maybe <int> .Just(1); var y = Maybe <int> .Nothing; var result = comparer.Compare(x, y); Assert.AreEqual(1, result); } { var x = Maybe <int> .Just(1); var y = Maybe <int> .Just(1); var result = comparer.Compare(x, y); Assert.AreEqual(0, result); } { var x = Maybe <int> .Just(2); var y = Maybe <int> .Just(1); var result = comparer.Compare(x, y); Assert.AreEqual(1, result); } { var x = Maybe <int> .Just(1); var y = Maybe <int> .Just(2); var result = comparer.Compare(x, y); Assert.AreEqual(-1, result); } }