package org.weso.wesearch.domain.filter;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.lang.reflect.Field;
import org.junit.Before;
import org.junit.Test;
import org.weso.wesearch.domain.impl.filters.Filter;
import org.weso.wesearch.domain.impl.filters.Operator;
import org.weso.wesearch.domain.impl.filters.SPARQLFilter;
import org.weso.wesearch.domain.impl.filters.SPARQLFilters;
public class TestSPARQLFilters {
private Field field;
@Before
public void setUp() throws NoSuchFieldException, SecurityException {
field = SPARQLFilters.class.getDeclaredField("filter");
field.setAccessible(true);
}
@Test
public void testConstructorOneParameter()
throws NoSuchFieldException, SecurityException,
IllegalArgumentException, IllegalAccessException {
SPARQLFilters filters = new SPARQLFilters(new SPARQLFilter(
"This is a test filter"));
Filter result = (Filter)field.get(filters);
assertNotNull(result);
}
@Test
public void testConstructorOneParameterNull()
throws IllegalArgumentException, IllegalAccessException {
SPARQLFilters filter = new SPARQLFilters(null);
assertNull(field.get(filter));
}
@Test
public void testContructorThreeParameters()
throws IllegalArgumentException, IllegalAccessException,
NoSuchFieldException, SecurityException {
SPARQLFilters aux = new SPARQLFilters(new SPARQLFilter("aaaaaa"));
SPARQLFilters filters = new SPARQLFilters(
new SPARQLFilter("This is a test filter"), Operator.AND, aux);
assertNotNull(field.get(filters));
field = SPARQLFilters.class.getDeclaredField("op");
field.setAccessible(true);
assertNotNull(field.get(filters));
assertEquals(Operator.AND, field.get(filters));
field = SPARQLFilters.class.getDeclaredField("filters");
field.setAccessible(true);
assertNotNull(field.get(filters));
}
@Test
public void testAddFilter()
throws NoSuchFieldException, SecurityException,
IllegalArgumentException, IllegalAccessException {
SPARQLFilters filters = new SPARQLFilters(new SPARQLFilter(
"This is a test filter"));
field = SPARQLFilters.class.getDeclaredField("op");
field.setAccessible(true);
assertNull(field.get(filters));
field = SPARQLFilters.class.getDeclaredField("filters");
field.setAccessible(true);
assertNull(field.get(filters));
filters.addFilter(new SPARQLFilter("aaaaaa"), Operator.AND);
assertNotNull(field.get(filters));
field = SPARQLFilters.class.getDeclaredField("op");
field.setAccessible(true);
assertNotNull(field.get(filters));
assertEquals(Operator.AND, field.get(filters));
}
@Test
public void testAddFilterNutNull()
throws NoSuchFieldException, SecurityException,
IllegalArgumentException, IllegalAccessException {
SPARQLFilters aux = new SPARQLFilters(new SPARQLFilter("aaaaaa"));
SPARQLFilters filters = new SPARQLFilters(
new SPARQLFilter("This is a test filter"), Operator.AND, aux);
field = SPARQLFilters.class.getDeclaredField("op");
field.setAccessible(true);
assertNull(field.get(aux));
field = SPARQLFilters.class.getDeclaredField("filters");
field.setAccessible(true);
assertNull(field.get(aux));
filters.addFilter(new SPARQLFilter("bbbbbb"), Operator.OR);
assertNotNull(field.get(aux));
field = SPARQLFilters.class.getDeclaredField("op");
field.setAccessible(true);
assertNotNull(field.get(aux));
assertEquals(Operator.OR, field.get(aux));
}
@Test
public void testConstructorWithoutParameters() {
SPARQLFilters filters = new SPARQLFilters();
assertNull(filters.getFilters());
assertNull(filters.getOp());
assertNull(filters.getFilter());
}
@Test
public void testSetFilter() {
SPARQLFilters filters = new SPARQLFilters();
assertNull(filters.getFilter());
filters.setFilter(new SPARQLFilter("test clause"));
assertNotNull(filters.getFilter());
}
}