/** * Copyright (c) 2004-2006 IBM Corporation 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: * IBM - Initial API and implementation */ package org.eclipse.emf.test.tools.merger; import java.io.File; import junit.framework.Test; import junit.framework.TestSuite; import org.eclipse.emf.codegen.merge.java.facade.FacadeHelper; import org.eclipse.emf.codegen.merge.java.facade.jdom.JDOMFacadeHelper; import org.eclipse.emf.codegen.util.CodeGenUtil; import org.eclipse.jdt.core.JavaCore; /** * Each test method in this class works with same directory as {@link JMergerTest}. * <p> * This test should contain special test cases that require special code executed for them. * Special cases will use directory returned by {@link #getDefaultDataDirectory()}. * <p> * In addition, this test is ran automatically by {@link JMergerTestSuite} for all input directories. * * @see #JMergerJDOMTest(TestSuite, File) */ public class JMergerJDOMTest extends JMergerTest { /** * @param name */ public JMergerJDOMTest(String name) { super(name); } /** * Adds itself to test suite if possible by {@link #addItself(TestSuite)}. * <p> * Sets test name to be <code>mergeJDOM</code>. * * @param ts * @param dataDirectory * @see #mergeJDOM() */ public JMergerJDOMTest(TestSuite ts, File dataDirectory) { super(ts, dataDirectory); setName("mergeJDOM"); } /** * Name of the expected output file when JDOM facade implementation is used. * @see #getTestSpecificExpectedOutput() */ public static final String JDOM_EXPECTED_OUTPUT_FILENAME = "JDOMMergerExpected.java"; /** * Special test cases that are not in {@link JMergerTestSuite} */ public static Test suite() { TestSuite ts = new TestSuite("JMerger JDOM Test"); ts.addTest(new JMergerJDOMTest("merge4")); return ts; } /* * Bugzilla 163856 */ public void merge4() throws Exception { adjustSourceCompatibility(JavaCore.VERSION_1_5); applyGenModelEditorFormatting = true; verifyMerge(expectedOutput, mergeFiles()); } /** * Method to be used in tests created based on data directories. * @throws Exception * @see #addItself(TestSuite) * @see JMergerTestSuite */ public void mergeJDOM() throws Exception { merge(); } @Override protected void instanceTest(FacadeHelper facadeHelper) { assertTrue(JDOMFacadeHelper.class.isInstance(facadeHelper)); } @Override protected FacadeHelper instanciateFacadeHelper() { FacadeHelper facadeHelper = CodeGenUtil.instantiateFacadeHelper(JDOMFacadeHelper.class.getCanonicalName()); return facadeHelper; } @Override protected File getTestSpecificExpectedOutput() { return new File(getDataDirectory(), JDOM_EXPECTED_OUTPUT_FILENAME); } /** * Adds itself only if java version is 1.4 based on directory ({@link #computeExpectedOutputFile()} * and if possible by {@link JMergerTest#addItself(TestSuite)}. * * @see org.eclipse.emf.test.tools.merger.JMergerTest#addItself(junit.framework.TestSuite) */ @Override public void addItself(TestSuite ts) { String javaVersion = computeJavaVersion(); if (JavaCore.VERSION_1_4.equals(javaVersion)) { super.addItself(ts); } } }