/******************************************************************************* * 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 static org.junit.Assert.assertTrue; import java.util.List; import org.junit.After; import org.junit.Before; import org.junit.Test; import fr.inria.soctrace.lib.model.AnalysisResult; import fr.inria.soctrace.lib.model.AnalysisResultData.AnalysisResultType; import fr.inria.soctrace.lib.model.utils.SoCTraceException; import fr.inria.soctrace.lib.query.AnalysisResultQuery; 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.ConditionsConstants.OrderBy; import fr.inria.soctrace.lib.query.conditions.LogicalCondition; import fr.inria.soctrace.lib.query.conditions.SimpleCondition; import fr.inria.soctrace.test.junit.utils.BaseTraceDBTest; import fr.inria.soctrace.test.junit.utils.TestConstants; /** * @author "Generoso Pagano <generoso.pagano@inria.fr>" */ public class AnalysisResultQueryTest extends BaseTraceDBTest { private AnalysisResultQuery query; @Before public void setUp() throws SoCTraceException { query = new AnalysisResultQuery(traceDB); } @After public void tearDown() { query.clear(); query = null; } @Test public final void testClear() throws SoCTraceException { query.setElementWhere(new SimpleCondition("ID", ComparisonOperation.EQ, "1")); // before clear assertEquals(1, query.getList().size()); assertEquals(1, query.getList().size()); // after clear query.clear(); assertEquals(TestConstants.NUMBER_OF_RESULTS, query.getList().size()); } @Test public final void testSetToolWhere() throws SoCTraceException { // junit tool results query.setToolWhere(new SimpleCondition("NAME", ComparisonOperation.EQ, TestConstants.JUNIT_TEST_TOOL_NAME)); assertEquals(TestConstants.NUMBER_OF_RESULTS, query.getList().size()); query.clear(); // non existing tool results query.setToolWhere(new SimpleCondition("NAME", ComparisonOperation.EQ, "please")); assertEquals(0, query.getList().size()); // existing tool with 0 results query.setToolWhere(new SimpleCondition("NAME", ComparisonOperation.EQ, TestConstants.VIRTUAL_IMPORTER_TOOL_NAME)); assertEquals(0, query.getList().size()); } @Test public final void testGetList() throws SoCTraceException { List<AnalysisResult> alist = query.getList(); assertEquals(TestConstants.NUMBER_OF_RESULTS, alist.size()); } @Test public final void testSetElementWhere() throws SoCTraceException { // retrieve 2 search and 1 annotation LogicalCondition or = new LogicalCondition(LogicalOperation.OR); or.addCondition(new SimpleCondition("TYPE", ComparisonOperation.EQ, AnalysisResultType.TYPE_SEARCH.toString())); or.addCondition(new SimpleCondition("TYPE", ComparisonOperation.EQ, AnalysisResultType.TYPE_ANNOTATION.toString())); query.setElementWhere(or); List<AnalysisResult> alist = query.getList(); assertEquals(3, alist.size()); int search = 0; int annotation = 0; for (AnalysisResult ar: alist) { if (ar.getType().equals(AnalysisResultType.TYPE_SEARCH.toString())) search++; else if (ar.getType().equals(AnalysisResultType.TYPE_ANNOTATION.toString())) annotation++; } assertEquals(2, search); assertEquals(1, annotation); } @Test public final void testSetOrderBy() throws SoCTraceException { query.setOrderBy("ID", OrderBy.DESC); List<AnalysisResult> alist = query.getList(); int last = Integer.MAX_VALUE; for (AnalysisResult ar: alist) { assertTrue(ar.getId()<=last); last = ar.getId(); } } @Test public final void testSetLimit() throws SoCTraceException { int limits[] = { TestConstants.NUMBER_OF_RESULTS / 10, TestConstants.NUMBER_OF_RESULTS / 5, TestConstants.NUMBER_OF_RESULTS / 2 }; for (int limit : limits) { query.setLimit(limit); assertEquals(limit, query.getList().size()); } query.unsetLimit(); assertEquals(TestConstants.NUMBER_OF_RESULTS, query.getList().size()); } }