PointTest.java
/**
* Copyright (c) 2025, RTE (http://www.rte-france.com)
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* SPDX-License-Identifier: MPL-2.0
*/
package com.powsybl.diagram.util.layout.geometry;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author Nathan Dissoubray {@literal <nathan.dissoubray at rte-france.com>}
*/
class PointTest {
@Test
void applyForce() {
Vector2D force1 = new Vector2D(3, 7);
Vector2D force2 = new Vector2D(2, -5);
Vector2D force3 = new Vector2D(-12, -6.6);
Vector2D force4 = new Vector2D(-2, 4);
Point point = new Point(6, 90);
point.applyForce(force1);
assertEquals(3, point.getForces().getX());
assertEquals(7, point.getForces().getY());
point.applyForce(force2);
assertEquals(5, point.getForces().getX());
assertEquals(2, point.getForces().getY());
point.applyForce(force3);
assertEquals(-7, point.getForces().getX());
assertEquals(-4.6, point.getForces().getY(), 0.001);
point.applyForce(force4);
assertEquals(-9, point.getForces().getX());
assertEquals(-0.6, point.getForces().getY(), 0.001);
}
@Test
void positionTest() {
Point point = new Point(42, -71);
assertEquals(42, point.getPosition().getX());
assertEquals(-71, point.getPosition().getY());
point.setPosition(new Vector2D(-3, 0.9));
assertEquals(-3, point.getPosition().getX());
assertEquals(0.9, point.getPosition().getY());
}
@Test
void velocityTest() {
Point point = new Point(434, 8989);
assertEquals(0, point.getVelocity().getX());
assertEquals(0, point.getVelocity().getY());
point.setVelocity(new Vector2D(4, 90909));
assertEquals(4, point.getVelocity().getX());
assertEquals(90909, point.getVelocity().getY());
}
@Test
void getEnergy() {
Point point = new Point(56, 5, 6.4);
point.setVelocity(new Vector2D(4, -6));
assertEquals(166.4, point.getEnergy(), 0.1);
}
@Test
void getMass() {
Point point = new Point(0, 0);
assertEquals(1, point.getMass());
Exception exception = assertThrows(IllegalStateException.class, () -> {
new Point(1, 2, -6);
});
assertTrue(exception.getMessage().contains("Point with a negative mass is not allowed"));
Point point2 = new Point(-3, -5, 0.01);
assertEquals(0.01, point2.getMass());
}
@Test
void resetForces() {
Point point = new Point(-7.6, -12474);
point.applyForce(new Vector2D(59598, 7887));
point.applyForce(new Vector2D(233, -66767));
assertNotEquals(0, point.getForces().getX());
assertNotEquals(0, point.getForces().getY());
point.resetForces();
assertEquals(0, point.getForces().getX());
assertEquals(0, point.getForces().getY());
}
@Test
void distanceTo() {
Point point1 = new Point(2, 4);
Point point2 = new Point(-6, -2);
double distance = point1.distanceTo(point2);
assertEquals(10, distance);
double otherDistance = point2.distanceTo(point1);
assertEquals(distance, otherDistance);
assertEquals(0, point1.distanceTo(point1));
assertEquals(0, point2.distanceTo(point2));
}
}