Home | History | Annotate | Download | only in io
      1 package org.hamcrest.io;
      2 
      3 import org.hamcrest.AbstractMatcherTest;
      4 import org.hamcrest.Matcher;
      5 
      6 import java.io.File;
      7 
      8 import static org.hamcrest.core.IsEqual.equalTo;
      9 
     10 @SuppressWarnings("ResultOfMethodCallIgnored")
     11 public class FileMatchersTest extends AbstractMatcherTest {
     12 
     13     private File directory;
     14     private File file;
     15 
     16     @Override
     17     protected void setUp() throws Exception {
     18         directory = File.createTempFile("myDir", "");
     19         directory.delete();
     20         directory.mkdirs();
     21 
     22         file = new File(directory, "myFile");
     23         file.createNewFile();
     24     }
     25 
     26     public void testAnExistingDirectory() {
     27         assertMatches("matches existing directory", FileMatchers.anExistingDirectory(), directory);
     28         assertDoesNotMatch("doesn't match existing file", FileMatchers.anExistingDirectory(), file);
     29         assertDoesNotMatch("doesn't match missing file", FileMatchers.anExistingDirectory(), new File("foo"));
     30     }
     31 
     32     public void testAnExistingFileOrDirectory() {
     33         assertMatches("matches existing file", FileMatchers.anExistingFileOrDirectory(), file);
     34         assertMatches("matches existing directory", FileMatchers.anExistingFileOrDirectory(), directory);
     35         assertDoesNotMatch("doesn't match missing file", FileMatchers.anExistingFileOrDirectory(), new File("foo"));
     36     }
     37 
     38     public void testAnExistingFile() {
     39         assertMatches("matches existing file", FileMatchers.anExistingFile(), file);
     40         assertDoesNotMatch("doesn't match existing directory", FileMatchers.anExistingFile(), directory);
     41         assertDoesNotMatch("doesn't match missing file", FileMatchers.anExistingFile(), new File("foo"));
     42     }
     43 
     44     public void testAReadableFile() {
     45         file.setReadable(true);
     46         assertMatches("matches readable file", FileMatchers.aReadableFile(), file);
     47         if (file.setReadable(false)) {
     48             assertDoesNotMatch("doesn't match unreadable file", FileMatchers.aReadableFile(), file);
     49         }
     50     }
     51 
     52     public void testAWritableFile() {
     53         assertMatches("matches writable file", FileMatchers.aWritableFile(), file);
     54         file.setWritable(false);
     55         assertDoesNotMatch("doesn't match unwritable file", FileMatchers.aWritableFile(), file);
     56     }
     57 
     58     public void testAFileWithSizeLong() {
     59         assertMatches("matches file size", FileMatchers.aFileWithSize(0L), file);
     60         file.setWritable(false);
     61         assertDoesNotMatch("doesn't match incorrect file size", FileMatchers.aFileWithSize(34L), file);
     62     }
     63 
     64     public void testAFileWithSizeMatcherOfLong() {
     65         assertMatches("matches file size", FileMatchers.aFileWithSize(equalTo(0L)), file);
     66         file.setWritable(false);
     67         assertDoesNotMatch("doesn't match incorrect file size", FileMatchers.aFileWithSize(equalTo(23L)), file);
     68     }
     69 
     70     public void testAFileNamed() {
     71         assertMatches("matches file name", FileMatchers.aFileNamed(equalTo(file.getName())), file);
     72         file.setWritable(false);
     73         assertDoesNotMatch("doesn't match incorrect file name", FileMatchers.aFileNamed(equalTo("foo")), file);
     74     }
     75 
     76     public void testAFileWithCanonicalPath() throws Exception {
     77         assertMatches("matches file canonical path", FileMatchers.aFileWithCanonicalPath(equalTo(file.getCanonicalPath())), file);
     78         file.setWritable(false);
     79         assertDoesNotMatch("doesn't match incorrect canonical path", FileMatchers.aFileWithCanonicalPath(equalTo("foo")), file);
     80     }
     81 
     82     public void testAFileWithAbsolutePath() {
     83         assertMatches("matches file absolute path", FileMatchers.aFileWithAbsolutePath(equalTo(file.getAbsolutePath())), file);
     84         file.setWritable(false);
     85         assertDoesNotMatch("doesn't match incorrect absolute path", FileMatchers.aFileWithAbsolutePath(equalTo("foo")), file);
     86     }
     87 
     88     @Override
     89     protected Matcher<?> createMatcher() {
     90         return FileMatchers.aFileWithSize(1L);
     91     }
     92 
     93 }
     94