diff --git a/approvaltests-tests/src/test/java/org/approvaltests/OptionsTest.java b/approvaltests-tests/src/test/java/org/approvaltests/OptionsTest.java index 8010d3428..0ad9133eb 100644 --- a/approvaltests-tests/src/test/java/org/approvaltests/OptionsTest.java +++ b/approvaltests-tests/src/test/java/org/approvaltests/OptionsTest.java @@ -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; @@ -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)); + } } diff --git a/approvaltests/src/main/java/org/approvaltests/Approvals.java b/approvaltests/src/main/java/org/approvaltests/Approvals.java index b4972e770..7e488e6ed 100644 --- a/approvaltests/src/main/java/org/approvaltests/Approvals.java +++ b/approvaltests/src/main/java/org/approvaltests/Approvals.java @@ -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) { diff --git a/approvaltests/src/main/java/org/approvaltests/core/Options.java b/approvaltests/src/main/java/org/approvaltests/core/Options.java index 63aacefe8..8486cabc8 100644 --- a/approvaltests/src/main/java/org/approvaltests/core/Options.java +++ b/approvaltests/src/main/java/org/approvaltests/core/Options.java @@ -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 = new HashMap<>(); public Options() @@ -47,6 +50,14 @@ public Options withReporter(ApprovalFailureReporter reporter) { return new Options(fields, Fields.REPORTER, reporter); } + public Function2 getComparator() + { + return ArrayUtils.getOrElse(fields, Fields.COMPARATOR, () -> FileApprover::approveTextFile); + } + public Options withComparator(Function2 comparator) + { + return new Options(fields, Fields.COMPARATOR, comparator); + } public Options withScrubber(Scrubber scrubber) { return new Options(fields, Fields.SCRUBBER, scrubber);