Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
191 changes: 4 additions & 187 deletions tests/Wolfgang.TryPattern.Tests/ResultOfTTests.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@

// ReSharper disable AccessToStaticMemberViaDerivedType

namespace Wolfgang.TryPattern.Tests;

public class ResultOfTTests
Expand Down Expand Up @@ -174,188 +171,8 @@ public void Success_Nullable_string_sets_properties_correctly(string? value)
}



[Fact]
public void AllSucceeded_when_passed_null_throws_ArgumentNullException()
{
var ex = Assert.Throws<ArgumentNullException>(() => Result<int>.AllSucceeded(null!));
Assert.Equal("results", ex.ParamName);
}



[Fact]
public void AllSucceeded_when_passed_nothing_returns_true()
{
Assert.True(Result<int>.AllSucceeded());
}



[Fact]
public void AllSucceeded_when_passed_empty_list_returns_true()
{
Assert.True(Result<int>.AllSucceeded(Array.Empty<Result>()));
}



[Fact]
public void AllSucceeded_when_all_results_succeeded_returns_true()
{
var result1 = Result<int>.Success();
var result2 = Result<int>.Success();
var result3 = Result<int>.Success();

Assert.True(Result<int>.AllSucceeded(result1, result2, result3));
}



[Fact]
public void AllSucceeded_when_at_least_one_result_failed_returns_false()
{
var result1 = Result<int>.Success();
var result2 = Result<int>.Failure("Test");
var result3 = Result<int>.Success();

Assert.False(Result<int>.AllSucceeded(result1, result2, result3));

}



[Fact]
public void AnyFailed_when_passed_null_throws_ArgumentNullException()
{
var ex = Assert.Throws<ArgumentNullException>(() => Result<int>.AnyFailed(null!));
Assert.Equal("results", ex.ParamName);
}



[Fact]
public void AnyFailed_when_nothing_returns_false()
{
Assert.False(Result<int>.AnyFailed());
}



[Fact]
public void AnyFailed_when_passed_empty_list_returns_false()
{
Assert.False(Result<int>.AnyFailed(Array.Empty<Result>()));
}



[Fact]
public void AnyFailed_when_all_results_succeeded_returns_false()
{
var result1 = Result<int>.Success();
var result2 = Result<int>.Success();
var result3 = Result<int>.Success();

Assert.False(Result<int>.AnyFailed(result1, result2, result3));
}



[Fact]
public void AnyFailed_when_at_least_one_result_failed_returns_true()
{
var result1 = Result<int>.Success();
var result2 = Result<int>.Failure("Test error");
var result3 = Result<int>.Success();

Assert.True(Result<int>.AnyFailed(result1, result2, result3));
}



[Fact]
public void Flatten_when_passed_null_throws_ArgumentNullException()
{
var ex = Assert.Throws<ArgumentNullException>(() => Result<int>.Flatten(null!));
Assert.Equal("results", ex.ParamName);
}



[Fact]
public void Flatten_when_passed_nothing_returns_new_successful_Result()
{
var result = Result<int>.Flatten();

Assert.True(result.Succeeded);
Assert.False(result.Failed);
Assert.NotNull(result.ErrorMessage);
Assert.Empty(result.ErrorMessage);
}



[Fact]
public void Flatten_when_passed_empty_list_returns_new_successful_Result()
{
var result = Result<int>.Flatten(Array.Empty<Result>());

Assert.True(result.Succeeded);
Assert.False(result.Failed);
Assert.NotNull(result.ErrorMessage);
Assert.Empty(result.ErrorMessage);
}



[Fact]
public void Flatten_when_all_results_succeeded_returns_new_successful_Result()
{
var result1 = Result<int>.Success();
var result2 = Result<int>.Success();
var result3 = Result<int>.Success();

var result = Result<int>.Flatten(result1, result2, result3);

Assert.True(result.Succeeded);
Assert.False(result.Failed);
Assert.NotNull(result.ErrorMessage);
Assert.Empty(result.ErrorMessage);
}



[Fact]
public void Flatten_when_at_least_one_result_failed_returns_first_failed_Result()
{
var result1 = Result<int>.Success();
var result2 = Result<int>.Failure("test error");
var result3 = Result<int>.Success();

var result = Result<int>.Flatten(result1, result2, result3);

Assert.False(result.Succeeded);
Assert.True(result.Failed);
Assert.Equal("test error", result.ErrorMessage);
}




[Fact]
public void Flatten_when_multiple_results_failed_returns_Result_with_all_message()
{
var result1 = Result<int>.Success();
var result2 = Result<int>.Failure("test error 1");
var result3 = Result<int>.Failure("test error 2");
var result4 = Result<int>.Success();

var result = Result<int>.Flatten(result1, result2, result3, result4);

Assert.False(result.Succeeded);
Assert.True(result.Failed);
Assert.Equal("test error 1\ntest error 2", result.ErrorMessage);
}

// Note: AllSucceeded / AnyFailed / Flatten are inherited from Result and
// are already covered by ResultTests. Tests that invoked them via the
// derived type `Result<int>.` were just verifying inheritance, which is a
// language feature — they have been removed.
}
18 changes: 17 additions & 1 deletion tests/Wolfgang.TryPattern.Tests/ResultTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
#pragma warning disable IDE0022
namespace Wolfgang.TryPattern.Tests;

public class ResultTests
Expand Down Expand Up @@ -259,6 +258,23 @@ public void Flatten_when_at_least_one_result_failed_returns_first_failed_Result(



[Fact]
public void Flatten_when_multiple_results_failed_returns_Result_with_all_messages()
{
var result1 = Result.Success();
var result2 = Result.Failure("test error 1");
var result3 = Result.Failure("test error 2");
var result4 = Result.Success();

var result = Result.Flatten(result1, result2, result3, result4);

Assert.False(result.Succeeded);
Assert.True(result.Failed);
Assert.Equal("test error 1\ntest error 2", result.ErrorMessage);
}






Expand Down
Loading
Loading