blob: b3184d5db0c135d8e0c14acea94d61cfd0d486cc [file] [log] [blame]
package org.eclipse.rmf.reqif10.search.test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Set;
import org.eclipse.rmf.reqif10.AttributeDefinitionString;
import org.eclipse.rmf.reqif10.AttributeValueString;
import org.eclipse.rmf.reqif10.DatatypeDefinitionString;
import org.eclipse.rmf.reqif10.ReqIF10Factory;
import org.eclipse.rmf.reqif10.SpecObject;
import org.eclipse.rmf.reqif10.search.filter.AbstractTextFilter;
import org.eclipse.rmf.reqif10.search.filter.AbstractTextFilter.InternalAttribute;
import org.eclipse.rmf.reqif10.search.filter.ReqIFFullFilter;
import org.eclipse.rmf.reqif10.search.filter.ReqIFFullFilter.Operator;
import org.eclipse.rmf.reqif10.search.filter.StringFilter;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class StringFilterInternalTest extends AbstractFilterTest {
@Parameters
public static Collection<Object[]> data() {
/*
* AbstractTextFilter.InternalAttribute.DESC => THE_SPECOBJECT_DESC
* AbstractTextFilter.InternalAttribute.IDENTIFIER => THE_SPECOBJECT_ID
* AbstractTextFilter.InternalAttribute.LONG_NAME => THE_SPECOBJECT_LONG_NAME
*
* Operator, FilterValue, Attribute, expectedResult
*
*/
HashMap<InternalAttribute, String> values = new HashMap<AbstractTextFilter.InternalAttribute, String>();
values.put(AbstractTextFilter.InternalAttribute.DESC, "THE_SPECOBJECT_DESC");
values.put(AbstractTextFilter.InternalAttribute.IDENTIFIER, "THE_SPECOBJECT_ID");
values.put(AbstractTextFilter.InternalAttribute.LONG_NAME, "THE_SPECOBJECT_LONG_NAME");
ArrayList<Object[]> testData = new ArrayList<Object[]>();
for (AbstractTextFilter.InternalAttribute attribute : values.keySet()) {
// match the value on the value
testData.add(new Object[] {
ReqIFFullFilter.Operator.EQUALS, values.get(attribute), attribute, true,
true });
testData.add(new Object[] {
ReqIFFullFilter.Operator.NOT_EQUALS, values.get(attribute), attribute, true,
false });
// match the value on the value.toLowerCase and caseInSensitive
testData.add(new Object[] {
ReqIFFullFilter.Operator.EQUALS, values.get(attribute).toLowerCase(), attribute, false,
true });
testData.add(new Object[] {
ReqIFFullFilter.Operator.NOT_EQUALS, values.get(attribute).toLowerCase(), attribute, false,
false });
// match the value on the value.toLowerCase and caseSensitive
testData.add(new Object[] {
ReqIFFullFilter.Operator.EQUALS, values.get(attribute).toLowerCase(), attribute, true,
false });
testData.add(new Object[] {
ReqIFFullFilter.Operator.NOT_EQUALS, values.get(attribute).toLowerCase(), attribute, true,
true });
testData.add(new Object[] {
ReqIFFullFilter.Operator.CONTAINS, "THE_", attribute, true,
true });
testData.add(new Object[] {
ReqIFFullFilter.Operator.CONTAINS, "THE_", attribute, false,
true });
testData.add(new Object[] {
ReqIFFullFilter.Operator.CONTAINS, "the_", attribute, true,
false });
testData.add(new Object[] {
ReqIFFullFilter.Operator.NOT_CONTAINS, "E", attribute, true,
false });
testData.add(new Object[] {
ReqIFFullFilter.Operator.NOT_CONTAINS, "e", attribute, false,
false });
testData.add(new Object[] {
ReqIFFullFilter.Operator.NOT_CONTAINS, "XXX", attribute, true,
true });
testData.add(new Object[] {
ReqIFFullFilter.Operator.REGEXP, ".*E.*", attribute, true,
true });
testData.add(new Object[] {
ReqIFFullFilter.Operator.REGEXP, ".*e.*", attribute, false,
true });
testData.add(new Object[] {
ReqIFFullFilter.Operator.REGEXP, ".*e.*", attribute, true,
false });
}
return testData;
}
Operator operator;
String filterValue;
AbstractTextFilter.InternalAttribute attribute;
boolean caseSensitive;
boolean expectedResult;
public StringFilterInternalTest(Operator operator, String filterValue, AbstractTextFilter.InternalAttribute attribute, Boolean caseSensitive, Boolean expectedResult) {
this.operator = operator;
this.filterValue = filterValue;
this.attribute = attribute;
this.expectedResult = expectedResult;
this.caseSensitive = caseSensitive;
}
@Test
public void testFilter() throws Exception {
System.out.println("running " + this.operator + " " + this.filterValue + " on " + attribute + "expecting " + expectedResult);
StringFilter filter = new StringFilter(operator, filterValue, attribute, caseSensitive);
doMatch(filter, expectedResult);
}
@Before
public void setUp(){
createFixture("abcDEF");
}
@Override
public void createFixture(Object value) {
String theValue = (String) value;
AttributeDefinitionString attributeDefinition = ReqIF10Factory.eINSTANCE.createAttributeDefinitionString();
attributeDefinition.setIdentifier("AD_ID0");
DatatypeDefinitionString definition = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionString();
definition.setIdentifier("DD_ID0");
attributeDefinition.setType(definition);
AttributeValueString attributeValue = ReqIF10Factory.eINSTANCE.createAttributeValueString();
attributeValue.setDefinition(attributeDefinition);
attributeValue.setTheValue(theValue);
SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject();
specObject.getValues().add(attributeValue);
specObject.setLastChange(new GregorianCalendar(2014, 12, 03));
specObject.setIdentifier("THE_SPECOBJECT_ID");
specObject.setDesc("THE_SPECOBJECT_DESC");
specObject.setLongName("THE_SPECOBJECT_LONG_NAME");
createSpecObjectType(specObject, attributeDefinition);
setFixture(specObject);
}
@Override
public Set<Operator> getSupportedOperators() {
// TODO Auto-generated method stub
return null;
}
@Override
public ReqIFFullFilter createFilterInstance(Operator operator) {
// TODO Auto-generated method stub
return null;
}
@Override
public void doEmptyTest() throws Exception {
// TODO Auto-generated method stub
}
@Override
public void testExceptionsUnsupportedOperation() throws Exception {
}
}