org.eclipse.emf.test.tools.merger
Class JMergerTest

java.lang.Object
  extended by junit.framework.Assert
      extended by junit.framework.TestCase
          extended by org.eclipse.emf.test.tools.merger.JMergerTest
All Implemented Interfaces:
junit.framework.Test
Direct Known Subclasses:
JMergerASTTest, JMergerJDOMTest

public abstract class JMergerTest
extends junit.framework.TestCase

Base class for all JMerger tests.

For special test cases, default data directory is determined by getDefaultDataDirectory(). For tests created by JMergerTestSuite, see JMergerTestSuite.

Merge source and target files are respectively MergerSource.java and MergerTarget.java in data directory.

Expected output file is either test specific output file (determined by getTestSpecificExpectedOutput() or MergerExpected.java in data directory.

Merge rules are used from merge.xml file in data directory if it exists, otherwise default EMF merge rules are used.


Field Summary
protected  boolean applyGenModelEditorFormatting
          If true, editor options are set from default options in genmodel.
protected  java.io.File dataDirectory
           
static java.lang.String DEFAULT_EXPECTED_OUTPUT_FILENAME
          Default name of the expected output file.
static java.util.Map<java.lang.String,java.lang.String> DIRECTORY_NAMES_TO_JAVA_VERSIONS
          Map of directory names to versions of Java to be used to overwrite settings in JavaCore.
protected  java.io.File expectedOutput
           
protected  java.lang.String mergeRulesURI
          URI of merge rules file to be used by JControlModel.initialize(FacadeHelper, String)
protected  java.io.File source
           
protected  java.io.File target
           
 
Constructor Summary
JMergerTest(java.lang.String name)
           
JMergerTest(junit.framework.TestSuite ts, java.io.File dataDirectory)
          Creates and adds the test to the given test suite if possible
 
Method Summary
 void addItself(junit.framework.TestSuite ts)
          Adds itself to the test suite if expected output file returned by computeExpectedOutputFile() exists.
protected  void adjustSourceCompatibility()
          Adjusts JavaCore source compatibility options based on computeJavaVersion().
protected  void adjustSourceCompatibility(java.lang.String javaVersion)
           
protected  void applyGenModelEditorFormattingSettings(JControlModel jControlModel)
           
protected  java.io.File computeExpectedOutputFile()
           
protected  java.lang.String computeJavaVersion()
          Determines java version based on the name of the parent of data directory.
 java.io.File getDataDirectory()
           
protected  java.io.File getDefaultDataDirectory()
          Default directory is in the form data/merge.input/special.
protected  java.lang.String getEMFMergeRulesURI()
           
 java.io.File getExpectedOutput()
           
 java.lang.String getMergeRulesURI()
           
protected  java.io.File getTestSpecificExpectedOutput()
          Returns unique name for the expected output file.
protected abstract  void instanceTest(FacadeHelper facadeHelper)
          Tests whether the facade helper is of correct type
protected abstract  FacadeHelper instanciateFacadeHelper()
           
protected  void merge()
          Perform and verify merge.
protected  java.lang.String mergeFiles()
           
 void setDataDirectory(java.io.File dataDirectory)
           
 void setExpectedOutput(java.io.File expectedOutput)
           
 void setMergeRulesURI(java.lang.String mergeRulesURI)
           
protected  void setUp()
          Sets up data directory, source, target, expected output, and merge rules attributes.
protected static void verifyMerge(java.io.File expectedOutput, java.lang.String targetContents)
          Verifies that target contents matches the contents of expected output file.
 
Methods inherited from class junit.framework.TestCase
countTestCases, createResult, getName, run, run, runBare, runTest, setName, tearDown, toString
 
Methods inherited from class junit.framework.Assert
assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, fail, fail, failNotEquals, failNotSame, failSame, format
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

DEFAULT_EXPECTED_OUTPUT_FILENAME

public static final java.lang.String DEFAULT_EXPECTED_OUTPUT_FILENAME
Default name of the expected output file.

See Also:
Constant Field Values

DIRECTORY_NAMES_TO_JAVA_VERSIONS

public static final java.util.Map<java.lang.String,java.lang.String> DIRECTORY_NAMES_TO_JAVA_VERSIONS
Map of directory names to versions of Java to be used to overwrite settings in JavaCore.


applyGenModelEditorFormatting

protected boolean applyGenModelEditorFormatting
If true, editor options are set from default options in genmodel.


dataDirectory

protected java.io.File dataDirectory

expectedOutput

protected java.io.File expectedOutput

mergeRulesURI

protected java.lang.String mergeRulesURI
URI of merge rules file to be used by JControlModel.initialize(FacadeHelper, String)


source

protected java.io.File source

target

protected java.io.File target
Constructor Detail

JMergerTest

public JMergerTest(java.lang.String name)
Parameters:
name -

JMergerTest

public JMergerTest(junit.framework.TestSuite ts,
                   java.io.File dataDirectory)
Creates and adds the test to the given test suite if possible

Parameters:
ts -
dataDirectory -
See Also:
addItself(TestSuite)
Method Detail

verifyMerge

protected static void verifyMerge(java.io.File expectedOutput,
                                  java.lang.String targetContents)
Verifies that target contents matches the contents of expected output file.

Parameters:
expectedOutput -
targetContents -

adjustSourceCompatibility

protected void adjustSourceCompatibility(java.lang.String javaVersion)
Parameters:
javaVersion - (one of JavaCore.VERSION_1_1 to JavaCore.VERSION_1_6

adjustSourceCompatibility

protected void adjustSourceCompatibility()
Adjusts JavaCore source compatibility options based on computeJavaVersion().

See Also:
adjustSourceCompatibility(String)

computeJavaVersion

protected java.lang.String computeJavaVersion()
Determines java version based on the name of the parent of data directory.

Parent directory must match one of DIRECTORY_NAMES_TO_JAVA_VERSIONS

Returns:
java version or null if can not be determined

computeExpectedOutputFile

protected java.io.File computeExpectedOutputFile()
Returns:
test specific expected output file or default expected output file, but never null.
See Also:
getTestSpecificExpectedOutput()

getTestSpecificExpectedOutput

protected java.io.File getTestSpecificExpectedOutput()
Returns unique name for the expected output file.

Expected to be overwritten by subclasses.

This implementation returns null.

Returns:
expected output file, or null if only default file should be used

applyGenModelEditorFormattingSettings

protected void applyGenModelEditorFormattingSettings(JControlModel jControlModel)
Parameters:
jControlModel -

getDefaultDataDirectory

protected java.io.File getDefaultDataDirectory()
Default directory is in the form data/merge.input/special.<testname>

Returns:
default data directory to use if data directory not set

getEMFMergeRulesURI

protected java.lang.String getEMFMergeRulesURI()
Returns:
URI of EMF merge rules resource

getDataDirectory

public java.io.File getDataDirectory()
Returns:
the dataDirectory

getExpectedOutput

public java.io.File getExpectedOutput()
Returns:
the expectedOutput

getMergeRulesURI

public java.lang.String getMergeRulesURI()
Returns:
the mergeRulesURI

setDataDirectory

public void setDataDirectory(java.io.File dataDirectory)
Parameters:
dataDirectory - the dataDirectory to set

setExpectedOutput

public void setExpectedOutput(java.io.File expectedOutput)
Parameters:
expectedOutput - the expectedOutput to set

setMergeRulesURI

public void setMergeRulesURI(java.lang.String mergeRulesURI)
Parameters:
mergeRulesURI - the mergeRulesURI to set

instanceTest

protected abstract void instanceTest(FacadeHelper facadeHelper)
Tests whether the facade helper is of correct type

Parameters:
facadeHelper -

instanciateFacadeHelper

protected abstract FacadeHelper instanciateFacadeHelper()
Returns:
facade helper instance

addItself

public void addItself(junit.framework.TestSuite ts)
Adds itself to the test suite if expected output file returned by computeExpectedOutputFile() exists.

Parameters:
ts -

merge

protected void merge()
              throws java.lang.Exception
Perform and verify merge. To be used in merge tests by subclasses. Before performing merge, java compiler source version is set based on data directory.

Throws:
java.lang.Exception
See Also:
adjustSourceCompatibility()

mergeFiles

protected java.lang.String mergeFiles()
                               throws java.lang.Exception
Returns:
contents after merging contents of source and target files
Throws:
java.lang.Exception

setUp

protected void setUp()
              throws java.lang.Exception
Sets up data directory, source, target, expected output, and merge rules attributes.

If merge.xml is not available in data directory, default EMF merge rules are used.

Overrides:
setUp in class junit.framework.TestCase
Throws:
java.lang.Exception
See Also:
getDataDirectory(), computeExpectedOutputFile(), getEMFMergeRulesURI(), TestCase.setUp()

Copyright 2001-2006 IBM Corporation and others.
All Rights Reserved.