package com.gisgraphy.fulltext;
import java.util.regex.Pattern;
import org.junit.Assert;
import org.junit.Test;
public class SmartStreetDetectionTest {
@Test
public void getRegexpShouldCompile() {
String regexp = SmartStreetDetection.getRegexp();
Pattern.compile(regexp);
}
@Test
public void getStreetTypes() {
SmartStreetDetection ssd =new SmartStreetDetection();
//NOTHING
Assert.assertEquals(0, ssd.getStreetTypes("saint denis").size());
//Straße, case sensitive
Assert.assertEquals(1, ssd.getStreetTypes("Steinau an der Straße").size());
Assert.assertEquals("Straße", ssd.getStreetTypes("Steinau an der Straße").get(0));
Assert.assertEquals(1, ssd.getStreetTypes("Der Queckborn unterm Schießplatze").size());
Assert.assertEquals("platze", ssd.getStreetTypes("Der Queckborn unterm Schießplatze").get(0));
//two ß
Assert.assertEquals(1, ssd.getStreetTypes("Der Queckboßrn unterm Schießplatze").size());
Assert.assertEquals("platze", ssd.getStreetTypes("Der Quecßkborn unterm Schießplatze").get(0));
//two ß
Assert.assertEquals(2, ssd.getStreetTypes("Der Straße unterm Schießplatze").size());
Assert.assertEquals("platze", ssd.getStreetTypes("Der Straße unterm Schießplatze").get(1));
Assert.assertEquals("Straße", ssd.getStreetTypes("Der Straße unterm Schießplatze").get(0));
//FRENCH
Assert.assertEquals(1, ssd.getStreetTypes("rue saint denis").size());
Assert.assertEquals("rue", ssd.getStreetTypes("rue saint denis").get(0));
//without accent
Assert.assertEquals(1, ssd.getStreetTypes("place saint denis").size());
Assert.assertEquals("place", ssd.getStreetTypes("place saint denis").get(0));
//with accent
Assert.assertEquals(1, ssd.getStreetTypes("plâce saint denis").size());
Assert.assertEquals("plâce", ssd.getStreetTypes("plâce saint denis").get(0));
//CASE
Assert.assertEquals(1, ssd.getStreetTypes("RUE saint denis").size());
Assert.assertEquals("RUE", ssd.getStreetTypes("RUE saint denis").get(0));
//DECOMPOUND
Assert.assertEquals(1, ssd.getStreetTypes("saint denis straße").size());
Assert.assertEquals("straße", ssd.getStreetTypes("saint denis straße").get(0));
//one ß not at the end
Assert.assertEquals(1, ssd.getStreetTypes("saint straße denis ").size());
Assert.assertEquals("straße", ssd.getStreetTypes("saint straße denis").get(0));
//several ß not at the end
Assert.assertEquals(2, ssd.getStreetTypes("saint straße denis straße").size());
Assert.assertEquals("straße", ssd.getStreetTypes("saint straße denis straße").get(0));
Assert.assertEquals("straße", ssd.getStreetTypes("saint straße denis straße").get(1));
//NOT DECOMPOUND
Assert.assertEquals(1, ssd.getStreetTypes("saintdenisstraße").size());
Assert.assertEquals("straße", ssd.getStreetTypes("saintdenisstraße").get(0));
//NOT DECOMPOUND
Assert.assertEquals(1, ssd.getStreetTypes("saintdenisstr.").size());
Assert.assertEquals("str", ssd.getStreetTypes("saintdenisstr.").get(0));
//ACCENT
Assert.assertEquals(1, ssd.getStreetTypes("saint denis plätze").size());
Assert.assertEquals("plätze", ssd.getStreetTypes("saint denis plätze").get(0));
//SPANISH
Assert.assertEquals(1, ssd.getStreetTypes("saint denis rua").size());
Assert.assertEquals("rua", ssd.getStreetTypes("saint denis rua").get(0));
//TWO
Assert.assertEquals(2, ssd.getStreetTypes("RUE du chemin blanc qui danse").size());
Assert.assertEquals("RUE", ssd.getStreetTypes("RUE du chemin blanc qui danse").get(0));
Assert.assertEquals("chemin", ssd.getStreetTypes("RUE du chemin blanc qui danse").get(1));
}
}