Skip to content

Commit f54712c

Browse files
committed
Constant values for File matchers
1 parent 3180783 commit f54712c

File tree

1 file changed

+20
-32
lines changed

1 file changed

+20
-32
lines changed

hamcrest-library/src/main/java/org/hamcrest/io/FileMatchers.java

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,19 @@
1313

1414
public final class FileMatchers {
1515

16-
public static Matcher<File> anExistingDirectory() {
17-
return fileChecker(IS_DIRECTORY, "an existing directory", "is not a directory");
18-
}
16+
public static Matcher<File> anExistingDirectory() { return AN_EXISTING_DIRECTORY; }
1917

20-
public static Matcher<File> anExistingFileOrDirectory() {
21-
return fileChecker(EXISTS, "an existing file or directory", "does not exist");
22-
}
18+
public static Matcher<File> anExistingFileOrDirectory() { return EXISTING_FILE_OR_DIRECTORY; }
2319

2420
public static Matcher<File> anExistingFile() {
25-
return fileChecker(IS_FILE, "an existing File", "is not a file");
21+
return EXISTING_FILE;
2622
}
2723

2824
public static Matcher<File> aReadableFile() {
29-
return fileChecker(CAN_READ, "a readable File", "cannot be read");
25+
return READABLE_FILE;
3026
}
3127

32-
public static Matcher<File> aWritableFile() {
33-
return fileChecker(CAN_WRITE, "a writable File", "cannot be written to");
34-
}
28+
public static Matcher<File> aWritableFile() { return WRITEABLE_FILE; }
3529

3630
public static Matcher<File> aFileWithSize(long size) {
3731
return aFileWithSize(equalTo(size));
@@ -49,38 +43,32 @@ public static Matcher<File> aFileWithCanonicalPath(final Matcher<String> expecte
4943
return new FunctionMatcher<>("A file with canonical path", "path", expected, CANONICAL_PATH);
5044
}
5145

52-
5346
public static Matcher<File> aFileWithAbsolutePath(final Matcher<String> expected) {
5447
return new FunctionMatcher<>("A file with absolute path", "path", expected, ABSOLUTE_PATH);
5548
}
5649

57-
public static interface FileStatus {
58-
boolean check(File actual);
59-
}
50+
private static final Matcher<File> AN_EXISTING_DIRECTORY = fileChecker("an existing directory", "is not a directory",
51+
new FileStatus() { @Override public Boolean from(File actual) { return actual.isDirectory(); } });
6052

61-
public static final FileStatus CAN_WRITE = new FileStatus() {
62-
@Override public boolean check(File actual) { return actual.canWrite(); }
63-
};
64-
public static final FileStatus CAN_READ = new FileStatus() {
65-
@Override public boolean check(File actual) { return actual.canRead(); }
66-
};
53+
private static final Matcher<File> EXISTING_FILE_OR_DIRECTORY = fileChecker("an existing file or directory", "does not exist",
54+
new FileStatus() { @Override public Boolean from(File actual) { return actual.exists(); } });
6755

68-
public static final FileStatus IS_FILE = new FileStatus() {
69-
@Override public boolean check(File actual) { return actual.isFile(); }
70-
};
56+
public static final Matcher<File> EXISTING_FILE = fileChecker("an existing File", "is not a file",
57+
new FileStatus() { @Override public Boolean from(File actual) { return actual.isFile(); } });
7158

72-
public static final FileStatus IS_DIRECTORY = new FileStatus() {
73-
@Override public boolean check(File actual) { return actual.isDirectory(); }
74-
};
59+
public static final Matcher<File> READABLE_FILE = fileChecker("a readable File", "cannot be read",
60+
new FileStatus() { @Override public Boolean from(File actual) { return actual.canRead(); } });
7561

76-
public static final FileStatus EXISTS = new FileStatus() {
77-
@Override public boolean check(File actual) { return actual.exists(); }
78-
};
62+
public static final Matcher<File> WRITEABLE_FILE = fileChecker("a writable File", "cannot be written to",
63+
new FileStatus() { @Override public Boolean from(File actual) { return actual.canWrite(); } });
64+
65+
66+
public static interface FileStatus extends Feature<File, Boolean> { }
7967

80-
private static Matcher<File> fileChecker(final FileStatus fileStatus, final String successDescription, final String failureDescription) {
68+
public static Matcher<File> fileChecker(final String successDescription, final String failureDescription, final FileStatus fileStatus) {
8169
return new TypeSafeDiagnosingMatcher<File>() {
8270
public boolean matchesSafely(File actual, Description mismatchDescription) {
83-
final boolean result = fileStatus.check(actual);
71+
final boolean result = fileStatus.from(actual);
8472
if (!result) {
8573
mismatchDescription.appendText(failureDescription);
8674
}

0 commit comments

Comments
 (0)