| package joptsimple.util; |
| |
| import java.nio.file.Files; |
| import java.nio.file.Path; |
| |
| import joptsimple.ValueConversionException; |
| import org.junit.Rule; |
| import org.junit.Test; |
| import org.junit.rules.ExpectedException; |
| |
| import static joptsimple.util.PathProperties.*; |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertFalse; |
| import static org.junit.Assert.assertTrue; |
| |
| public class PathConverterTest { |
| @Rule |
| public ExpectedException exception = ExpectedException.none(); |
| |
| @Test |
| public void convertsValuesToPaths() throws Exception { |
| Path path = Files.createTempFile( "prefix", null ); |
| path.toFile().deleteOnExit(); |
| |
| String pathName = path.toString(); |
| |
| assertEquals( path, new PathConverter( null ).convert( pathName ) ); |
| assertEquals( path, new PathConverter().convert( pathName ) ); |
| } |
| |
| @Test |
| public void answersCorrectValueType() { |
| assertEquals( Path.class, new PathConverter().valueType() ); |
| } |
| |
| @Test |
| public void testReadableAndOverwritableFile() throws Exception { |
| Path path = Files.createTempFile( "prefix", null ); |
| path.toFile().deleteOnExit(); |
| |
| String pathName = path.toString(); |
| |
| assertTrue( Files.isReadable( new PathConverter( READABLE ).convert( pathName ) ) ); |
| assertTrue( Files.exists( new PathConverter( READABLE ).convert( pathName ) ) ); |
| assertTrue( Files.isWritable( new PathConverter( READABLE ).convert( pathName ) ) ); |
| assertTrue( Files.isWritable( new PathConverter( FILE_OVERWRITABLE).convert( pathName ) ) ); |
| } |
| |
| @Test |
| public void testNotExisting() throws Exception { |
| Path path = Files.createTempFile( "prefix", null ); |
| |
| Files.deleteIfExists( path ); |
| |
| assertFalse( Files.exists( new PathConverter( NOT_EXISTING ).convert( path.toString() ) ) ); |
| } |
| |
| @Test |
| public void testNotReadable() throws Exception { |
| Path path = Files.createTempFile( "prefix", null ); |
| String pathName = path.toString(); |
| Files.deleteIfExists( path ); |
| |
| exception.expect( ValueConversionException.class ); |
| exception.expectMessage( "File [" + pathName ); |
| |
| new PathConverter( READABLE ).convert( pathName ); |
| } |
| |
| @Test |
| public void testDirectoryExisting() throws Exception { |
| Path path = Files.createTempDirectory( "prefix" ); |
| path.toFile().deleteOnExit(); |
| |
| String pathName = path.toString(); |
| |
| assertTrue( Files.isDirectory( new PathConverter( DIRECTORY_EXISTING ).convert( pathName ) ) ); |
| } |
| |
| @Test |
| public void testDirectoryNotOverwritable() throws Exception { |
| Path path = Files.createTempDirectory( "prefix" ); |
| path.toFile().deleteOnExit(); |
| |
| String pathName = path.toString(); |
| |
| exception.expect( ValueConversionException.class ); |
| exception.expectMessage( "File [" + pathName ); |
| |
| new PathConverter( FILE_OVERWRITABLE).convert( pathName ); |
| } |
| |
| @Test |
| public void testNotExistingNotOverwritable() throws Exception { |
| Path path = Files.createTempDirectory( "prefix" ); |
| String pathName = path.toString(); |
| Files.deleteIfExists( path ); |
| |
| exception.expect( ValueConversionException.class ); |
| exception.expectMessage( "File [" + pathName ); |
| |
| new PathConverter( FILE_OVERWRITABLE ).convert( pathName ); |
| } |
| } |