package com.gisgraphy.domain.geoloc.entity;
import java.util.ArrayList;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
import net.sf.jstester.util.Assert;
import org.apache.commons.lang.StringUtils;
import org.junit.Test;
import com.gisgraphy.domain.valueobject.AlternateNameSource;
import com.gisgraphy.test.GisgraphyTestHelper;
public class OpenStreetMapTest {
@Test
public void testAddHouseNumberShouldAddAndNotReplace() {
OpenStreetMap street = new OpenStreetMap();
street.setId(1L);
SortedSet<HouseNumber> houseNumbers = new TreeSet<HouseNumber>();
HouseNumber n1 = GisgraphyTestHelper.createHouseNumber();
houseNumbers.add(n1);
street.setHouseNumbers(houseNumbers);
Assert.assertEquals(1, street.getHouseNumbers().size());
HouseNumber n2 = new HouseNumber();
street.addHouseNumber(n2);
Assert.assertEquals("add street should add street, not replace",2, street.getHouseNumbers().size());
//check doubleset
Assert.assertEquals("double set should be done",street, n2.getStreet());
}
@Test
public void testAddHouseNumberShouldSort() {
OpenStreetMap street = new OpenStreetMap();
street.setId(1L);
HouseNumber n1 = GisgraphyTestHelper.createHouseNumber();
n1.setNumber("10");
street.addHouseNumber(n1);
Assert.assertEquals(1, street.getHouseNumbers().size());
HouseNumber n2 = new HouseNumber();
n2.setNumber("2");
street.addHouseNumber(n2);
Assert.assertEquals("add street should add street, not replace",2, street.getHouseNumbers().size());
Assert.assertEquals(n2, street.getHouseNumbers().first());
//check doubleset
Assert.assertEquals("double set should be done",street, n2.getStreet());
}
@Test
public void testAddHouseNumberwhenNoHouseNumberAlreadyAdded() {
OpenStreetMap street = new OpenStreetMap();
street.setId(1L);
HouseNumber n1 = GisgraphyTestHelper.createHouseNumber();
street.addHouseNumber(n1);
Assert.assertEquals("housenumberlist should be initialize when no house number have been added",1, street.getHouseNumbers().size());
//check doubleset
Assert.assertEquals("double set should be done",street, n1.getStreet());
}
@Test
public void testAddHouseNumbers() {
OpenStreetMap street = new OpenStreetMap();
street.setId(1L);
List<HouseNumber> houseNumbers = new ArrayList<HouseNumber>();
HouseNumber n1 = GisgraphyTestHelper.createHouseNumber();
houseNumbers.add(n1);
street.addHouseNumbers(houseNumbers);
Assert.assertEquals(1, street.getHouseNumbers().size());
//check doubleset
Assert.assertEquals("double set should be done",street, n1.getStreet());
}
@Test
public void testAddZips() {
OpenStreetMap street = new OpenStreetMap();
street.setId(1L);
List<String> zips = new ArrayList<String>();
zips.add("75000");
street.addIsInZips(zips);
Assert.assertEquals(1, street.getIsInZip().size());
street.addIsInZip("78000");
Assert.assertEquals(2, street.getIsInZip().size());
}
@Test
public void testAddAlternateNames() {
OpenStreetMap street = new OpenStreetMap();
street.setId(1L);
List<AlternateOsmName> names = new ArrayList<AlternateOsmName>();
names.add(new AlternateOsmName("foo", AlternateNameSource.OPENSTREETMAP));
street.addAlternateNames(names);
Assert.assertEquals(1, street.getAlternateNames().size());
Assert.assertEquals("double set is not correct",street, street.getAlternateNames().get(0).getStreet());
street.addAlternateName(new AlternateOsmName("bar", AlternateNameSource.OPENSTREETMAP));
Assert.assertEquals("add should add not replace",2, street.getAlternateNames().size());
Assert.assertEquals("double set is not correct",street, street.getAlternateNames().get(1).getStreet());
}
@Test
public void testAddAlternateNamesShouldNotAddTooLongNames() {
OpenStreetMap street = new OpenStreetMap();
street.setId(1L);
List<AlternateOsmName> names = new ArrayList<AlternateOsmName>();
names.add(new AlternateOsmName("foo", AlternateNameSource.OPENSTREETMAP));
street.addAlternateNames(names);
Assert.assertEquals(1, street.getAlternateNames().size());
Assert.assertEquals("double set is not correct",street, street.getAlternateNames().get(0).getStreet());
street.addAlternateName(new AlternateOsmName(StringUtils.repeat("a", OpenStreetMap.MAX_ALTERNATENAME_SIZE+1), AlternateNameSource.OPENSTREETMAP));
Assert.assertEquals("add should add not too long names",1, street.getAlternateNames().size());
Assert.assertEquals("double set is not correct",street, street.getAlternateNames().get(0).getStreet());
}
@Test
public void testAddAlternateLabels() {
OpenStreetMap street = new OpenStreetMap();
street.setId(1L);
List<String> names = new ArrayList<String>();
names.add("foo");
names.add("bar");
street.addAlternateLabels(names);
Assert.assertEquals(2, street.getAlternateLabels().size());
street.addAlternateLabel("foo2");
Assert.assertEquals(3, street.getAlternateLabels().size());
street.addAlternateLabel("foo");//already present
Assert.assertEquals(3, street.getAlternateLabels().size());
}
}