blob: ee516800c40a08a504bdf56d1d84777a173de467 [file] [log] [blame]
package org.eclipse.rmf.reqif10.search.test;
import java.util.GregorianCalendar;
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.SpecObjectType;
import org.eclipse.rmf.reqif10.search.filter.IFilter;
import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
import org.eclipse.rmf.reqif10.search.filter.StringFilter;
import org.junit.Test;
public class AttributeTest extends AbstractFilterTest{
private AttributeDefinitionString attributeDefinition;
@Test
public void testIsSet() throws Exception {
StringFilter filter;
// The attribute is defined and a value is set
createFixture("test", true);
filter = new StringFilter(IFilter.Operator.IS_SET, "", attributeDefinition, false);
doMatch(filter, true);
// The attribute is defined and the value is null
createFixture(null, true);
filter = new StringFilter(IFilter.Operator.IS_SET, "", attributeDefinition, false);
doMatch(filter, false);
// The attribute is not defined
createFixture(null, false);
filter = new StringFilter(IFilter.Operator.IS_SET, "", attributeDefinition, false);
doMatch(filter, false);
}
@Test
public void testIsNotSet() throws Exception {
/* is not set: return true only if the attribute exisits, but is not set (irrespective of default value).
*/
StringFilter filter;
// The attribute is defined and a value is set
createFixture("test", true);
filter = new StringFilter(IFilter.Operator.IS_NOT_SET, "", attributeDefinition, false);
doMatch(filter, false);
// The attribute is defined and the value is null
createFixture(null, true);
filter = new StringFilter(IFilter.Operator.IS_NOT_SET, "", attributeDefinition, false);
doMatch(filter, true);
// The attribute is not defined
createFixture(null, false);
filter = new StringFilter(IFilter.Operator.IS_NOT_SET, "", attributeDefinition, false);
doMatch(filter, false);
}
public void createFixture(Object value, boolean withAttribute) {
String theValue = (String) value;
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);
if (value != null){
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");
SpecObjectType specObjectType = ReqIF10Factory.eINSTANCE.createSpecObjectType();
if (withAttribute){
specObjectType.getSpecAttributes().add(attributeDefinition);
}
specObject.setType(specObjectType);
setFixture(specObject);
}
@Override
public void createFixture(Object value) {
createFixture(value, true);
}
@Override
public Set<Operator> getSupportedOperators() {
return StringFilter.SUPPORTED_OPERATORS;
}
@Override
public IFilter createFilterInstance(Operator operator) {
return new StringFilter(operator, "", attributeDefinition, true);
}
@Override
public void doEmptyTest() throws Exception {
// Do nothing
}
@Override
public void testOnEmptyAttribute() throws Exception {
// Do nothing
}
}