package org.smoothbuild.builtin.java.junit; import static org.smoothbuild.db.values.ValuesDb.memoryValuesDb; import static org.smoothbuild.io.fs.base.Path.path; import static org.smoothbuild.testing.db.values.ValueCreators.file; import static org.smoothbuild.util.Classes.binaryPath; import static org.testory.Testory.given; import static org.testory.Testory.thenReturned; import static org.testory.Testory.when; import static org.testory.common.Matchers.same; import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.junit.Test; import org.smoothbuild.db.values.ValuesDb; import org.smoothbuild.lang.value.SFile; import org.smoothbuild.util.Classes; public class FileClassLoaderTest { private final ValuesDb valuesDb = memoryValuesDb(); private FileClassLoader fileClassLoader; private SFile file; private Class<MyClass> klass; @Test public void loads_class_from_binary() throws Exception { given(klass = FileClassLoaderTest.MyClass.class); given(file = createByteCodeFile(klass)); given(fileClassLoader = new FileClassLoader(map(klass.getName(), file))); when(fileClassLoader.findClass(klass.getName()).getClassLoader()); thenReturned(same(fileClassLoader)); } private static Map<String, SFile> map(String name, SFile file) { HashMap<String, SFile> result = new HashMap<>(); result.put(name, file); return result; } private SFile createByteCodeFile(Class<?> klass) throws IOException { return file(valuesDb, path(binaryPath(klass)), Classes.bytecode(klass)); } public static class MyClass { public static String myMethod() { return "myResult"; } } }