/*****************************************************************************
 * Copyright (c) 2019 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
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *   Nicolas FAUVERGUE (CEA LIST) nicolas.fauvergue@cea.fr - Initial API and implementation
 *
 *****************************************************************************/

package org.eclipse.papyrus.interoperability.sysml16.sysml14.tests.tests;


import org.eclipse.papyrus.interoperability.sysml16.sysml14.tests.Activator;
import org.eclipse.papyrus.junit.utils.rules.PluginResource;
import org.junit.Before;

/**
 * This allows to test the interoperability QvTo transformation from SysML1.4 to SysML1.6 for the internal block diagram.
 */
@PluginResource("resources/ExpectedResult/InternalBlockDiagram/InternalBlockDiagram_converted.di") // the name of the expected model must be the same than the name of the old Papyrus project
public class ImportSysML14InternalBlockDiagramTest extends AbstractImportSysMLModelWithNotationTests {

	/**
	 * The name of the Papyrus project to import.
	 */
	public static final String SYSML14_INTERNAL_BLOCK_DIAGRAM_MODEL_NAME = "InternalBlockDiagram";// $NON-NLS-0$

	/**
	 * The name of the created project.
	 */
	public static final String PROJECT_NAME = "InternalBlockDiagram_testMigration"; // $NON-NLS-0$

	/**
	 * The source path of the internal block diagram model folder.
	 */
	private static final String SOURCE_PATH = "resources/InitialModels/InternalBlockDiagram/"; // $NON-NLS-0$

	/**
	 * This allows to initialize the test.
	 *
	 * @throws Exception
	 *             The caught exception.
	 */
	@Before
	public void initTest() throws Exception {
		super.initTest(PROJECT_NAME, SYSML14_INTERNAL_BLOCK_DIAGRAM_MODEL_NAME, SOURCE_PATH, Activator.getDefault().getBundle());
	}

}
