package service;
import api.v1.*;
import org.junit.Test;
import util.InMemoryDbTest;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertNull;
public class CoordinateConversionServiceTest extends InMemoryDbTest {
@Test
public void testConvertDecimal(){
Position p = new Position();
p.dec = new PositionDecimalDegrees();
p.dec.setLatitude(55.0);
p.dec.setLongitude(3.0);
p.coordinateFormat = CoordinateFormat.DECIMAL_DEGREES;
CoordinateConversionService service = new CoordinateConversionService(fakeUser);
assertNull("dms null", p.dms);
assertNull("utm null", p.utm);
Position p2 = service.convertCoordinates(p);
assertNotNull("dms not null", p2.dms);
assertNotNull("dms.latDeg not null", p2.dms.latDeg);
assertNotNull("dms.latMin not null", p2.dms.latMin);
assertNotNull("dms.latSec not null", p2.dms.latSec);
assertNotNull("dms.longDeg not null", p2.dms.longDeg);
assertNotNull("dms.longMin not null", p2.dms.longMin);
assertNotNull("dms.longSec not null", p2.dms.longSec);
assertEquals("latDeg",55, p2.dms.latDeg.intValue());
assertEquals("latMin",0, p2.dms.latMin.intValue());
assertEquals("latSec",0.0, p2.dms.latSec,0.01);
assertEquals("longDeg", 3, p2.dms.longDeg.intValue());
assertEquals("longMin", 0, p2.dms.longMin.intValue());
assertEquals("longSec", 0.0, p2.dms.longSec,0.01);
assertNotNull("utm not null", p2.utm);
assertEquals("utm","31 U 500000 6094791",p2.utm.toString());
}
@Test
public void testConvertDMS(){
Position p = new Position();
p.dms = new PositionDMS();
p.dms.latDeg = 55;
p.dms.latMin = 0;
p.dms.latSec = 0;
p.dms.latDirection = "N";
p.dms.longDeg = 3;
p.dms.longMin = 0;
p.dms.longSec = 0;
p.dms.longDirection = "E";
p.coordinateFormat = CoordinateFormat.DEGREES_MINUTES_SECONDS;
CoordinateConversionService service = new CoordinateConversionService(fakeUser);
assertNull("dec null", p.dec);
assertNull("utm null", p.utm);
Position p2 = service.convertCoordinates(p);
assertNotNull("dec not null", p2.dec);
assertNotNull(p2.dms.latDeg);
assertNotNull(p2.dms.latMin);
assertNotNull(p2.dms.latSec);
assertNotNull(p2.dms.longDeg);
assertNotNull(p2.dms.longMin);
assertNotNull(p2.dms.longSec);
assertEquals("latDeg",55, p2.dms.latDeg.intValue());
assertEquals("latMin", 0, p2.dms.latMin.intValue());
assertEquals("latSec",0 , p2.dms.latSec.intValue());
assertEquals("longDeg", 3, p2.dms.longDeg.intValue());
assertEquals("longMin", 0, p2.dms.longMin.intValue());
assertEquals("longSec", 0.0, p2.dms.longSec,0.01);
assertNotNull("utm not null", p2.utm);
assertNotNull("utm zone not null", p2.utm.zone);
assertNotNull("utm band not null", p2.utm.band);
assertNotNull("utm easting not null", p2.utm.easting);
assertNotNull("utm northing not null", p2.utm.northing);
assertEquals("zone","31",p2.utm.zone);
assertEquals("band","U",p2.utm.band);
assertEquals("easting",500000,p2.utm.easting.intValue());
assertEquals("northing",6094791,p2.utm.northing.intValue());
assertEquals("utm","31 U 500000 6094791",p2.utm.toString());
}
@Test
public void testConvertUTM(){
Position p = new Position();
p.utm = new PositionUTM();
p.utm.zone = "31";
p.utm.band = "U";
p.utm.easting = 500000;
p.utm.northing = 6094792;
p.coordinateFormat = CoordinateFormat.UTM;
CoordinateConversionService service = new CoordinateConversionService(fakeUser);
assertNull("dec null", p.dec);
assertNull("dms null", p.dms);
Position p2 = service.convertCoordinates(p);
assertNotNull("dec not null", p2.dec);
assertNotNull("dec.latitude null", p2.dec.getLatitude());
assertNotNull("dec.longitude null", p2.dec.getLongitude());
assertEquals("dec.longitude",55.0,p2.dec.getLatitude(),0.0001);
assertEquals("dec.latitude",3.0,p2.dec.getLongitude(),0.0001);
assertNotNull(p2.dms.latDeg);
assertNotNull(p2.dms.latMin);
assertNotNull(p2.dms.latSec);
assertNotNull(p2.dms.longDeg);
assertNotNull(p2.dms.longMin);
assertNotNull(p2.dms.longSec);
assertEquals("latDeg",55, p2.dms.latDeg.intValue());
assertEquals("latMin", 0, p2.dms.latMin.intValue());
assertEquals("latSec",0, p2.dms.latSec.intValue());
assertEquals("longDeg", 3, p2.dms.longDeg.intValue());
assertEquals("longMin", 0, p2.dms.longMin.intValue());
assertEquals("longSec", 0, p2.dms.longSec.intValue());
assertNotNull("utm not null", p2.utm);
assertNotNull("utm zone not null", p2.utm.zone);
assertNotNull("utm band not null", p2.utm.band);
assertNotNull("utm easting not null", p2.utm.easting);
assertNotNull("utm northing not null", p2.utm.northing);
assertEquals("zone","31",p2.utm.zone);
assertEquals("band","U",p2.utm.band);
assertEquals("easting",500000,p2.utm.easting.intValue());
assertEquals("northing",6094792,p2.utm.northing.intValue());
assertEquals("utm","31 U 500000 6094792",p2.utm.toString());
}
}