public void ValueValidation_Assert_BasicObjects_AreNotEqual(object expectedValue, object actualValue)
        {
            var exception = Assert.Throws <Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException>(() =>
                                                                                                               ValueValidation.Assert(_testFramework, expectedValue, actualValue, "Custom assertion"));

            Assert.AreEqual($"Assert.AreEqual failed. Expected:<{ expectedValue }>. Actual:<{ actualValue }>. Custom assertion has an unexpected value", exception.Message);
        }
 public void ValueValidation_Assert_BasicObjects_AreEqual(object expectedValue, object actualValue)
 {
     Assert.DoesNotThrow(() => ValueValidation.Assert(_testFramework, expectedValue, actualValue, "Custom assertion"));
 }
        public void ValueValidation_Assert_AssertString_ActualValueNotAString_ThrowError()
        {
            object requestedValue   = null;
            string requestedMessage = null;

            Mock <IComparison> state = new Mock <IComparison>(MockBehavior.Strict);

            state
            .Setup(p => p.Assert(It.IsAny <ITestFramework>(), It.IsAny <object>(), It.IsAny <string>()))
            .Callback <ITestFramework, object, string>((s, p, q) =>
            {
                requestedValue   = p;
                requestedMessage = q;
            })
            .Throws(new Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException());

            Assert.Throws <Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException>(() =>
                                                                                               ValueValidation.Assert(_testFramework, state.Object, 123, "Custom assertion"));

            state
            .Verify(p => p.Assert(It.IsAny <ITestFramework>(), It.IsAny <object>(), It.IsAny <string>()), Times.Once);
        }
        public void ValueValidation_Assert_AssertDate_AreNotEqual_ThrowError()
        {
            object requestedValue   = null;
            string requestedMessage = null;

            Mock <IDateComparison> state = new Mock <IDateComparison>(MockBehavior.Strict);

            state
            .Setup(p => p.Assert(It.IsAny <ITestFramework>(), It.IsAny <object>(), It.IsAny <string>()))
            .Callback <ITestFramework, object, string>((s, p, q) =>
            {
                requestedValue   = p;
                requestedMessage = q;
            })
            .Throws(new Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException());

            Assert.Throws <Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException>(() =>
                                                                                               ValueValidation.Assert(_testFramework, state.Object, DateTime.Parse("01-Mar-2020"), "Custom assertion"));

            state
            .Verify(p => p.Assert(It.IsAny <ITestFramework>(), It.IsAny <DateTime>(), It.IsAny <string>()), Times.Once);

            Assert.AreEqual(DateTime.Parse("01-Mar-2020"), requestedValue);
            Assert.AreEqual("Custom assertion", requestedMessage);
        }