diff --git a/JavaReleases/src/test/java/pl/mperor/lab/java/Java1.java b/JavaReleases/src/test/java/pl/mperor/lab/java/Java1.java
index e682f39..796142c 100644
--- a/JavaReleases/src/test/java/pl/mperor/lab/java/Java1.java
+++ b/JavaReleases/src/test/java/pl/mperor/lab/java/Java1.java
@@ -55,7 +55,7 @@ public void testJavaBean() throws IOException, ClassNotFoundException {
}
private void assertJavaBeanSerializationAndDeserialization(JavaBean bean) throws IOException, ClassNotFoundException {
- var file = new File("src/test/resources/bean");
+ var file = new File("src/test/resources/bean.bin");
try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file))) {
out.writeObject(bean);
}
@@ -107,13 +107,13 @@ public void testRemoteMethodInvocationAkaRMI() throws RemoteException, NotBoundE
HelloService stub = (HelloService) registry.lookup("HelloService");
// Call the remote method and verify the result
- Assertions.assertEquals("Hello World!", stub.sayHello());
+ Assertions.assertEquals("Hello World!", stub.getMessage());
executor.shutdown();
}
interface HelloService extends Remote {
- String sayHello() throws RemoteException;
+ String getMessage() throws RemoteException;
}
static class HelloServiceImpl extends UnicastRemoteObject implements HelloService {
@@ -122,7 +122,7 @@ protected HelloServiceImpl() throws RemoteException {
}
@Override
- public String sayHello() throws RemoteException {
+ public String getMessage() throws RemoteException {
return "Hello World!";
}
}
diff --git a/JavaReleases/src/test/java/pl/mperor/lab/java/Java17.java b/JavaReleases/src/test/java/pl/mperor/lab/java/Java17.java
index 9abbcec..b6ded4c 100644
--- a/JavaReleases/src/test/java/pl/mperor/lab/java/Java17.java
+++ b/JavaReleases/src/test/java/pl/mperor/lab/java/Java17.java
@@ -146,7 +146,7 @@ public void testRmiActivationRemoved() {
@Test
public void testDeserializationFilters() throws IOException, ClassNotFoundException {
- var file = new File("src/test/resources/bean");
+ var file = new File("src/test/resources/bean.bin");
var basePackageFilter = ObjectInputFilter.Config.createFilter("java.base/*;!*");
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(file))) {
diff --git a/JavaReleases/src/test/java/pl/mperor/lab/java/Java3.java b/JavaReleases/src/test/java/pl/mperor/lab/java/Java3.java
index 58ca3df..73e86e2 100644
--- a/JavaReleases/src/test/java/pl/mperor/lab/java/Java3.java
+++ b/JavaReleases/src/test/java/pl/mperor/lab/java/Java3.java
@@ -27,14 +27,14 @@ public void testJavaNamingAndDirectoryInterfaceAkaJNDILookup() throws NamingExce
String bindingName = "hello";
String bindingResult = "Hello World!";
- Context context = new InitialContext();
- context.bind(bindingName, bindingResult);
- String lookupResult = (String) context.lookup(bindingName);
+ Context ctx = new InitialContext();
+ ctx.bind(bindingName, bindingResult);
+ String lookupResult = (String) ctx.lookup(bindingName);
Assertions.assertEquals(bindingResult, lookupResult);
- context.unbind(bindingName);
+ ctx.unbind(bindingName);
Assertions.assertThrows(NamingException.class, () -> {
- context.lookup(bindingName);
+ ctx.lookup(bindingName);
});
}
diff --git a/JavaReleases/src/test/java/pl/mperor/lab/java/Java4.java b/JavaReleases/src/test/java/pl/mperor/lab/java/Java4.java
index 8d59ce0..b4e1d83 100644
--- a/JavaReleases/src/test/java/pl/mperor/lab/java/Java4.java
+++ b/JavaReleases/src/test/java/pl/mperor/lab/java/Java4.java
@@ -12,7 +12,6 @@
import java.nio.channels.SocketChannel;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.nio.file.Paths;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executors;
import java.util.logging.Logger;
@@ -35,21 +34,22 @@ public void testAssertionKeyWord() {
@Test
public void testNewInputOutputAkaNIO() throws IOException {
- Path path = Paths.get("src", "test", "resources", "nio.txt");
+ Path path = Path.of("src", "test", "resources", "nio.txt");
byte[] fileBytes = Files.readAllBytes(path);
String content = new String(fileBytes);
+
Assertions.assertEquals("Hello NIO!", content);
}
@Test
public void testRegex() {
Pattern pattern = Pattern.compile("
(.*)", Pattern.DOTALL);
- Matcher matcher = pattern.matcher(getTestHtml());
+ Matcher matcher = pattern.matcher(createTestHtml());
Assertions.assertTrue(matcher.find());
Assertions.assertEquals("Title", matcher.group(1));
}
- private String getTestHtml() {
+ private String createTestHtml() {
return """
@@ -89,6 +89,7 @@ public void testImageIO() throws IOException {
BufferedImage image = ImageIO.read(new File("src/test/resources/imageio.png"));
Assertions.assertTrue(ImageIO.write(image, "jpg", File.createTempFile("imageio", ".jpg")));
}
+
@Test
public void testServerClientSocketChannel() throws IOException, InterruptedException {
int port = 8004;
@@ -124,5 +125,4 @@ private void handleConnectedClient(ServerSocket serverSocket) throws IOException
}
}
-
}
\ No newline at end of file
diff --git a/JavaReleases/src/test/java/pl/mperor/lab/java/Java5.java b/JavaReleases/src/test/java/pl/mperor/lab/java/Java5.java
index 3b42320..b153c11 100644
--- a/JavaReleases/src/test/java/pl/mperor/lab/java/Java5.java
+++ b/JavaReleases/src/test/java/pl/mperor/lab/java/Java5.java
@@ -31,7 +31,7 @@ public void testGenerics() {
Box rawBox = new Box();
rawBox.setContent("Hello").setContent(1);
Assertions.assertThrows(ClassCastException.class, () -> {
- String rawBoxContent = (String) rawBox.getContent();
+ String wrongTypeContent = (String) rawBox.getContent();
});
Integer rawBoxContent = (Integer) rawBox.getContent();
Assertions.assertEquals(1, rawBoxContent);
@@ -124,7 +124,7 @@ public void testScheduledExecutor() throws InterruptedException {
latch.countDown();
}, 0, 100, TimeUnit.MILLISECONDS);
- boolean completed = latch.await(300, TimeUnit.MILLISECONDS);
+ boolean completed = latch.await(200, TimeUnit.MILLISECONDS);
Assertions.assertTrue(completed, "Task did not execute twice in time");
Assertions.assertEquals(2, counter.get());
diff --git a/JavaReleases/src/test/java/pl/mperor/lab/java/Java6.java b/JavaReleases/src/test/java/pl/mperor/lab/java/Java6.java
index 50d9a03..0fb6d7c 100644
--- a/JavaReleases/src/test/java/pl/mperor/lab/java/Java6.java
+++ b/JavaReleases/src/test/java/pl/mperor/lab/java/Java6.java
@@ -2,6 +2,7 @@
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
+import pl.mperor.lab.common.TestUtils;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
@@ -11,6 +12,10 @@
import java.awt.*;
import java.io.File;
import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
import java.nio.file.Files;
/**
@@ -32,12 +37,12 @@ public void testScriptingLanguageSupport() throws ScriptException {
}
@Test
- public void testJavaDynamicCompilation() throws IOException {
- File sourceFile = new File("./HelloWorld.java");
+ public void testJavaDynamicCompilation() throws IOException, ClassNotFoundException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
+ File sourceFile = new File("HelloWorld.java");
String javaSourceCode = """
public class HelloWorld {
- public static void main(String[] args) {
- System.out.println("Hello World!");
+ public void sayHello() {
+ System.out.print("Hello World!");
}
}
""";
@@ -45,11 +50,23 @@ public static void main(String[] args) {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
Assertions.assertNotNull(compiler, "JavaCompiler should not be null");
-
int compilationResult = compiler.run(null, null, null, sourceFile.getAbsolutePath());
Assertions.assertEquals(0, compilationResult, "Compilation should succeed with result 0!");
+ assertHelloWorldClassAccessible();
+
Assertions.assertTrue(sourceFile.delete(), "Source file should be deleted after compilation");
- Assertions.assertTrue(new File("./HelloWorld.class").delete(), "Now compilation result can be deleted!");
+ Assertions.assertTrue(new File("HelloWorld.class").delete(), "Now compilation result can be deleted!");
+ }
+
+ private void assertHelloWorldClassAccessible() throws MalformedURLException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
+ URL[] urls = {new File("").toURI().toURL()};
+ URLClassLoader loader = new URLClassLoader(urls);
+ Class> clazz = loader.loadClass("HelloWorld");
+ Object instance = clazz.getDeclaredConstructor().newInstance();
+ var readableOut = TestUtils.setTempSystemOut();
+ clazz.getDeclaredMethod("sayHello").invoke(instance);
+ Assertions.assertEquals(readableOut.all(), "Hello World!");
+ TestUtils.resetSystemOut();
}
@Test
diff --git a/JavaReleases/src/test/java/pl/mperor/lab/java/Java8.java b/JavaReleases/src/test/java/pl/mperor/lab/java/Java8.java
index a510df9..2a4d911 100644
--- a/JavaReleases/src/test/java/pl/mperor/lab/java/Java8.java
+++ b/JavaReleases/src/test/java/pl/mperor/lab/java/Java8.java
@@ -72,6 +72,11 @@ public void testCustomFunctionalInterface() {
assertFunctionalInterface(Testable.class);
}
+ @FunctionalInterface
+ public interface Testable {
+ void test();
+ }
+
private static void assertFunctionalInterface(Class> clazz) {
if (!clazz.isInterface()) {
Assertions.fail("Clazz is not an interface!");
@@ -86,11 +91,6 @@ private static void assertFunctionalInterface(Class> clazz) {
"Functional interface should contain exactly one abstract method, but @FunctionalInterface is optional!");
}
- @FunctionalInterface
- public interface Testable {
- void test();
- }
-
@Test
public void testDefaultAndStaticMethodsInInterface() throws NoSuchMethodException {
Tester tester = () -> new Testable[]{
diff --git a/JavaReleases/src/test/resources/bean b/JavaReleases/src/test/resources/bean.bin
similarity index 100%
rename from JavaReleases/src/test/resources/bean
rename to JavaReleases/src/test/resources/bean.bin