blob: 5bd57880852791e9dfbf7c91af51844fe00a7958 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012-2014 EclipseSource Muenchen GmbH and others.
*
* 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:
* Julian Sommerfeldt - initial API and implementation
******************************************************************************/
package org.eclipse.emf.emfstore.fuzzy.emf.junit;
import java.util.List;
import java.util.Map;
import org.eclipse.emf.emfstore.modelmutator.ESAbstractModelMutator;
import org.eclipse.emf.emfstore.modelmutator.ESModelMutatorConfiguration;
import org.junit.runner.notification.RunListener;
import org.junit.runners.model.TestClass;
/**
* A Data Provider for the JUnit Runner: {@link org.eclipse.emf.emfstore.fuzzy.emf.junit.ESFuzzyRunner ESFuzzyRunner}.
* <br>
* <br>
* An implementation of it must have a zero-parameter constructor.
*
* @author Julian Sommerfeldt
*
* @param <T>
* Type to specify the values created by this data provider.
* @since 2.0
*
*/
public interface ESFuzzyDataProvider<T> {
/**
* Creates and returns the data for the next run.<br>
* <br>
* Note that it is strongly recommended to instantiate the data in this
* method for every call and not in the instantiation of the class, e.g. the
* init method, to avoid overloading the memory.
*
* @param count
* The count of the testcase.
* @return The data for the next run of the test class.
*/
T get(int count);
/**
* This method is called after the {@link ESFuzzyDataProvider} was created and
* everything was set BEFORE the first run.<br/>
* Should be used to to create internal stuff depending on e.g. the {@link TestClass}.
*/
void init();
/**
* @return The total size(count) of the repetition of the tests.
*/
int size();
/**
* @param testClass
* The {@link TestClass} of the calling {@link org.eclipse.emf.emfstore.fuzzy.emf.junit.ESFuzzyRunner
* ESFuzzyRunner}.
*/
void setTestClass(TestClass testClass);
/**
* @return A list of listeners to add to the runner, e.g. to get information
* about errors. <code>null</code> permitted.
*/
List<RunListener> getListener();
/**
* @return A list of {@link ESFuzzyTest}s to specify, which tests the
* {@link org.eclipse.emf.emfstore.fuzzy.emf.junit.ESFuzzyRunner ESFuzzyRunner} should run.
* <code>null</code> means
* run all tests.
*/
List<ESFuzzyTest> getTestsToRun();
/**
* @return The {@link ESFuzzyUtil} for this {@link ESFuzzyDataProvider}. <code>null</code> permitted.
*/
ESFuzzyUtil getUtil();
/**
* Sets the options for the {@link ESFuzzyDataProvider}. May be {@code null}.
*
* @param options
* The options for the {@link ESFuzzyDataProvider}. Can be <code>null</code>.
*/
void setOptions(Map<String, Object> options);
/**
* Sets the mutator to be used in order to generate and mutate data.
*
* @param modelMutator
* the {@link ESAbstractModelMutator} to be used
*/
void setMutator(ESAbstractModelMutator modelMutator);
/**
* Returns the {@link ESModelMutatorConfiguration} used by the data provider.
*
* @return the {@link ESModelMutatorConfiguration} used by the data provider
*/
ESModelMutatorConfiguration getModelMutatorConfiguration();
}