/******************************************************************************* * 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.EventType; import fr.inria.soctrace.lib.model.utils.ModelConstants.EventCategory; import fr.inria.soctrace.lib.model.utils.SoCTraceException; import fr.inria.soctrace.lib.query.EventTypeQuery; 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.importer.VirtualImporter; /** * @author "Generoso Pagano <generoso.pagano@inria.fr>" */ public class EventTypeQueryTest extends BaseTraceDBTest { private EventTypeQuery query; @Before public void setUp() throws SoCTraceException { query = new EventTypeQuery(traceDB); } @After public void tearDown() { query.clear(); query = null; } @Test public final void testGetList() throws SoCTraceException { List<EventType> elist = query.getList(); assertEquals(VirtualImporter.NUMBER_OF_TYPES * VirtualImporter.NUMBER_OF_CATEGORIES, elist.size()); } @Test public final void testSetElementWhere() throws SoCTraceException { LogicalCondition and = new LogicalCondition(LogicalOperation.AND); and.addCondition(new SimpleCondition("CATEGORY", ComparisonOperation.EQ, String .valueOf(EventCategory.PUNCTUAL_EVENT))); and.addCondition(new SimpleCondition("NAME", ComparisonOperation.LIKE, VirtualImporter.TYPE_NAME_PREFIX + "%")); query.setElementWhere(and); List<EventType> elist = query.getList(); boolean hasPuncEvents = VirtualImporter.CATEGORIES.contains(EventCategory.PUNCTUAL_EVENT); int numberOfTypes = (hasPuncEvents ? 1 : 0) * VirtualImporter.NUMBER_OF_TYPES; assertEquals(numberOfTypes, elist.size()); for (EventType e : elist) { assertEquals(EventCategory.PUNCTUAL_EVENT, e.getCategory()); assertTrue(e.getName().contains(VirtualImporter.TYPE_NAME_PREFIX)); } } @Test public final void testSetOrderBy() throws SoCTraceException { query.setOrderBy("NAME", OrderBy.DESC); List<EventType> elist = query.getList(); boolean first = true; String last = ""; for (EventType ept : elist) { if (first) { first = false; last = ept.getName(); continue; } assertTrue(ept.getName().compareTo(last) <= 0); last = ept.getName(); } } @Test public final void testClear() throws SoCTraceException { query.setElementWhere(new SimpleCondition("ID", ComparisonOperation.EQ, "0")); // before clear assertEquals(1, query.getList().size()); assertEquals(1, query.getList().size()); // after clear query.clear(); assertEquals(VirtualImporter.NUMBER_OF_TYPES * VirtualImporter.NUMBER_OF_CATEGORIES, query .getList().size()); } @Test public final void testSetLimit() throws SoCTraceException { int types = VirtualImporter.NUMBER_OF_TYPES * VirtualImporter.NUMBER_OF_CATEGORIES; int limits[] = { types / 10, types / 5, types / 2 }; for (int limit : limits) { query.setLimit(limit); assertEquals(limit, query.getList().size()); } query.unsetLimit(); assertEquals(types, query.getList().size()); } }