package gov.loc.repository.bagit.reader;
import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.AbstractMap.SimpleImmutableEntry;
import org.junit.Test;
import gov.loc.repository.bagit.PrivateConstructorTest;
import gov.loc.repository.bagit.domain.Version;
import gov.loc.repository.bagit.exceptions.InvalidBagitFileFormatException;
import gov.loc.repository.bagit.exceptions.UnparsableVersionException;
public class BagitTextFileReaderTest extends PrivateConstructorTest {
@Test
public void testClassIsWellDefined() throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException{
assertUtilityClassWellDefined(BagitTextFileReader.class);
}
@Test(expected=UnparsableVersionException.class)
public void testParseVersionWithBadVersion() throws UnparsableVersionException{
BagitTextFileReader.parseVersion("someVersionThatIsUnparsable");
}
@Test
public void testReadBagitFile()throws Exception{
Path bagitFile = Paths.get(new File("src/test/resources/bagitFiles/bagit-0.97.txt").toURI());
SimpleImmutableEntry<Version, Charset> actualBagitInfo = BagitTextFileReader.readBagitTextFile(bagitFile);
assertEquals(new Version(0, 97), actualBagitInfo.getKey());
assertEquals(StandardCharsets.UTF_8, actualBagitInfo.getValue());
}
@Test(expected=InvalidBagitFileFormatException.class)
public void testReadBagitFileWithBomShouldThrowException()throws Exception{
Path bagitFile = Paths.get(new File("src/test/resources/bagitFiles/bagit-with-bom.txt").toURI());
BagitTextFileReader.readBagitTextFile(bagitFile);
}
}