/*****************************************************************************
 * Copyright (c) 2018 CEA LIST and others.
 * 
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 * 
 * Contributors:
 *   CEA LIST - Initial API and implementation
 *   
 *****************************************************************************/

package org.eclipse.papyrus.cdo.benchmarks.tests;

import org.eclipse.gmf.runtime.emf.type.core.IHintedType;

/**
 * @author VL222926
 *
 */
public class CDOQuickIndexCreationTest extends AbstractQuickIndexCreationTest {

	/**
	 * @see org.eclipse.papyrus.cdo.benchmarks.tests.AbstractPerfTest#createPapyrusModelCreation()
	 *
	 * @return
	 */
	@Override
	protected IPapyrusModelCreation createPapyrusModelCreation() {
		return new CDOPapyrusModelCreation();
	}

	/**
	 * @see org.eclipse.papyrus.cdo.benchmarks.tests.AbstractPerfTest#createTimeExecutionHelper(int, IHintedType)
	 *
	 * @param nbClasses
	 * @return
	 */
	@Override
	protected ExecutionTimeHelper createTimeExecutionHelper(int nbClasses, IHintedType elementType) {
		final String id = elementType.getId();
		ExecutionTimeHelper helper = new ExecutionTimeHelper("CDO Project: Create " + nbClasses + " " + id + " with quick Index.", ExecutionTimeHelper.CDO_TYPE, nbClasses, id);
		merger.addTimeHelper(helper);
		return helper;
	}




}
