diff options
author | Dominic Rogetzer <e1627756@student.tuwien.ac.at> | 2018-05-02 17:34:31 +0200 |
---|---|---|
committer | Dominic Rogetzer <e01627756@student.tuwien.ac.at> | 2018-05-03 22:48:31 +0200 |
commit | 047d7c9ec72db55f059f24e71df18bbc340b85a0 (patch) | |
tree | bf42a1755cc8490679c74aa0d08f3e229ccff58c /src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util | |
parent | f6bff6fb96fbdf1bd7809221576bd6ab11426e5e (diff) | |
download | sepm-groupproject-047d7c9ec72db55f059f24e71df18bbc340b85a0.tar.gz sepm-groupproject-047d7c9ec72db55f059f24e71df18bbc340b85a0.tar.xz sepm-groupproject-047d7c9ec72db55f059f24e71df18bbc340b85a0.zip |
Add support for high-DPI aware GUI-tests (HighDpiAwareApplicationTest)
Diffstat (limited to 'src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util')
-rw-r--r-- | src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/HighDpiAwareApplicationTest.java | 23 | ||||
-rw-r--r-- | src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/ScaledBounds.java | 33 |
2 files changed, 56 insertions, 0 deletions
diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/HighDpiAwareApplicationTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/HighDpiAwareApplicationTest.java new file mode 100644 index 0000000..1a765d3 --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/HighDpiAwareApplicationTest.java @@ -0,0 +1,23 @@ +package at.ac.tuwien.sepm.assignment.groupphase.util; + +import javafx.geometry.Bounds; +import javafx.scene.Node; +import org.testfx.api.FxRobotContext; +import org.testfx.framework.junit.ApplicationTest; +import org.testfx.service.locator.impl.BoundsLocatorImpl; +import org.testfx.service.locator.impl.PointLocatorImpl; + +public class HighDpiAwareApplicationTest extends ApplicationTest { + + public HighDpiAwareApplicationTest() { + FxRobotContext context = robotContext(); + context.setBoundsLocator(new BoundsLocatorImpl(){ + @Override + public Bounds boundsOnScreenFor(Node node) { + Bounds bounds = super.boundsOnScreenFor(node); + return ScaledBounds.wrap(bounds); + } + }); + robotContext().setPointLocator(new PointLocatorImpl(context.getBoundsLocator())); + } +} diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/ScaledBounds.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/ScaledBounds.java new file mode 100644 index 0000000..78578d1 --- /dev/null +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/ScaledBounds.java @@ -0,0 +1,33 @@ +package at.ac.tuwien.sepm.assignment.groupphase.util; + +import java.awt.GraphicsEnvironment; +import javafx.geometry.BoundingBox; +import javafx.geometry.Bounds; + +public class ScaledBounds extends BoundingBox { + + private static final double scale; + + static { + scale = + 1 / GraphicsEnvironment.getLocalGraphicsEnvironment() + .getDefaultScreenDevice() + .getDefaultConfiguration() + .getDefaultTransform() + .getScaleX(); + } + + public static ScaledBounds wrap(Bounds bounds) { + return new ScaledBounds(bounds); + } + + private ScaledBounds(Bounds wrapped) { + super( + wrapped.getMinX() * scale, + wrapped.getMinY() * scale, + wrapped.getMinZ() * scale, + wrapped.getWidth() * scale, + wrapped.getHeight() * scale, + wrapped.getDepth()); + } +} |