Skip to content
Snippets Groups Projects
Commit 9cd4d3f9 authored by jez04's avatar jez04
Browse files

feat: change project name fix maven test scope

parent 00700142
No related merge requests found
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>vsb-cs-java1</groupId> <groupId>vsb-cs-java1</groupId>
<artifactId>lab06v3</artifactId> <artifactId>lab07v3</artifactId>
<version>0.0.1-SNAPHOST</version> <version>0.0.1-SNAPHOST</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<properties> <properties>
...@@ -51,6 +51,7 @@ ...@@ -51,6 +51,7 @@
<groupId>org.reflections</groupId> <groupId>org.reflections</groupId>
<artifactId>reflections</artifactId> <artifactId>reflections</artifactId>
<version>0.10.2</version> <version>0.10.2</version>
<scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>
......
...@@ -2,7 +2,6 @@ module lab01 { ...@@ -2,7 +2,6 @@ module lab01 {
requires transitive javafx.controls; requires transitive javafx.controls;
requires javafx.fxml; requires javafx.fxml;
requires javafx.base; requires javafx.base;
requires org.reflections;
opens lab to javafx.fxml; opens lab to javafx.fxml;
exports lab; exports lab;
} }
\ No newline at end of file
...@@ -3,20 +3,10 @@ package jez04.structure.test; ...@@ -3,20 +3,10 @@ package jez04.structure.test;
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream; import java.io.PrintStream;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.lang.reflect.Modifier; 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.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
...@@ -36,18 +26,11 @@ import javafx.fxml.FXML; ...@@ -36,18 +26,11 @@ import javafx.fxml.FXML;
class ClassStructureTest { class ClassStructureTest {
private static final String drawableSimulableName = "DrawableSimulable";
private static final String collisionableName = "Collisionable";
Set<String> allClasses = getNameOfAllClasses(); 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 @Test
void gameControllerExistenceTest() { void gameControllerExistenceTest() {
classExist("GameController"); classExist("GameController");
...@@ -61,30 +44,40 @@ class ClassStructureTest { ...@@ -61,30 +44,40 @@ class ClassStructureTest {
Class<?> c = getClass("GameController"); Class<?> c = getClass("GameController");
hasPropertyWithAnnotation(c, ".*", FXML.class); hasPropertyWithAnnotation(c, ".*", FXML.class);
} }
@Test
void countControllersTest() {
assertTrue(countClassesMatches(".*Controller") > 1, "Only one class named .*Controller found");
}
@Test @Test
void gameControllerActionEventTest() { void gameControllerActionEventTest() {
classExist("GameController"); classExist("GameController");
Class<?> c = getClass("GameController"); Class<?> c = getClass("GameController");
hasMethodRegexp(c, ".*", void.class, ActionEvent.class); 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) { private void isInterface(Class<?> c) {
assertTrue(c.isInterface(), c.getName() + " have to be interface."); 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) { private void classExist(String name) {
assertTrue(allClasses.stream().anyMatch(c -> c.endsWith(name)), "Interface " + name + " not found"); assertTrue(allClasses.stream().anyMatch(c -> c.endsWith(name)), "Interface " + name + " not found");
...@@ -200,13 +193,10 @@ class ClassStructureTest { ...@@ -200,13 +193,10 @@ class ClassStructureTest {
} }
private Set<String> getNameOfAllClasses() { private Set<String> getNameOfAllClasses() {
List<String> initClassesName = new ArrayList<>(); List<String> initClassesName = Arrays.asList("lab.Routines", "lab.App", "lab.DrawingThread", "project.loderunner.Game", "cz.vsb.fei.java1.gravityhook.App");
dynamicaliFoundSomeClass(initClassesName);
initClassesName.addAll(List.of("lab.Routines", "lab.App", "lab.DrawingThread"));
for (String className : initClassesName) { for (String className : initClassesName) {
try { try {
Class.forName(className); Class.forName(className);
break;
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
System.out.println(String.format("Class '%s' cannot be loaded: %s", className, e.getMessage())); System.out.println(String.format("Class '%s' cannot be loaded: %s", className, e.getMessage()));
} }
...@@ -228,58 +218,6 @@ class ClassStructureTest { ...@@ -228,58 +218,6 @@ class ClassStructureTest {
return true; return true;
}))); })));
} }
for (String string : allClasses) {
System.out.println(string);
}
return allClasses; 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();
}
}
} }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment