From 9cd4d3f9563b9569d04c7a3673a864feb7c82f60 Mon Sep 17 00:00:00 2001
From: jez04 <david.jezek@post.cz>
Date: Wed, 6 Nov 2024 22:18:44 +0100
Subject: [PATCH] feat: change project name fix maven test scope

---
 pom.xml                                       |   3 +-
 src/main/java/module-info.java                |   1 -
 .../structure/test/ClassStructureTest.java    | 114 ++++--------------
 3 files changed, 28 insertions(+), 90 deletions(-)

diff --git a/pom.xml b/pom.xml
index 8d8600b..09bb40b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>vsb-cs-java1</groupId>
-	<artifactId>lab06v3</artifactId>
+	<artifactId>lab07v3</artifactId>
 	<version>0.0.1-SNAPHOST</version>
 	<packaging>jar</packaging>
 	<properties>
@@ -51,6 +51,7 @@
 			<groupId>org.reflections</groupId>
 			<artifactId>reflections</artifactId>
 			<version>0.10.2</version>
+			<scope>test</scope>
 		</dependency>
 
 	</dependencies>
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index de0ed33..736971c 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -2,7 +2,6 @@ module lab01 {
     requires transitive javafx.controls;
     requires javafx.fxml;
     requires javafx.base;
-	requires org.reflections;
     opens lab to javafx.fxml;
     exports lab;
 }
\ No newline at end of file
diff --git a/src/test/java/jez04/structure/test/ClassStructureTest.java b/src/test/java/jez04/structure/test/ClassStructureTest.java
index a2bd575..fa5f2e5 100644
--- a/src/test/java/jez04/structure/test/ClassStructureTest.java
+++ b/src/test/java/jez04/structure/test/ClassStructureTest.java
@@ -3,20 +3,10 @@ package jez04.structure.test;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
 import java.io.PrintStream;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.nio.file.FileVisitResult;
-import java.nio.file.FileVisitor;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.attribute.BasicFileAttributes;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
@@ -36,18 +26,11 @@ import javafx.fxml.FXML;
 
 class ClassStructureTest {
 
+	private static final String drawableSimulableName = "DrawableSimulable";
+	private static final String collisionableName = "Collisionable";
 
 	Set<String> allClasses = getNameOfAllClasses();
 
-	@Test
-	void printAllclassesTest() {
-		System.out.println("=========================================");
-		System.out.println("All detected classes:");
-		for (String name : allClasses) {
-			System.out.println(name);
-		}
-		System.out.println("=========================================");
-	}
 	@Test
 	void gameControllerExistenceTest() {
 		classExist("GameController");
@@ -61,30 +44,40 @@ class ClassStructureTest {
 		Class<?> c = getClass("GameController");
 		hasPropertyWithAnnotation(c, ".*", FXML.class);
 	}
-
-	@Test
-	void countControllersTest() {
-		assertTrue(countClassesMatches(".*Controller") > 1, "Only one class named .*Controller found"); 
-	}
 	@Test
 	void gameControllerActionEventTest() {
 		classExist("GameController");
 		Class<?> c = getClass("GameController");
 		hasMethodRegexp(c, ".*", void.class, ActionEvent.class);
 	}
+	@Test
+	void gameControllerLambdaTest() {
+		classExist("GameController");
+		Class<?> c = getClass("GameController");
+		hasMethodRegexp(c, "lambda$.*", void.class, ActionEvent.class);
+	}
+
+	@Test
+	void cannonExistenceTest() {
+		classExist("Player");
+	}
+	@Test
+	void cannonExistenceSetAngleTest() {
+		classExist("Player");
+		Class<?> c = getClass("Player");
+		hasMethod(c, "setAngle");
+	}
+	@Test
+	void cannonExistenceSetSpeedTest() {
+		classExist("Player");
+		Class<?> c = getClass("Player");
+		hasMethod(c, "setSpeed");
+	}
 
 
 	private void isInterface(Class<?> c) {
 		assertTrue(c.isInterface(), c.getName() + " have to be interface.");
 	}
-	
-	private long countClassesMatches(String nameRegExp) {
-		return allClasses.stream().filter(c -> c.matches(nameRegExp)).count();
-	}
-	
-	private List<String> getClassesMatches(String nameRegExp) {
-		return allClasses.stream().filter(c -> c.matches(nameRegExp)).toList();
-	}
 
 	private void classExist(String name) {
 		assertTrue(allClasses.stream().anyMatch(c -> c.endsWith(name)), "Interface " + name + " not found");
@@ -200,13 +193,10 @@ class ClassStructureTest {
 	}
 
 	private Set<String> getNameOfAllClasses() {
-		List<String> initClassesName = new ArrayList<>();
-		dynamicaliFoundSomeClass(initClassesName);
-		initClassesName.addAll(List.of("lab.Routines", "lab.App", "lab.DrawingThread"));
+		List<String> initClassesName = Arrays.asList("lab.Routines", "lab.App", "lab.DrawingThread", "project.loderunner.Game", "cz.vsb.fei.java1.gravityhook.App");
 		for (String className : initClassesName) {
 			try {
 				Class.forName(className);
-				break;
 			} catch (ClassNotFoundException e) {
 				System.out.println(String.format("Class '%s' cannot be loaded: %s", className, e.getMessage()));
 			}
@@ -228,58 +218,6 @@ class ClassStructureTest {
 				return true;
 			})));
 		}
-		for (String string : allClasses) {
-			System.out.println(string);
-		}
 		return allClasses;
 	}
-	private void dynamicaliFoundSomeClass(List<String> initClassesName) {
-		URL myClassUrl = ClassStructureTest.class.getResource("ClassStructureTest.class");
-		myClassUrl.getFile();
-		try {
-			Path classRoot = Paths.get(myClassUrl.toURI()).getParent().getParent().getParent().getParent();
-			if("test-classes".equals(classRoot.getFileName().toString())) {
-				classRoot = classRoot.getParent().resolve("classes"); 
-			}
-			System.out.println("class root: " + classRoot);
-			final Path classRootFinal = classRoot;
-			Files.walkFileTree(classRoot, new FileVisitor<Path>() {
-
-				@Override
-				public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
-					if(List.of("jez04", "META-INF").contains(dir.getFileName().toString())) {
-						return FileVisitResult.SKIP_SUBTREE;
-					}
-					return FileVisitResult.CONTINUE;
-				}
-
-				@Override
-				public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
-					System.out.println("VISIT: " + file);
-					if("module-info.class".equals(file.getFileName().toString())) {
-						return FileVisitResult.CONTINUE;
-					}
-					if(!file.getFileName().toString().endsWith(".class")) {
-						return FileVisitResult.CONTINUE;
-					}
-					String foundClassName = classRootFinal.relativize(file).toString(); 
-					foundClassName = foundClassName.substring(0, foundClassName.length()-6).replace(File.separatorChar, '.');
-					initClassesName.add(foundClassName);
-					return FileVisitResult.TERMINATE;
-				}
-
-				@Override
-				public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
-					return FileVisitResult.CONTINUE;
-				}
-
-				@Override
-				public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
-					return FileVisitResult.CONTINUE;
-				}
-			});
-		} catch (URISyntaxException | IOException e) {
-			e.printStackTrace();
-		}
-	}
 }
-- 
GitLab