/**
* The contents of this file are subject to the OpenMRS Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://license.openmrs.org
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* Copyright (C) OpenMRS, LLC. All Rights Reserved.
*/
package org.openmrs.api.impl;
import java.util.Collections;
import java.util.List;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openmrs.serialization.OpenmrsSerializer;
import org.openmrs.serialization.SerializationException;
import org.openmrs.test.Verifies;
/**
* Tests the {@link SerializationServiceImpl} class
*/
public class SerializationServiceImplTest {
private static List<? extends OpenmrsSerializer> currentSerializers;
/**
* Store the current serializers that are on the serialization service that were put there by
* other tests
*
* @see #restoreSerializers()
*/
@BeforeClass
public static void clearSerializers() {
SerializationServiceImpl ssi = new SerializationServiceImpl();
currentSerializers = ssi.getSerializers();
ssi.setSerializers(null); // clear out the current serializers
}
/**
* @see {@link SerializationServiceImpl#setSerializers(List<OpenmrsSerializer>)}
*/
@Test
@Verifies(value = "should not reset serializers list when called multiple times", method = "setSerializers(List<+QOpenmrsSerializer;>)")
public void setSerializers_shouldNotResetSerializersListWhenCalledMultipleTimes() throws Exception {
SerializationServiceImpl ssi = new SerializationServiceImpl();
Assert.assertEquals(0, ssi.getSerializers().size());
ssi.setSerializers(Collections.singletonList(new MockSerializer1()));
Assert.assertEquals(1, ssi.getSerializers().size());
ssi.setSerializers(Collections.singletonList(new MockSerializer2()));
Assert.assertEquals(2, ssi.getSerializers().size());
}
class MockSerializer1 implements OpenmrsSerializer {
public MockSerializer1() {
}
/**
* @see org.openmrs.serialization.OpenmrsSerializer#deserialize(java.lang.String,
* java.lang.Class)
*/
public <T> T deserialize(String serializedObject, Class<? extends T> clazz) throws SerializationException {
return null;
}
/**
* @see org.openmrs.serialization.OpenmrsSerializer#serialize(java.lang.Object)
*/
public String serialize(Object o) throws SerializationException {
return null;
}
}
class MockSerializer2 implements OpenmrsSerializer {
public MockSerializer2() {
}
/**
* @see org.openmrs.serialization.OpenmrsSerializer#deserialize(java.lang.String,
* java.lang.Class)
*/
public <T> T deserialize(String serializedObject, Class<? extends T> clazz) throws SerializationException {
return null;
}
/**
* @see org.openmrs.serialization.OpenmrsSerializer#serialize(java.lang.Object)
*/
public String serialize(Object o) throws SerializationException {
return null;
}
}
/**
* Clear out what we did in this class and restore the serializers that were on the
* {@link SerializationServiceImpl} class before we started
*/
@AfterClass
public static void restoreSerializers() {
SerializationServiceImpl ssi = new SerializationServiceImpl();
ssi.setSerializers(null); // clear out our serializers
ssi.setSerializers(currentSerializers); // reset the serializers that were here before this class
}
}