public void Can_convert_failedResult_with_value_to_failedResult_without_value()
        {
            var failedResultWithValue = GenericResult.Result.Failure <MyValueClass>("Failed");

            GenericResult.Result failedResultWithoutValue = failedResultWithValue;

            failedResultWithoutValue.IsFailure.Should().BeTrue();
            failedResultWithoutValue.Error.Should().Be(new Error("Failed"));
        }
        public void Combine_returns_Ok_if_no_failures_in_collection()
        {
            IEnumerable <GenericResult.Result> results = new GenericResult.Result[]
            {
                GenericResult.Result.Success(),
                                               GenericResult.Result.Success(),
                                               GenericResult.Result.Success("Some string")
            };

            var result = results.Combine(";");

            result.IsSuccess.Should().BeTrue();
        }
        public void Combine_works_with_collection_of_Generic_results_failure()
        {
            IEnumerable <Result <string> > results = new Result <string>[]
            {
                GenericResult.Result.Success(""),
                GenericResult.Result.Failure <string>("m"),
                GenericResult.Result.Failure <string>("o")
            };

            GenericResult.Result result = results.Combine(";");

            result.IsSuccess.Should().BeFalse();
            result.Error.Should().Be(new Error("m;o"));
        }
        public void Combine_combines_all_collection_errors_together()
        {
            IEnumerable <GenericResult.Result> results = new GenericResult.Result[]
            {
                GenericResult.Result.Success(),
                                               GenericResult.Result.Failure("Failure 1"),
                GenericResult.Result.Failure("Failure 2")
            };

            var result = results.Combine(";");

            result.IsSuccess.Should().BeFalse();
            result.Error.Should().Be(new Error("Failure 1;Failure 2"));
        }
        public void ErrorMessagesSeparator_Combine_combines_all_collection_errors_with_configured_ErrorMessagesSeparator_together()
        {
            var previousErrorMessagesSeparator = GenericResult.Result.ErrorMessagesSeparator;

            IEnumerable <GenericResult.Result> results = new GenericResult.Result[]
            {
                GenericResult.Result.Failure("E1"),
                GenericResult.Result.Failure("E2")
            };

            GenericResult.Result.ErrorMessagesSeparator = "{Separator}";
            var result = results.Combine();

            result.IsFailure.Should().BeTrue();
            result.Error.Should().Be(new Error("E1{Separator}E2"));

            GenericResult.Result.ErrorMessagesSeparator = previousErrorMessagesSeparator;
        }