blob: 3c0740c927225191337d8a8a65a9ee9eaea622d4 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014 Formal Mind GmbH.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Ingo Weigelt - initial API and implementation
******************************************************************************/
package org.eclipse.rmf.reqif10.search.test;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.math.BigInteger;
import java.util.GregorianCalendar;
import java.util.LinkedList;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.rmf.reqif10.AttributeDefinition;
import org.eclipse.rmf.reqif10.AttributeDefinitionDate;
import org.eclipse.rmf.reqif10.AttributeDefinitionInteger;
import org.eclipse.rmf.reqif10.AttributeDefinitionString;
import org.eclipse.rmf.reqif10.AttributeValue;
import org.eclipse.rmf.reqif10.ReqIF;
import org.eclipse.rmf.reqif10.SpecObject;
import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;
import org.eclipse.rmf.reqif10.pror.testframework.AbstractItemProviderTest;
import org.eclipse.rmf.reqif10.search.filter.DateFilter;
import org.eclipse.rmf.reqif10.search.filter.IFilter;
import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator;
import org.eclipse.rmf.reqif10.search.filter.NumberFilter;
import org.eclipse.rmf.reqif10.search.filter.SimpleCompoundFilter;
import org.eclipse.rmf.reqif10.search.filter.StringFilter;
import org.eclipse.rmf.reqif10.search.testdata.TestData;
import org.junit.Test;
public class SimpleCompoundFilterTest extends AbstractItemProviderTest {
@Test
public void testName() throws Exception {
URI uri = TestData.getURI("testMultipleAttributes.reqif");
final Resource resource = editingDomain.getResourceSet().getResource(uri, true);
final ReqIF reqif = (ReqIF) resource.getContents().get(0);
SpecObject so = reqif.getCoreContent().getSpecObjects().get(0);
AttributeDefinitionString adString = null;
AttributeDefinitionDate adDate = null;
AttributeDefinitionInteger adInteger = null;
for (AttributeValue attributeValue : so.getValues()) {
AttributeDefinition attributeDefinition = ReqIF10Util.getAttributeDefinition(attributeValue);
System.out.println(attributeDefinition.getClass());
if (attributeDefinition instanceof AttributeDefinitionString) {
adString = (AttributeDefinitionString) attributeDefinition;
}
if (attributeDefinition instanceof AttributeDefinitionInteger) {
adInteger = (AttributeDefinitionInteger) attributeDefinition;
}
if (attributeDefinition instanceof AttributeDefinitionDate) {
adDate = (AttributeDefinitionDate) attributeDefinition;
}
}
LinkedList<IFilter> filters = new LinkedList<IFilter>();
filters.add(new DateFilter(Operator.AFTER, new GregorianCalendar(2014, 1, 1), null, adDate)); // matches
filters.add(new NumberFilter(Operator.GREATER, new BigInteger("100"), null, adInteger)); // does not match
filters.add(new StringFilter(Operator.CONTAINS, "c", adString, false)); // matches
SimpleCompoundFilter orFilter = new SimpleCompoundFilter(filters, true);
for (SpecObject specObject : reqif.getCoreContent().getSpecObjects()) {
assertTrue(orFilter.match(specObject));
}
SimpleCompoundFilter andFilter = new SimpleCompoundFilter(filters, false);
for (SpecObject specObject : reqif.getCoreContent().getSpecObjects()) {
assertFalse(andFilter.match(specObject));
}
filters = new LinkedList<IFilter>();
filters.add(new DateFilter(Operator.AFTER, new GregorianCalendar(2014, 1, 1), null, adDate)); // matches
filters.add(new StringFilter(Operator.CONTAINS, "c", adString, false)); // matches
andFilter = new SimpleCompoundFilter(filters, false);
for (SpecObject specObject : reqif.getCoreContent().getSpecObjects()) {
assertTrue(andFilter.match(specObject));
}
}
}