/*******************************************************************************
* 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.helper;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import com.gisgraphy.addressparser.Address;
import com.gisgraphy.domain.geoloc.entity.City;
import com.gisgraphy.domain.geoloc.entity.GisFeature;
import com.gisgraphy.test.FakeBean;
public class IntrospectionHelperTest {
@Test
public void getFieldsAsListShouldIgnoreSerialVersionUID() {
List<String> fields = IntrospectionHelper
.getFieldsAsList(Address.class);
Assert.assertFalse(fields.contains("SerialVersionUID"));
}
@Test
public void getGisFeatureFieldsAsListShouldIgnoreAnnotedFields() {
List<String> fields = IntrospectionHelper
.getFieldsAsList(GisFeature.class);
assertTrue(fields.contains("id"));
assertTrue(fields.contains("featureId"));
assertTrue(fields.contains("name"));
assertTrue(fields.contains("asciiName"));
assertTrue(fields.contains("location"));
assertTrue(fields.contains("adminCentreLocation"));
assertTrue(fields.contains("adm1Code"));
assertTrue(fields.contains("adm2Code"));
assertTrue(fields.contains("adm3Code"));
assertTrue(fields.contains("adm4Code"));
assertTrue(fields.contains("adm1Name"));
assertTrue(fields.contains("adm2Name"));
assertTrue(fields.contains("adm3Name"));
assertTrue(fields.contains("adm4Name"));
assertTrue(fields.contains("featureClass"));
assertTrue(fields.contains("featureCode"));
assertTrue(fields.contains("countryCode"));
assertTrue(fields.contains("population"));
assertTrue(fields.contains("elevation"));
assertTrue(fields.contains("gtopo30"));
assertTrue(fields.contains("timezone"));
assertTrue(fields.contains("amenity"));
assertTrue(fields.contains("openstreetmapId"));
assertEquals(32, fields.size());
}
@Test
public void getGisFeatureFieldsAsListShouldExploreSubClass() {
List<String> fields = IntrospectionHelper
.getFieldsAsList(City.class);
assertEquals(32, fields.size());
assertTrue(fields.contains("id"));
assertTrue(fields.contains("featureId"));
assertTrue(fields.contains("name"));
assertTrue(fields.contains("asciiName"));
assertTrue(fields.contains("location"));
assertTrue(fields.contains("adminCentreLocation"));
assertTrue(fields.contains("adm1Code"));
assertTrue(fields.contains("adm2Code"));
assertTrue(fields.contains("adm3Code"));
assertTrue(fields.contains("adm4Code"));
assertTrue(fields.contains("adm1Name"));
assertTrue(fields.contains("adm2Name"));
assertTrue(fields.contains("adm3Name"));
assertTrue(fields.contains("adm4Name"));
assertTrue(fields.contains("featureClass"));
assertTrue(fields.contains("featureCode"));
assertTrue(fields.contains("countryCode"));
assertTrue(fields.contains("population"));
assertTrue(fields.contains("elevation"));
assertTrue(fields.contains("gtopo30"));
assertTrue(fields.contains("timezone"));
assertTrue(fields.contains("amenity"));
assertTrue(fields.contains("openstreetmapId"));
}
@Test
public void getGisFeatureFieldsAsArrayShouldIgnoreAnnotedFields() {
String[] fields = IntrospectionHelper
.getFieldsAsArray(GisFeature.class);
assertEquals(32, fields.length);
}
@Test
public void getGisFeatureFieldsAsArrayShouldIgnoreFinalFields() {
String[] fields = IntrospectionHelper
.getFieldsAsArray(FakeBean.class);
assertEquals(33, fields.length);
}
@Test
public void getGisFeatureFieldsAsArrayShouldExploreSubClass() {
String[] fields = IntrospectionHelper
.getFieldsAsArray(City.class);
assertEquals(32, fields.length);//TODO do with a subclass
}
@Test
public void getGisFeatureFieldsAsArrayShouldReturnTheSameValueForSecondCall() {
String[] fields = IntrospectionHelper
.getFieldsAsArray(GisFeature.class);
fields = IntrospectionHelper
.getFieldsAsArray(GisFeature.class);
assertEquals(32, fields.length);
}
@Test
public void clearCache() {
String[] fields = IntrospectionHelper
.getFieldsAsArray(GisFeature.class);
assertEquals(32, fields.length);
IntrospectionHelper.clearCache();
fields = IntrospectionHelper
.getFieldsAsArray(GisFeature.class);
assertEquals(32, fields.length);
}
@Test
public void getGisFeatureFieldsAsListShouldReturnTheSameValueForSecondCall() {
List<String> fields = IntrospectionHelper
.getFieldsAsList(GisFeature.class);
fields = IntrospectionHelper
.getFieldsAsList(GisFeature.class);
assertEquals(32, fields.size());
}
}