/* 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 static org.fcrepo.common.Models.CONTENT_MODEL_3_0; import java.util.Iterator; import java.util.concurrent.Callable; import org.fcrepo.server.storage.types.BasicDigitalObject; import org.fcrepo.server.storage.types.Datastream; import org.junit.Test; /** * Unit tests for FOXML1_1DODeserializer. * * @author Chris Wilper */ public class TestFOXML1_1DODeserializer extends TestFOXMLDODeserializer { public TestFOXML1_1DODeserializer() { // superclass sets protected fields // m_deserializer and m_serializer as given below super(new FOXML1_1DODeserializer(translationUtility()), new FOXML1_1DOSerializer(translationUtility())); } //--- // Tests //--- @Test public void testDeserializeSimpleCModelObject() { doSimpleTest(CONTENT_MODEL_3_0); } @Test public void testDeserializeWithAutoChecksum() throws Exception { Datastream.defaultChecksumType = "MD5"; Datastream.autoChecksum = true; BasicDigitalObject obj=new BasicDigitalObject(); obj.setNew(true); m_deserializer.deserialize(this.getClass().getClassLoader().getResourceAsStream("ecm/dataobject1.xml"), obj, "UTF-8", DOTranslationUtility.DESERIALIZE_INSTANCE); for (Iterator<String> streams=obj.datastreamIdIterator();streams.hasNext();){ String id=streams.next(); for (Datastream version:obj.datastreams(id)){ assertEquals(Datastream.getDefaultChecksumType(), version.DSChecksumType); assertEquals(32, version.getChecksum().length()); } } } @Test public void testDeserializeWithoutAutoChecksum() throws Exception { Datastream.defaultChecksumType = Datastream.CHECKSUMTYPE_DISABLED; Datastream.autoChecksum = false; BasicDigitalObject obj=new BasicDigitalObject(); obj.setNew(true); m_deserializer.deserialize(this.getClass().getClassLoader().getResourceAsStream("ecm/dataobject1.xml"), obj, "UTF-8", DOTranslationUtility.DESERIALIZE_INSTANCE); for (Iterator<String> streams=obj.datastreamIdIterator();streams.hasNext();){ String id=streams.next(); for (Datastream version:obj.datastreams(id)){ assertEquals(version.DatastreamID, Datastream.CHECKSUMTYPE_DISABLED, version.DSChecksumType); assertEquals(version.DatastreamID, Datastream.CHECKSUM_NONE, version.DSChecksum); } } } @Test public void testConcurrentDeserialization() throws Exception { Callable<?>[] callables = { new DeserializerCallable(m_deserializer, this.getClass().getClassLoader().getResourceAsStream("ecm/dataobject1.xml")), new DeserializerCallable(m_deserializer, this.getClass().getClassLoader().getResourceAsStream("ecm/dataobject2.xml")), new DeserializerCallable(m_deserializer, this.getClass().getClassLoader().getResourceAsStream("ecm/dataobject3.xml")) }; runConcurrent(callables); } // Supports legacy test runners public static junit.framework.Test suite() { return new junit.framework.JUnit4TestAdapter(TestFOXML1_1DODeserializer.class); } }