package gov.loc.repository.bagit.reader; import java.lang.reflect.InvocationTargetException; import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.nio.file.Paths; import java.util.AbstractMap.SimpleImmutableEntry; import java.util.ArrayList; import java.util.List; import org.junit.Test; import gov.loc.repository.bagit.PrivateConstructorTest; public class MetadataReaderTest extends PrivateConstructorTest { @Test public void testClassIsWellDefined() throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException{ assertUtilityClassWellDefined(MetadataReader.class); } @Test public void testReadBagMetadata() throws Exception{ List<SimpleImmutableEntry<String, String>> expectedValues = new ArrayList<>(); expectedValues.add(new SimpleImmutableEntry<>("Source-Organization", "Spengler University")); expectedValues.add(new SimpleImmutableEntry<>("Organization-Address", "1400 Elm St., Cupertino, California, 95014")); expectedValues.add(new SimpleImmutableEntry<>("Contact-Name", "Edna Janssen")); expectedValues.add(new SimpleImmutableEntry<>("Contact-Phone", "+1 408-555-1212")); expectedValues.add(new SimpleImmutableEntry<>("Contact-Email", "ej@spengler.edu")); expectedValues.add(new SimpleImmutableEntry<>("External-Description", "Uncompressed greyscale TIFF images from the" + System.lineSeparator() + " Yoshimuri papers collection.")); expectedValues.add(new SimpleImmutableEntry<>("Bagging-Date", "2008-01-15")); expectedValues.add(new SimpleImmutableEntry<>("External-Identifier", "spengler_yoshimuri_001")); expectedValues.add(new SimpleImmutableEntry<>("Bag-Size", "260 GB")); expectedValues.add(new SimpleImmutableEntry<>("Bag-Group-Identifier", "spengler_yoshimuri")); expectedValues.add(new SimpleImmutableEntry<>("Bag-Count", "1 of 15")); expectedValues.add(new SimpleImmutableEntry<>("Internal-Sender-Identifier", "/storage/images/yoshimuri")); expectedValues.add(new SimpleImmutableEntry<>("Internal-Sender-Description", "Uncompressed greyscale TIFFs created from" + System.lineSeparator() + " microfilm.")); expectedValues.add(new SimpleImmutableEntry<>("Bag-Count", "1 of 15")); //test duplicate Path bagInfoFile = Paths.get(getClass().getClassLoader().getResource("baginfoFiles").toURI()); List<SimpleImmutableEntry<String, String>> actualMetadata = MetadataReader.readBagMetadata(bagInfoFile, StandardCharsets.UTF_8); assertEquals(expectedValues, actualMetadata); } }