package org.smoothbuild.builtin.java.javac; import static java.util.Arrays.asList; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.smoothbuild.builtin.java.javac.PackagedJavaFileObjects.classesFromJars; import static org.smoothbuild.db.values.ValuesDb.memoryValuesDb; import static org.smoothbuild.io.fs.base.Path.path; import static org.smoothbuild.task.exec.ContainerImpl.containerImpl; import static org.smoothbuild.testing.common.JarTester.jar; import static org.smoothbuild.testing.db.values.ValueCreators.file; import static org.testory.Testory.given; import static org.testory.Testory.thenReturned; import static org.testory.Testory.thenThrown; import static org.testory.Testory.when; import org.junit.Test; import org.smoothbuild.lang.message.Message; import org.smoothbuild.lang.plugin.Container; import org.smoothbuild.lang.value.Blob; import org.smoothbuild.lang.value.SFile; public class PackagedJavaFileObjectsTest { private final Container container = containerImpl(); private SFile file1; private SFile file2; private Blob jar; @Test public void files_from_library_jars_are_accessible_as_java_objects() throws Exception { given(file1 = file(memoryValuesDb(), path("my/package/MyKlass.class"))); given(file2 = file(memoryValuesDb(), path("my/package/MyKlass2.class"))); given(jar = jar(file1, file2)); when(classesFromJars(container, asList(jar))); thenReturned(containsInAnyOrder(new InputClassFile(file1), new InputClassFile(file2))); } @Test public void duplicateClassFileException() throws Exception { given(file1 = file(memoryValuesDb(), path("my/package/MyKlass.class"))); given(jar = jar(file1)); when(() -> classesFromJars(container, asList(jar, jar))); thenThrown(Message.class); } }