Update NormalizedSkin (#2036)

* Update NormalizedSkin

* Add tests

* update

* update
This commit is contained in:
Glavo
2023-02-02 21:26:27 +08:00
committed by GitHub
parent 3d9c9689e3
commit c86302df58
6 changed files with 100 additions and 33 deletions

View File

@@ -26,7 +26,9 @@ public final class JavaFXLauncher {
private JavaFXLauncher() {
}
public static void start() {
private static boolean started = false;
static {
// init JavaFX Toolkit
try {
// Java 9 or Latter
@@ -35,12 +37,26 @@ public final class JavaFXLauncher {
javafx.application.Platform.class, "startup", MethodType.methodType(void.class, Runnable.class));
startup.invokeExact((Runnable) () -> {
});
} catch (Throwable e) {
started = true;
} catch (NoSuchMethodException e) {
// Java 8
try {
Class.forName("javafx.embed.swing.JFXPanel").getDeclaredConstructor().newInstance();
} catch (Throwable ignored) {
started = true;
} catch (Throwable e0) {
e0.printStackTrace();
}
} catch (IllegalStateException e) {
started = true;
} catch (Throwable e) {
e.printStackTrace();
}
}
public static void start() {
}
public static boolean isStarted() {
return started;
}
}

View File

@@ -17,13 +17,13 @@
*/
package org.jackhuang.hmcl.util;
import org.jackhuang.hmcl.JavaFXLauncher;
import org.jackhuang.hmcl.task.Schedulers;
import org.jackhuang.hmcl.task.Task;
import org.jackhuang.hmcl.task.TaskExecutor;
import org.jackhuang.hmcl.util.platform.JavaVersion;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledIf;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -75,8 +75,9 @@ public class TaskTest {
assertTrue(bool.get(), "withRunAsync should be executed");
}
@Test
@EnabledIf("org.jackhuang.hmcl.JavaFXLauncher#isStarted")
public void testThenAccept() {
JavaFXLauncher.start();
AtomicBoolean flag = new AtomicBoolean();
boolean result = Task.supplyAsync(JavaVersion::fromCurrentEnvironment)
.thenAcceptAsync(Schedulers.javafx(), javaVersion -> {

View File

@@ -0,0 +1,30 @@
package org.jackhuang.hmcl.util.skin;
import javafx.scene.image.Image;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledIf;
import java.nio.file.Paths;
import static org.junit.jupiter.api.Assertions.*;
public class NormalizedSkinTest {
private static NormalizedSkin getSkin(String name) throws InvalidSkinException {
String path = Paths.get("../HMCL/src/main/resources/assets/img/skin/" + name + ".png").normalize().toAbsolutePath().toUri().toString();
return new NormalizedSkin(new Image(path));
}
@Test
@EnabledIf("org.jackhuang.hmcl.JavaFXLauncher#isStarted")
public void testIsSlim() throws Exception {
assertFalse(getSkin("steve").isSlim());
assertTrue(getSkin("alex").isSlim());
assertTrue(getSkin("noor").isSlim());
assertFalse(getSkin("sunny").isSlim());
assertFalse(getSkin("ari").isSlim());
assertFalse(getSkin("zuri").isSlim());
assertTrue(getSkin("makena").isSlim());
assertFalse(getSkin("kai").isSlim());
assertTrue(getSkin("efe").isSlim());
}
}