Add progress consumer to ClientPut command
[jFCPlib.git] / src / test / java / net / pterodactylus / fcp / RequestProgressMatcher.java
1 package net.pterodactylus.fcp;
2
3 import org.hamcrest.Description;
4 import org.hamcrest.Matcher;
5 import org.hamcrest.TypeSafeDiagnosingMatcher;
6
7 /**
8  * Hamcrest matcher for {@link RequestProgress}.
9  *
10  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
11  */
12 public class RequestProgressMatcher {
13
14         public static Matcher<RequestProgress> isRequestProgress(int total, int required, int failed, int fatallyFailed,
15                 int succeeded, long lastProgress, boolean finalizedTotal, int minSuccessFetchBlocks) {
16                 return new TypeSafeDiagnosingMatcher<RequestProgress>() {
17                         @Override
18                         protected boolean matchesSafely(RequestProgress requestProgress, Description mismatchDescription) {
19                                 if (requestProgress.getTotal() != total) {
20                                         mismatchDescription.appendText("total is ").appendValue(requestProgress.getTotal());
21                                         return false;
22                                 }
23                                 if (requestProgress.getRequired() != required) {
24                                         mismatchDescription.appendText("required is ").appendValue(requestProgress.getRequired());
25                                         return false;
26                                 }
27                                 if (requestProgress.getFailed() != failed) {
28                                         mismatchDescription.appendText("failed is ").appendValue(requestProgress.getFailed());
29                                         return false;
30                                 }
31                                 if (requestProgress.getFatallyFailed() != fatallyFailed) {
32                                         mismatchDescription.appendText("fatally failed is ")
33                                                 .appendValue(requestProgress.getFatallyFailed());
34                                         return false;
35                                 }
36                                 if (requestProgress.getSucceeded() != succeeded) {
37                                         mismatchDescription.appendText("succeeded is ").appendValue(requestProgress.getSucceeded());
38                                         return false;
39                                 }
40                                 if (requestProgress.getLastProgress() != lastProgress) {
41                                         mismatchDescription.appendText("last progress is ").appendValue(requestProgress.getLastProgress());
42                                         return false;
43                                 }
44                                 if (requestProgress.isFinalizedTotal() != finalizedTotal) {
45                                         mismatchDescription.appendText("finalized total is ")
46                                                 .appendValue(requestProgress.isFinalizedTotal());
47                                         return false;
48                                 }
49                                 if (requestProgress.getMinSuccessFetchBlocks() != minSuccessFetchBlocks) {
50                                         mismatchDescription.appendText("min success fetch blocks is ")
51                                                 .appendValue(requestProgress.getMinSuccessFetchBlocks());
52                                         return false;
53                                 }
54                                 return true;
55                         }
56
57                         @Override
58                         public void describeTo(Description description) {
59                                 description.appendText("total ").appendValue(total);
60                                 description.appendText(", required ").appendValue(required);
61                                 description.appendText(", failed ").appendValue(failed);
62                                 description.appendText(", fatally failed ").appendValue(fatallyFailed);
63                                 description.appendText(", succeeded ").appendValue(succeeded);
64                                 description.appendText(", last progress ").appendValue(lastProgress);
65                                 description.appendText(", finalized total ").appendValue(finalizedTotal);
66                                 description.appendText(", min success fetch blocks ").appendValue(minSuccessFetchBlocks);
67                         }
68                 };
69         }
70
71 }