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 | |
| 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')
3 files changed, 58 insertions, 2 deletions
diff --git a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeControllerTest.java b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeControllerTest.java index 58f1394..53dc215 100644 --- a/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeControllerTest.java +++ b/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/employee/CreateNewEmployeeControllerTest.java @@ -3,6 +3,7 @@ package at.ac.tuwien.sepm.assignment.groupphase.employee;  import static org.mockito.ArgumentMatchers.any;  import static org.mockito.Mockito.when; +import at.ac.tuwien.sepm.assignment.groupphase.util.HighDpiAwareApplicationTest;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeService;  import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException;  import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; @@ -19,10 +20,9 @@ import org.junit.Assert;  import org.junit.Before;  import org.junit.Test;  import org.testfx.api.FxToolkit; -import org.testfx.framework.junit.ApplicationTest;  import org.testfx.robot.Motion; -public class CreateNewEmployeeControllerTest extends ApplicationTest { +public class CreateNewEmployeeControllerTest extends HighDpiAwareApplicationTest {      @Before      public void setup() throws Exception { 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()); +    } +}  | 
