package org.jbake.render;
import org.junit.Test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.ServiceLoader;
import static org.junit.Assert.assertTrue;
public class ServiceLoaderTest {
@Test
public void testLoadRenderer() throws Exception {
URL serviceDescription = ClassLoader.getSystemClassLoader().getResource("META-INF/services/org.jbake.render.RenderingTool");
File services = new File(serviceDescription.toURI());
assertTrue("Service definitions File exists", services.exists());
FileReader fileReader = new FileReader(services);
BufferedReader reader = new BufferedReader(fileReader);
String serviceProvider;
List<String> renderingToolClasses = new ArrayList<String>();
for (RenderingTool tool : ServiceLoader.load(RenderingTool.class)) {
renderingToolClasses.add(tool.getClass().getName());
}
while ((serviceProvider = reader.readLine()) != null) {
assertTrue("Rendering tool " + serviceProvider + " loaded", renderingToolClasses.contains(serviceProvider));
}
}
}