/*******************************************************************************
* Copyright (c) 2012-2015 INRIA.
* 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:
* Generoso Pagano - initial API and implementation
******************************************************************************/
package fr.inria.soctrace.test.junit.lib.query;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import fr.inria.soctrace.lib.model.utils.SoCTraceException;
import fr.inria.soctrace.lib.query.EventQuery;
import fr.inria.soctrace.lib.query.conditions.ConditionsConstants.ComparisonOperation;
import fr.inria.soctrace.lib.query.conditions.ConditionsConstants.LogicalOperation;
import fr.inria.soctrace.lib.query.conditions.ParamLogicalCondition;
import fr.inria.soctrace.lib.query.conditions.ParamSimpleCondition;
import fr.inria.soctrace.lib.utils.IdManager;
import fr.inria.soctrace.test.junit.utils.BaseTraceDBTest;
public class ParamLogicalConditionTest extends BaseTraceDBTest {
@Test
public final void testAddCondition() throws SoCTraceException {
ParamLogicalCondition condition = new ParamLogicalCondition(LogicalOperation.OR);
boolean first = true;
StringBuilder sb = new StringBuilder("( ");
for (ComparisonOperation op: ComparisonOperation.values()) {
if (first)
first = false;
else
sb.append("OR ");
sb.append("ID IN ( " + IdManager.RESERVED_NO_ID + " ) ");
if (op.equals(ComparisonOperation.IN))
condition.addCondition(new ParamSimpleCondition("A", op, "( 1, 2, 3 )"));
else if (op.equals(ComparisonOperation.BETWEEN))
condition.addCondition(new ParamSimpleCondition("A", op, "1 AND 4"));
else
condition.addCondition(new ParamSimpleCondition("A", op, "1"));
}
sb.append(")");
EventQuery query = new EventQuery(traceDB);
assertEquals(sb.toString(), condition.getSQLString(query, 0));
query.clear();
}
}