private static void AssertValuesMatchExpected <TValue>(
     OperationResultOf <TValue> opRes,
     bool expectedSuccessIndication,
     string expectedErrorMessage,
     TValue expectedValue)
 {
     Assert.AreEqual(expectedValue, opRes.Value, $"Expected {nameof(opRes.Value)} '{opRes.Value}' to match '{expectedValue}'");
     Assert.AreEqual(expectedSuccessIndication, opRes.Success, $"Expected {nameof(opRes.Success)} '{opRes.Success}' to match '{expectedSuccessIndication}'");
     Assert.AreEqual(expectedErrorMessage, opRes.ErrorMessage, $"Expected {nameof(opRes.ErrorMessage)} '{opRes.ErrorMessage}' to match '{expectedErrorMessage}'");
 }
        public void FailedOpRes_ImplicitCastToBool_False()
        {
            //Arrange
            var opRes = new OperationResultOf <int>(success: false);

            //Act
            bool success = opRes;

            //Assert
            Assert.IsFalse(success);
        }
        public void SuccessfulOpRes_ImplicitCastToBool_True()
        {
            //Arrange
            var opRes = new OperationResultOf <int>(success: true, value: 10);

            //Act
            bool success = opRes;

            //Assert
            Assert.IsTrue(success);
        }
        public void CtorWithExceptionNoErrorMessage_FailedOpResWithMatchingErrorMessage()
        {
            //Arrange
            var exception = new Exception();

            //Act
            var opRes = new OperationResultOf <int>(exception);

            //Assert
            Assert.IsFalse(opRes.Success);
            Assert.AreEqual(exception.Message, opRes.ErrorMessage);
        }
        public void SuccessfulOpRes_ImplicitOperationResult_PropertiesMatch()
        {
            //Arrange
            var opResWithValue = new OperationResultOf <int>(success: true, value: 10);

            //Act
            OperationResult opRes = opResWithValue;

            //Assert
            Assert.AreEqual(opResWithValue.Success, opRes.Success);
            Assert.AreEqual(opResWithValue.ErrorMessage, opRes.ErrorMessage);
        }
        public void CtorWithExceptionInnerExceptionWithErrorMessage_FailedOpResWithMatchingErrorMessage()
        {
            //Arrange
            var exception = new Exception("Error message 1", innerException: new Exception("Error message 2"));

            //Act
            var opRes = new OperationResultOf <int>(exception);

            //Assert
            Assert.IsFalse(opRes.Success);
            // ReSharper disable once PossibleNullReferenceException
            Assert.AreEqual(exception.InnerException.Message, opRes.ErrorMessage);
        }
        public void FailedOpRes_ImplicitOperationResult_PropertiesMatch()
        {
            //Arrange
            var opResWithValue = new OperationResultOf <int>(success: false,
                                                             errorMessage: "Some error  message ");

            //Act
            OperationResult opRes = opResWithValue;

            //Assert
            Assert.AreEqual(opResWithValue.Success, opRes.Success);
            Assert.AreEqual(opResWithValue.ErrorMessage, opRes.ErrorMessage);
        }
 private static void AssertAreEqual <T>(
     OperationResultOf <T> opRes,
     bool expectedSuccessIndication,
     T expectedValue,
     bool actualSuccessIndication,
     T actualValue,
     OperationResult actualOpRes)
 {
     Assert.AreEqual(expectedSuccessIndication, actualSuccessIndication);
     Assert.AreEqual(expectedValue, actualValue);
     Assert.AreEqual(opRes.Success, actualOpRes.Success);
     Assert.AreEqual(opRes.ErrorMessage, actualOpRes.ErrorMessage);
 }
        public void RefType_AsSuccessfulOpResOfBaseType_SuccessfulOperationResultOf()
        {
            //Arrange
            var value = new TestInterfaceImpl(4);

            //Act
            OperationResultOf <ITestInterface> opRes =
                value.AsSuccessfulOpRes <ITestInterface>();

            //Assert
            Assert.IsTrue(opRes.Success);
            Assert.IsNull(opRes.ErrorMessage);
            Assert.AreEqual(value, opRes.Value);
        }
예제 #10
0
        public void ValueTypeUseValueCtor_SuccessfulOperationResult()
        {
            //Arrange
            const bool   expectedSuccessIndication = true;
            const string expcectedErrorMessage     = null;
            const int    expectedValue             = 2;

            //Act
            var opRes = new OperationResultOf <int>(expectedValue);

            //Assert
            AssertValuesMatchExpected(opRes,
                                      expectedSuccessIndication,
                                      expcectedErrorMessage,
                                      expectedValue);
        }
        public void RefTypeValueTypeUseExceptionCtor_FailedOperationResultWithMatchingMessageCreated()
        {
            //Arrange
            const bool   expectedSuccessIndication = false;
            const string expectedErrorMessage      = "Some error message";
            const string expectedValue             = default;

            //Act
            var opRes = new OperationResultOf <string>(
                new Exception(expectedErrorMessage));

            //Assert
            AssertValuesMatchExpected(opRes,
                                      expectedSuccessIndication,
                                      expectedErrorMessage,
                                      expectedValue);
        }
        public void ValueTypeUseFullCtor_MatchingValuesOperationResultCreated()
        {
            //Arrange
            const bool   expectedSuccessIndication = false;
            const string expectedErrorMessage      = "Some error message";
            const int    expectedValue             = 2;

            //Act
            var opRes = new OperationResultOf <int>(
                expectedSuccessIndication,
                expectedValue,
                expectedErrorMessage);

            //Assert
            AssertValuesMatchExpected(opRes,
                                      expectedSuccessIndication,
                                      expectedErrorMessage,
                                      expectedValue);
        }
        public void SuccessfulValueTypeOpRes_ImplicitCast_MatchingExpected()
        {
            //Arrange
            const bool   expectedSuccessIndication = true;
            const string expectedErrorMessage      = null;
            const int    expectedValue             = 2;
            var          opRes = new OperationResultOf <int>(
                expectedSuccessIndication,
                expectedValue,
                errorMessage: expectedErrorMessage);

            //Act
            bool            actualSuccessIndication = opRes;
            int             actualValue             = opRes.Value;
            OperationResult opResNoValue            = opRes;

            //Assert
            AssertAreEqual(opRes,
                           expectedSuccessIndication,
                           expectedValue,
                           actualSuccessIndication,
                           actualValue,
                           opResNoValue);
        }
        public void FailedRefTypeOpRes_ImplicitCast_MatchingExpected()
        {
            //Arrange
            const bool   expectedSuccessIndication = false;
            const string expectedErrorMessage      = "Some error message";
            const string expectedValue             = default;
            var          opRes = new OperationResultOf <string>(
                expectedSuccessIndication,
                expectedValue,
                expectedErrorMessage);

            //Act
            bool            actualSuccessIndication = opRes;
            string          actualValue             = opRes.Value;
            OperationResult opResNoValue            = opRes;

            //Assert
            AssertAreEqual(opRes,
                           expectedSuccessIndication,
                           expectedValue,
                           actualSuccessIndication,
                           actualValue,
                           opResNoValue);
        }