/******************************************************************************* * Gisgraphy Project * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA * * Copyright 2008 Gisgraphy project * * David Masclet <davidmasclet@gisgraphy.com> ******************************************************************************/ package com.gisgraphy.street; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; import org.junit.Assert; import org.junit.Test; import com.gisgraphy.domain.geoloc.entity.AlternateName; import com.gisgraphy.domain.geoloc.entity.AlternateOsmName; import com.gisgraphy.domain.geoloc.entity.HouseNumber; import com.gisgraphy.domain.geoloc.entity.OpenStreetMap; import com.gisgraphy.domain.geoloc.entity.Street; import com.gisgraphy.domain.valueobject.AlternateNameSource; import com.gisgraphy.domain.valueobject.SpeedMode; import com.gisgraphy.helper.GeolocHelper; import com.vividsolutions.jts.geom.Point; public class StreetFactoryTest { @Test public void createShouldCreate(){ long gid = 12345L; long openstreetmapId = 5678L; String name= "california street"; Double length = 5.6D; boolean oneWay = true; String isIn = "los angeles"; String isInPlace = "french quater"; String isInAdm = "adm"; Set<String> isInZip = new HashSet<String>(); String isInZip1 = "zip"; String isInZip2 = "zip2"; isInZip.add(isInZip1); isInZip.add(isInZip2); String fullyQualifiedName ="fullyQualifiedName"; StreetType streetType = StreetType.SECONDARY_LINK; String countryCode = "FR"; Point location = GeolocHelper.createPoint(10.2F, 9.5F); OpenStreetMap openStreetMap = new OpenStreetMap(); openStreetMap.setGid(gid); openStreetMap.setCountryCode(countryCode); openStreetMap.setName(name); openStreetMap.setLocation(location); openStreetMap.setLength(length); openStreetMap.setStreetType(streetType); openStreetMap.setStreetRef("A1"); openStreetMap.setOneWay(oneWay); openStreetMap.setOpenstreetmapId(openstreetmapId); openStreetMap.setIsIn(isIn); openStreetMap.setIsInAdm(isInAdm); openStreetMap.setAdm1Name("adm1Name"); openStreetMap.setAdm2Name("adm2Name"); openStreetMap.setAdm3Name("adm3Name"); openStreetMap.setAdm4Name("adm4Name"); openStreetMap.setAdm5Name("adm5Name"); openStreetMap.setIsInPlace(isInPlace); openStreetMap.setIsInZip(isInZip); openStreetMap.setZipCode("zipCode"); openStreetMap.setFullyQualifiedName(fullyQualifiedName); HouseNumber houseNumber = new HouseNumber(); houseNumber.setLocation(GeolocHelper.createPoint(10.3F, 9.6F)); houseNumber.setNumber("1"); SortedSet<HouseNumber> houseNumbers = new TreeSet<HouseNumber>(); houseNumbers.add(houseNumber); openStreetMap.setHouseNumbers(houseNumbers); openStreetMap.setLabel("label"); openStreetMap.setLabelPostal("labelPostal"); openStreetMap.setToll(true); openStreetMap.setSurface("surface"); openStreetMap.setLanes(2); openStreetMap.setMaxSpeed("30"); openStreetMap.setSpeedMode(SpeedMode.OSM);; openStreetMap.setMaxSpeedBackward("50"); openStreetMap.setAzimuthStart(10); openStreetMap.setAzimuthEnd(20); openStreetMap.addAlternateLabel("alternateLabel"); openStreetMap.addAlternateLabel("alternateLabel2"); List<AlternateOsmName> alternateNames = new ArrayList<AlternateOsmName>(); alternateNames.add(new AlternateOsmName("altname",AlternateNameSource.PERSONAL)); alternateNames.add(new AlternateOsmName("altname2",AlternateNameSource.OPENSTREETMAP)); openStreetMap.addAlternateNames(alternateNames); Set<String> citiesAlternateNames = new HashSet<String>(); citiesAlternateNames.add("city1"); citiesAlternateNames.add("city2"); openStreetMap.addIsInCitiesAlternateNames(citiesAlternateNames); StreetFactory factory = new StreetFactory(); Street street = factory.create(openStreetMap); Assert.assertEquals(new Long(gid), street.getFeatureId()); Assert.assertEquals(new Long(openstreetmapId), street.getOpenstreetmapId()); Assert.assertEquals(name, street.getName()); Assert.assertEquals(location, street.getLocation()); Assert.assertEquals(length, street.getLength()); Assert.assertEquals(streetType, street.getStreetType()); Assert.assertEquals("A1", street.getStreetRef()); Assert.assertEquals(oneWay, street.isOneWay()); Assert.assertEquals(countryCode, street.getCountryCode()); Assert.assertEquals(isIn, street.getIsIn()); Assert.assertEquals(isInPlace, street.getIsInPlace()); Assert.assertEquals(isInAdm, street.getIsInAdm()); Assert.assertEquals("adm1Name", street.getAdm1Name()); Assert.assertEquals("adm2Name", street.getAdm2Name()); Assert.assertEquals("adm3Name", street.getAdm3Name()); Assert.assertEquals("adm4Name", street.getAdm4Name()); Assert.assertEquals("adm5Name", street.getAdm5Name()); Assert.assertEquals(isInZip, street.getIsInZip()); Assert.assertEquals(openStreetMap.getZipCode(), street.getZipCode()); Assert.assertEquals("label",street.getLabel()); Assert.assertEquals("labelPostal",street.getLabelPostal()); Assert.assertTrue(street.isToll()); Assert.assertEquals("surface",street.getSurface()); Assert.assertEquals(2,street.getLanes().intValue()); Assert.assertEquals("30",street.getMaxSpeed()); Assert.assertEquals(SpeedMode.OSM,street.getSpeedMode()); Assert.assertEquals("50",street.getMaxSpeedBackward()); Assert.assertEquals(10,street.getAzimuthStart().intValue()); Assert.assertEquals(20,street.getAzimuthEnd().intValue()); Assert.assertEquals(fullyQualifiedName, street.getFullyQualifiedName()); Assert.assertEquals(houseNumbers, street.getHouseNumbers()); Assert.assertEquals(2, street.getAlternateNames().size()); Assert.assertTrue(alternateNamesContains(street.getAlternateNames(), "altname")); Assert.assertTrue(alternateNamesContains(street.getAlternateNames(), "altname2")); Assert.assertTrue(alternateLabelsContains(street.getAlternateLabels(), "alternateLabel")); Assert.assertTrue(alternateLabelsContains(street.getAlternateLabels(), "alternateLabel2")); Assert.assertTrue(alternateCitiesNamesContain(street.getIsInCityAlternateNames(), "city1")); Assert.assertTrue(alternateCitiesNamesContain(street.getIsInCityAlternateNames(), "city2")); } private boolean alternateNamesContains(Collection<AlternateName> names, String name){ if (names!=null ){ for(AlternateName nameToTest:names){ if (nameToTest!=null && nameToTest.getName().equals(name)){ return true; } } } else { return false; } Assert.fail("alternateNames doesn't contain "+name); return false; } private boolean alternateCitiesNamesContain(Collection<String> names, String name){ if (names!=null ){ for(String nameToTest:names){ if (nameToTest!=null && nameToTest.equals(name)){ return true; } } } else { return false; } Assert.fail("cities alternateNames doesn't contain "+name); return false; } private boolean alternateLabelsContains(Collection<String> names, String name){ if (names!=null ){ for(String nameToTest:names){ if (nameToTest!=null && nameToTest.equals(name)){ return true; } } } else { return false; } Assert.fail("alternate Labels doesn't contain "+name); return false; } }