/* The contents of this file are subject to the license and copyright terms
* detailed in the license directory at the root of the source tree (also
* available online at http://fedora-commons.org/license/).
*/
package org.fcrepo.server.storage.translation;
import java.io.InputStream;
import java.util.concurrent.Callable;
import org.junit.Test;
import org.fcrepo.server.storage.translation.METSFedoraExt1_0DODeserializer;
import org.fcrepo.server.storage.translation.METSFedoraExt1_0DOSerializer;
import org.fcrepo.server.storage.types.BasicDigitalObject;
import org.fcrepo.server.storage.types.DigitalObject;
import org.fcrepo.utilities.ReadableByteArrayOutputStream;
/**
* Unit tests for METSFedoraExt1_0DODeserializer.
*
* @author Chris Wilper
*/
public class TestMETSFedoraExt1_0DODeserializer
extends TestMETSFedoraExtDODeserializer {
public TestMETSFedoraExt1_0DODeserializer() {
// superclass sets protected fields
// m_deserializer and m_serializer as given below
super(new METSFedoraExt1_0DODeserializer(translationUtility()),
new METSFedoraExt1_0DOSerializer(translationUtility()));
}
//---
// Tests
//---
@Test
public void testConcurrentDeserialization() throws Exception {
InputStream[] streams = getTestStreams();
Callable<?>[] callables = new Callable[streams.length];
int i = 0;
for (InputStream stream: streams) {
callables[i++] = new DeserializerCallable(m_deserializer, stream);
}
runConcurrent(callables);
}
private InputStream[] getTestStreams() throws Exception {
DODeserializer deser = new FOXML1_1DODeserializer(translationUtility());
InputStream[] streams = new InputStream[]{
getTranslatedTestStream("ecm/dataobject1.xml", deser, m_serializer),
getTranslatedTestStream("ecm/dataobject2.xml", deser, m_serializer),
getTranslatedTestStream("ecm/dataobject3.xml", deser, m_serializer),
};
return streams;
}
private InputStream getTranslatedTestStream(String src, DODeserializer deser, DOSerializer ser) throws Exception {
InputStream in = this.getClass().getClassLoader().getResourceAsStream(src);
DigitalObject obj = new BasicDigitalObject();
deser.deserialize(in, obj, "UTF-8", DOTranslationUtility.DESERIALIZE_INSTANCE);
ReadableByteArrayOutputStream out = new ReadableByteArrayOutputStream();
ser.serialize(obj, out, "UTF-8", DOTranslationUtility.SERIALIZE_EXPORT_ARCHIVE);
return out.toInputStream();
}
// Supports legacy test runners
public static junit.framework.Test suite() {
return new junit.framework.JUnit4TestAdapter(TestMETSFedoraExt1_0DODeserializer.class);
}
}