@Test
public void testTransformPointCRSs() throws Exception {

    //double lat = 33.02221;
    //double lon = -179.99;
    double lat = 61.49802149449156;
    double lon = 23.7603118;
    CoordinateReferenceSystem CRS4326 = CRS.decode(EPSG_4326); //ne
    CoordinateReferenceSystem CRS3035 = CRS.decode(EPSG_3035); //ne
    CoordinateReferenceSystem CRS3067 = CRS.decode(EPSG_3067);  //en
    CoordinateReferenceSystem CRS3857 = CRS.decode(EPSG_3857);  //en
    Point p3 = ProjectionHelper.transformPoint(lon, lat, CRS4326, CRS3035);
    //System.out.println("4326to3035 " + p3.toString());
    Point p4 = ProjectionHelper.transformPoint(p3.getLon(), p3.getLat(), CRS3035, CRS4326);
    //System.out.println("3035to4326 " + p4.toString());
    assertEquals("lon 3035to4326", lon, p4.getLon(), 0.000001);  // unit degree
    assertEquals("lat 3035to4326", lat, p4.getLat(), 0.000001);
    Point p5 = ProjectionHelper.transformPoint(p4.getLon(), p4.getLat(), CRS4326, CRS3067);
    //System.out.println("4326to3067 " + p5.toString());
    Point p6 = ProjectionHelper.transformPoint(p5.getLon(), p5.getLat(), CRS3067, CRS4326);
    //System.out.println("3067to4326 " + p6.toString());
    assertEquals("lon 3067to4326", lon, p6.getLon(), 0.000001); // unit degree
    assertEquals("lat 3067to4326", lat, p6.getLat(), 0.000001);
    Point p7 = ProjectionHelper.transformPoint(p5.getLon(), p5.getLat(), CRS3067, CRS3857);
    //System.out.println("3067to3857 " + p7.toString());
    Point p8 = ProjectionHelper.transformPoint(p7.getLon(), p7.getLat(), CRS3857, CRS3067);
    //System.out.println("3857to3067 " + p8.toString());
    assertEquals("lon 3857to3067", p5.getLon(), p8.getLon(), 0.01); // unit m, tolerance 1 cm
    assertEquals("lat 3857to3067", p5.getLat(), p8.getLat(), 0.01);
}