public void AppendAndReplaceValue_GivenInitialSuccessAndFailureParameter_ShouldReturnFailure()
        {
            // Arrange
            var originalResult = new Result<string>
            {
                Success = true
            };
            var appendedResult = new Result<string>
            {
                Success = false,
                Value = "appended value"
            };

            // Act
            var returnedResult = originalResult.AppendAndReplaceValue(appendedResult);

            // Assert
            Assert.IsFalse(originalResult.Success);
            Assert.IsFalse(returnedResult.Success);
            Assert.AreEqual(appendedResult.Value, originalResult.Value);
            Assert.AreEqual(appendedResult.Value, returnedResult.Value);
        }
        public void AppendAndReplaceValue_GivenMessage_ShouldAddMessage()
        {
            // Arrange
            var originalMessage = "original message";
            var originalResult = new Result<string>
            {
                Message = originalMessage
            };
            var appendedMessage = "appended message";
            var appendedResult = new Result<string>
            {
                Message = appendedMessage,
                Value = "appended value"
            };

            // Act
            var returnedResult = originalResult.AppendAndReplaceValue(appendedResult);

            // Assert
            Assert.AreEqual(2, returnedResult.GetMessages().Count());
            Assert.AreEqual(originalMessage, returnedResult.GetMessages().ElementAt(0));
            Assert.AreEqual(appendedMessage, returnedResult.GetMessages().ElementAt(1));
            Assert.AreEqual(2, originalResult.GetMessages().Count());
            Assert.AreEqual(originalMessage, originalResult.GetMessages().ElementAt(0));
            Assert.AreEqual(appendedMessage, originalResult.GetMessages().ElementAt(1));
            Assert.AreEqual(appendedResult.Value, originalResult.Value);
            Assert.AreEqual(appendedResult.Value, returnedResult.Value);
        }