package org.exist.xslt;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.Collection;
import org.junit.runners.Parameterized.Parameters;
import org.junit.runners.Parameterized;
import org.junit.runner.RunWith;
import java.util.Hashtable;
import org.exist.util.Configuration;
import javax.xml.transform.sax.SAXTransformerFactory;
import org.easymock.EasyMock;
import org.exist.storage.BrokerPool;
import org.junit.Test;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.verify;
import static org.easymock.EasyMock.replay;
import org.junit.After;
import static org.junit.Assert.assertEquals;
import org.junit.runners.Parameterized.Parameter;
/**
* @author Adam Retter <adam@exist-db.org>
*/
@RunWith(value = Parameterized.class)
public class TransfomerFactoryAllocatorTest {
@Parameters(name = "{0}")
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ "net.sf.saxon.TransformerFactoryImpl" },
{ "org.apache.xalan.processor.TransformerFactoryImpl" }
});
}
@Parameter
public String transformerFactoryClass;
@Test
public void getTransformerFactory() {
final Hashtable<String,Object> testAttributes = new Hashtable<String,Object>();
BrokerPool mockBrokerPool = EasyMock.createMock(BrokerPool.class);
Configuration mockConfiguration = EasyMock.createMock(Configuration.class);
expect(mockBrokerPool.getConfiguration()).andReturn(mockConfiguration);
expect(mockConfiguration.getProperty(TransformerFactoryAllocator.PROPERTY_TRANSFORMER_CLASS)).andReturn(transformerFactoryClass);
expect(mockBrokerPool.getConfiguration()).andReturn(mockConfiguration);
expect(mockConfiguration.getProperty(TransformerFactoryAllocator.PROPERTY_TRANSFORMER_ATTRIBUTES)).andReturn(testAttributes);
replay(mockBrokerPool, mockConfiguration);
SAXTransformerFactory transformerFactory = TransformerFactoryAllocator.getTransformerFactory(mockBrokerPool);
assertEquals(transformerFactoryClass, transformerFactory.getClass().getName());
verify(mockBrokerPool, mockConfiguration);
}
@After
public void resetTransformerFactoryAllocatorSingleton() throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
Field field = TransformerFactoryAllocator.class.getDeclaredField("saxTransformerFactory");
field.setAccessible(true);
field.set(null, null);
}
}