Skip to content

Commit

Permalink
F!! #301 added ability to create custom comparator
Browse files Browse the repository at this point in the history
  • Loading branch information
LarsEckart committed Oct 13, 2022
1 parent ec1ad64 commit 430bc93
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 2 deletions.
Expand Up @@ -6,6 +6,7 @@
import org.approvaltests.core.ApprovalFailureReporter;
import org.approvaltests.core.ApprovalWriter;
import org.approvaltests.core.Options;
import org.approvaltests.core.VerifyResult;
import org.approvaltests.reporters.FirstWorkingReporter;
import org.approvaltests.reporters.UseReporter;
import org.approvaltests.reporters.UseReporterTest;
Expand Down Expand Up @@ -183,4 +184,9 @@ public String getFileExtensionWithDot()
return null;
}
}
@Test
void verifyCustomComparator()
{
Approvals.verify("The approval file is empty", new Options().withComparator((a, b) -> VerifyResult.SUCCESS));
}
}
Expand Up @@ -172,7 +172,7 @@ public static void verify(ApprovalWriter writer, ApprovalNamer namer)
}
public static void verify(ApprovalWriter writer, ApprovalNamer namer, Options options)
{
verify(new FileApprover(writer, namer), options);
verify(new FileApprover(writer, namer, options.getComparator()), options);
}
public static void verify(ApprovalWriter writer)
{
Expand Down
13 changes: 12 additions & 1 deletion approvaltests/src/main/java/org/approvaltests/core/Options.java
Expand Up @@ -3,20 +3,23 @@
import com.spun.util.ArrayUtils;
import org.approvaltests.Approvals;
import org.approvaltests.ReporterFactory;
import org.approvaltests.approvers.FileApprover;
import org.approvaltests.namer.ApprovalNamer;
import org.approvaltests.namer.NamerWrapper;
import org.approvaltests.scrubbers.NoOpScrubber;
import org.approvaltests.writers.ApprovalWriterFactory;
import org.approvaltests.writers.DefaultApprovalWriterFactory;
import org.lambda.functions.Function1;
import org.lambda.functions.Function2;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

public class Options
{
private enum Fields {
SCRUBBER, REPORTER, FILE_OPTIONS_FILE_EXTENSION, FILE_OPTIONS_NAMER, WRITER;
SCRUBBER, REPORTER, FILE_OPTIONS_FILE_EXTENSION, FILE_OPTIONS_NAMER, WRITER, COMPARATOR;
}
private final Map<Fields, Object> fields = new HashMap<>();
public Options()
Expand Down Expand Up @@ -47,6 +50,14 @@ public Options withReporter(ApprovalFailureReporter reporter)
{
return new Options(fields, Fields.REPORTER, reporter);
}
public Function2<File, File, VerifyResult> getComparator()
{
return ArrayUtils.getOrElse(fields, Fields.COMPARATOR, () -> FileApprover::approveTextFile);
}
public Options withComparator(Function2<File, File, VerifyResult> comparator)
{
return new Options(fields, Fields.COMPARATOR, comparator);
}
public Options withScrubber(Scrubber scrubber)
{
return new Options(fields, Fields.SCRUBBER, scrubber);
Expand Down

0 comments on commit 430bc93

Please sign in to comment.