/******************************************************************************* * 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.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.util.Arrays; import java.util.Collection; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import fr.inria.soctrace.lib.model.Event; import fr.inria.soctrace.lib.model.utils.SoCTraceException; import fr.inria.soctrace.lib.query.iterators.EventIterator; import fr.inria.soctrace.lib.query.iterators.IntervalEventIterator; import fr.inria.soctrace.lib.query.iterators.PageEventIterator; import fr.inria.soctrace.lib.storage.TraceDBObject; import fr.inria.soctrace.test.junit.utils.BaseTestClass; import fr.inria.soctrace.test.junit.utils.importer.VirtualImporter; /** * @author "Generoso Pagano <generoso.pagano@inria.fr>" */ @RunWith(Parameterized.class) public class EventIteratorTest extends BaseTestClass { private EventIterator iterator; private TraceDBObject traceDB; private Class<? extends EventIterator> iteratorClass; public EventIteratorTest(Class<? extends EventIterator> iteratorClass) { this.iteratorClass = iteratorClass; } @Parameters public static Collection<Object[]> data() { Object[][] data = new Object[][] { { IntervalEventIterator.class }, { PageEventIterator.class } }; return Arrays.asList(data); } /** * @throws java.lang.Exception */ @Before public void setUp() throws Exception { traceDB = TraceDBObject.openNewInstance(VirtualImporter.DB_NAME); if (iteratorClass.equals(IntervalEventIterator.class)) iterator = new IntervalEventIterator(traceDB, 10000); else if (iteratorClass.equals(PageEventIterator.class)) iterator = new PageEventIterator(traceDB); } /** * @throws java.lang.Exception */ @After public void tearDown() throws Exception { iterator.clear(); traceDB.close(); } @Test public final void testGetNext() throws SoCTraceException { Event e = iterator.getNext(); assertEquals(VirtualImporter.MIN_TIMESTAMP, e.getTimestamp()); } @Test public final void testHasNext() throws SoCTraceException { assertTrue(iterator.hasNext()); int n = 0; while (iterator.hasNext()) { iterator.getNext(); n++; } assertFalse(iterator.hasNext()); assertEquals(VirtualImporter.TOTAL_NUMBER_OF_EVENTS, n); } @Test public final void testClear() throws SoCTraceException { Event e = iterator.getNext(); assertEquals(VirtualImporter.MIN_TIMESTAMP, e.getTimestamp()); iterator.clear(); try { iterator.hasNext(); fail("Exception not launched"); } catch (SoCTraceException ex) {} try { iterator.getNext(); fail("Exception not launched"); } catch (SoCTraceException ex) {} } }