Browse Source

Renamed testcases hierarchy to test

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271958 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 23 years ago
parent
commit
bf73eb74a3
100 changed files with 7 additions and 6466 deletions
  1. +4
    -4
      proposal/myrmidon/build.xml
  2. +2
    -2
      proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/IsSetCondition.java
  3. +1
    -1
      proposal/myrmidon/src/test/org/apache/aut/bzip2/test/BzipTestCase.java
  4. +0
    -100
      proposal/myrmidon/src/testcases/org/apache/antlib/core/test/IfTestCase.java
  5. +0
    -116
      proposal/myrmidon/src/testcases/org/apache/antlib/core/test/PropertyTestCase.java
  6. +0
    -37
      proposal/myrmidon/src/testcases/org/apache/antlib/core/test/PropertyTestType.java
  7. +0
    -63
      proposal/myrmidon/src/testcases/org/apache/antlib/core/test/if.ant
  8. +0
    -65
      proposal/myrmidon/src/testcases/org/apache/antlib/core/test/property.ant
  9. +0
    -35
      proposal/myrmidon/src/testcases/org/apache/antlib/vfile/test/CopyFilesTaskTestCase.java
  10. +0
    -8
      proposal/myrmidon/src/testcases/org/apache/antlib/vfile/test/copy.ant
  11. +0
    -0
      proposal/myrmidon/src/testcases/org/apache/antlib/vfile/test/src/emptyFile.txt
  12. +0
    -1
      proposal/myrmidon/src/testcases/org/apache/antlib/vfile/test/src/file1.txt
  13. +0
    -5
      proposal/myrmidon/src/testcases/org/apache/antlib/vfile/test/src/subdir1/someFile.html
  14. BIN
      proposal/myrmidon/src/testcases/org/apache/aut/bzip2/asf-logo-huge.tar
  15. BIN
      proposal/myrmidon/src/testcases/org/apache/aut/bzip2/asf-logo-huge.tar.bz2
  16. +0
    -115
      proposal/myrmidon/src/testcases/org/apache/aut/bzip2/test/BzipTestCase.java
  17. BIN
      proposal/myrmidon/src/testcases/org/apache/aut/bzip2/test/asf-logo-huge.tar
  18. BIN
      proposal/myrmidon/src/testcases/org/apache/aut/bzip2/test/asf-logo-huge.tar.bz2
  19. +0
    -795
      proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/AbstractFileSystemTestCase.java
  20. +0
    -24
      proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/AbstractReadOnlyFileSystemTestCase.java
  21. +0
    -259
      proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/AbstractWritableFileSystemTestCase.java
  22. +0
    -45
      proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/FtpFileSystemTestCase.java
  23. +0
    -60
      proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/LocalFileSystemTestCase.java
  24. +0
    -43
      proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/NestedZipFileSystemTestCase.java
  25. +0
    -44
      proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/SmbFileSystemTestCase.java
  26. +0
    -37
      proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/ZipFileSystemTestCase.java
  27. +0
    -0
      proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/basedir/dir1/file1.txt
  28. +0
    -0
      proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/basedir/dir1/file2.txt
  29. +0
    -0
      proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/basedir/dir1/file3.txt
  30. +0
    -0
      proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/basedir/empty.txt
  31. +0
    -2
      proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/basedir/file1.txt
  32. +0
    -217
      proposal/myrmidon/src/testcases/org/apache/myrmidon/AbstractMyrmidonTest.java
  33. +0
    -144
      proposal/myrmidon/src/testcases/org/apache/myrmidon/AbstractProjectTest.java
  34. +0
    -293
      proposal/myrmidon/src/testcases/org/apache/myrmidon/DependencyMetricsTest.java
  35. +0
    -59
      proposal/myrmidon/src/testcases/org/apache/myrmidon/LogMessageTracker.java
  36. +0
    -121
      proposal/myrmidon/src/testcases/org/apache/myrmidon/TrackingProjectListener.java
  37. +0
    -207
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/AbstractComponentTest.java
  38. +0
    -302
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/DefaultProjectBuilderTestCase.java
  39. +0
    -4
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/bad-project-name.ant
  40. +0
    -5
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/bad-target-name.ant
  41. +0
    -3
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/bad-version.ant
  42. +0
    -1
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/bad-xml.ant
  43. +0
    -3
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/defaults.ant
  44. +0
    -3
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/mismatched-version.ant
  45. +0
    -3
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/no-version.ant
  46. +0
    -3
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/set-base-dir.ant
  47. +0
    -3
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/set-default-target.ant
  48. +0
    -3
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/set-project-name.ant
  49. +0
    -36
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/ConfigTestConfigurable.java
  50. +0
    -859
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/DefaultConfigurerTestCase.java
  51. +0
    -22
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/MyRole1.java
  52. +0
    -34
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/MyRole1Adaptor.java
  53. +0
    -18
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/MyRole2.java
  54. +0
    -25
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/MyType1.java
  55. +0
    -25
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/MyType2.java
  56. +0
    -34
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/ObjectToMyRole1Converter.java
  57. +0
    -46
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestAttributeConvert.java
  58. +0
    -33
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestConfigAdder.java
  59. +0
    -42
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestContent.java
  60. +0
    -20
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestEmpty.java
  61. +0
    -42
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestIdResolve.java
  62. +0
    -105
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestIgnoreStringMethods.java
  63. +0
    -33
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestInterfaceAdder.java
  64. +0
    -26
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestMismatchedRefType.java
  65. +0
    -28
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestMultipleTypedAdder.java
  66. +0
    -20
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestNestedErrors.java
  67. +0
    -23
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestNonInterfaceAdder.java
  68. +0
    -41
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestPropResolution.java
  69. +0
    -41
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestReferenceAttribute.java
  70. +0
    -32
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestReferenceConversion.java
  71. +0
    -37
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestReferenceElement.java
  72. +0
    -50
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestSetAndAdd.java
  73. +0
    -41
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestSetAttribute.java
  74. +0
    -47
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestSetElement.java
  75. +0
    -33
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestTypedAdder.java
  76. +0
    -40
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestTypedAdderConversion.java
  77. +0
    -33
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestTypedAdderReference.java
  78. +0
    -33
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestTypedAdderRole.java
  79. +0
    -33
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestTypedConfigAdder.java
  80. +0
    -23
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestUnknownReference.java
  81. +0
    -203
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/deployer/test/DefaultDeployerTestCase.java
  82. +0
    -29
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/deployer/test/TestConverter1.java
  83. +0
    -18
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/deployer/test/TestRole1.java
  84. +0
    -21
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/deployer/test/TestType1.java
  85. +0
    -18
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/deployer/test/ant-descriptor.xml
  86. +0
    -4
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/deployer/test/ant-roles.xml
  87. +0
    -94
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/embeddor/test/DefaultEmbeddorTest.java
  88. +0
    -6
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/embeddor/test/project-builder.ant
  89. +0
    -166
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/test/AbstractPropertyResolverTestCase.java
  90. +0
    -42
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/test/ClassicPropertyResolverTestCase.java
  91. +0
    -48
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/test/DefaultPropertyResolverTestCase.java
  92. +0
    -182
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/role/test/DefaultRoleManagerTestCase.java
  93. +0
    -145
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/service/test/InstantiatingServiceManagerTestCase.java
  94. +0
    -67
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/service/test/LifecycleValidator.java
  95. +0
    -19
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/service/test/TestService.java
  96. +0
    -30
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/service/test/TestServiceFactory1.java
  97. +0
    -34
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/service/test/TestServiceFactory2.java
  98. +0
    -24
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/service/test/TestServiceImpl1.java
  99. +0
    -27
      proposal/myrmidon/src/testcases/org/apache/myrmidon/components/service/test/TestServiceImpl2.java
  100. +0
    -99
      proposal/myrmidon/src/testcases/org/apache/myrmidon/framework/file/test/PathTestCase.java

+ 4
- 4
proposal/myrmidon/build.xml View File

@@ -64,7 +64,7 @@ Legal:
<property name="gen.dir" value="${build.dir}/gen"/>

<property name="test.dir" value="${build.dir}/test"/>
<property name="test.working.dir" value="${test.dir}/testcases"/>
<property name="test.working.dir" value="${test.dir}/test"/>
<property name="test.classes" value="${test.dir}/classes"/>

<property name="constants.file" value="org/apache/myrmidon/Constants.java"/>
@@ -516,7 +516,7 @@ Legal:
<target name="run-tests" depends="dist-lite" if="junit.present">
<!-- Compile the unit tests -->
<mkdir dir="${test.classes}"/>
<javac srcdir="src/testcases"
<javac srcdir="src/test"
destdir="${test.classes}"
debug="${debug}"
deprecation="${deprecation}">
@@ -535,7 +535,7 @@ Legal:

<!-- Copy the resources from source tree into working test dir -->
<copy todir="${test.working.dir}">
<fileset dir="src/testcases">
<fileset dir="src/test">
<exclude name="**/*.java"/>
</fileset>
</copy>
@@ -571,7 +571,7 @@ Legal:
<antlib-descriptor libName="unittests"
destdir="${gen.dir}"
classpathref="project.class.path">
<fileset dir="src/testcases">
<fileset dir="src/test">
<include name="org/apache/antlib/**"/>
<include name="org/apache/myrmidon/framework/**"/>
</fileset>


+ 2
- 2
proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/IsSetCondition.java View File

@@ -26,8 +26,8 @@ import org.apache.myrmidon.api.TaskException;
public class IsSetCondition
implements Condition
{
private final static Resources REZ
= ResourceManager.getPackageResources( IsSetCondition.class );
private final static Resources REZ =
ResourceManager.getPackageResources( IsSetCondition.class );

private String m_property;



+ 1
- 1
proposal/myrmidon/src/test/org/apache/aut/bzip2/test/BzipTestCase.java View File

@@ -104,7 +104,7 @@ public class BzipTestCase
private InputStream getInputStream( final String resource )
throws Exception
{
final String filename = "src" + File.separator + "testcases" + File.separator +
final String filename = "src" + File.separator + "test" + File.separator +
getClass().getName().replace( '.', File.separatorChar );
final String path = FileUtil.getPath( filename );
final File input = new File( path, resource );


+ 0
- 100
proposal/myrmidon/src/testcases/org/apache/antlib/core/test/IfTestCase.java View File

@@ -1,100 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.core.test;

import java.io.File;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.myrmidon.AbstractProjectTest;
import org.apache.myrmidon.LogMessageTracker;

/**
* Test cases for the <if> task.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class IfTestCase
extends AbstractProjectTest
{
private final static Resources REZ = getResourcesForTested( IfTestCase.class );

public IfTestCase( String name )
{
super( name );
}

/**
* Test checking whether a property is set and not 'false'.
*/
public void testConditions()
throws Exception
{
final File projectFile = getTestResource( "if.ant" );

// Test when property is set to 'true'
LogMessageTracker listener = new LogMessageTracker();
listener.addExpectedMessage( "true-prop", "test-prop is set" );
executeTarget( projectFile, "true-prop", listener );

// Test when property is set to a value other than 'true' or 'false'
listener = new LogMessageTracker();
listener.addExpectedMessage( "set-prop", "test-prop is set" );
executeTarget( projectFile, "set-prop", listener );

// Test when property is set to 'false'
listener = new LogMessageTracker();
listener.addExpectedMessage( "false-prop", "test-prop is not set" );
executeTarget( projectFile, "false-prop", listener );

// Test when property is not set
listener = new LogMessageTracker();
listener.addExpectedMessage( "not-set-prop", "test-prop is not set" );
executeTarget( projectFile, "not-set-prop", listener );
}

/**
* Tests that the <if> task can handle multiple nested tasks.
*/
public void testMultipleTasks() throws Exception
{
final File projectFile = getTestResource( "if.ant" );

// Test when property is not set
LogMessageTracker listener = new LogMessageTracker();
listener.addExpectedMessage( "multiple-nested-tasks", "task 1" );
listener.addExpectedMessage( "multiple-nested-tasks", "task 2" );
listener.addExpectedMessage( "multiple-nested-tasks", "task 3" );
listener.addExpectedMessage( "multiple-nested-tasks", "task 4" );
executeTarget( projectFile, "multiple-nested-tasks", listener );
}

/**
* Tests validation.
*/
public void testValidation() throws Exception
{
final File projectFile = getTestResource( "if.ant" );

// Check for missing condition
String[] messages = {
null,
REZ.getString( "if.no-condition.error" )
};
executeTargetExpectError( projectFile, "no-condition", messages );

// Check for too many conditions
messages = new String[]
{
null,
null,
REZ.getString( "if.ifelse-duplicate.error" )
};
executeTargetExpectError( projectFile, "too-many-conditions", messages );
}

}

+ 0
- 116
proposal/myrmidon/src/testcases/org/apache/antlib/core/test/PropertyTestCase.java View File

@@ -1,116 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.core.test;

import java.io.File;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.myrmidon.AbstractProjectTest;
import org.apache.myrmidon.LogMessageTracker;
import org.apache.myrmidon.components.workspace.DefaultTaskContext;

/**
* Test cases for <property> task.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class PropertyTestCase
extends AbstractProjectTest
{
private final static Resources REZ = getResourcesForTested( PropertyTestCase.class );

public PropertyTestCase( final String name )
{
super( name );
}

/**
* Tests setting a property, using an attribute, text content, and
* nested element.
*/
public void testSetProperty()
throws Exception
{
final File projectFile = getTestResource( "property.ant" );

// Set by attribute
LogMessageTracker tracker = new LogMessageTracker();
tracker.addExpectedMessage( "set-attr", "test-prop = [some value]" );
executeTarget( projectFile, "set-attr", tracker );

// Set by text content
tracker = new LogMessageTracker();
tracker.addExpectedMessage( "set-content", "test-prop2 = [some value]" );
executeTarget( projectFile, "set-content", tracker );

// Set by nested element
tracker = new LogMessageTracker();
tracker.addExpectedMessage( "set-element", "test-prop3 = [value=[some value]]" );
executeTarget( projectFile, "set-element", tracker );
}

/**
* Tests the validation performed by the propery task.
*/
public void testValidation()
throws Exception
{
final File projectFile = getTestResource( "property.ant" );

// Missing name
String[] messages =
{
null,
REZ.getString( "property.no-name.error" )
};
executeTargetExpectError( projectFile, "missing-name", messages );

// Missing value
messages = new String[]
{
null,
REZ.getString( "property.no-value.error" )
};
executeTargetExpectError( projectFile, "missing-value", messages );

// Too many values
messages = new String[]
{
null,
null,
REZ.getString( "property.multi-set.error" )
};
executeTargetExpectError( projectFile, "too-many-values1", messages );
executeTargetExpectError( projectFile, "too-many-values2", messages );
executeTargetExpectError( projectFile, "too-many-values3", messages );
}

/**
* Tests basic validation of property names.
*/
public void testNameValidation() throws Exception
{
final File projectFile = getTestResource( "property.ant" );

final Resources contextResources
= ResourceManager.getPackageResources( DefaultTaskContext.class );

// Invalid names
String[] messages = new String[]
{
null,
contextResources.getString( "bad-property-name.error" ),
null
};
executeTargetExpectError( projectFile, "bad-prop-name1", messages );
executeTargetExpectError( projectFile, "bad-prop-name2", messages );
executeTargetExpectError( projectFile, "bad-prop-name3", messages );
}

}

+ 0
- 37
proposal/myrmidon/src/testcases/org/apache/antlib/core/test/PropertyTestType.java View File

@@ -1,37 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.core.test;

import org.apache.myrmidon.framework.DataType;

/**
* A test data-type used by the property tests.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*
* @ant:data-type name="property-test-type"
*/
public class PropertyTestType
implements DataType
{
private String m_value;

public void setValue( final String value )
{
m_value = value;
}

/**
* Used in the test project file to check the value has been set.
*/
public String toString()
{
return "value=[" + m_value + "]";
}
}

+ 0
- 63
proposal/myrmidon/src/testcases/org/apache/antlib/core/test/if.ant View File

@@ -1,63 +0,0 @@
<project version="2.0">
<target name="true-prop">
<property name="test-prop" value="true"/>
<if test="test-prop">
<log>test-prop is set</log>
</if>
<if not-test="test-prop">
<log>test-prop is not set</log>
</if>
</target>

<target name="set-prop">
<property name="test-prop" value="some value"/>
<if test="test-prop">
<log>test-prop is set</log>
</if>
<if not-test="test-prop">
<log>test-prop is not set</log>
</if>
</target>

<target name="not-set-prop">
<if test="test-prop">
<log>test-prop is set</log>
</if>
<if not-test="test-prop">
<log>test-prop is not set</log>
</if>
</target>

<target name="false-prop">
<property name="test-prop" value="false"/>
<if test="test-prop">
<log>test-prop is set</log>
</if>
<if not-test="test-prop">
<log>test-prop is not set</log>
</if>
</target>

<target name="multiple-nested-tasks">
<property name="test-prop" value="true"/>
<if test="test-prop">
<log>task 1</log>
<log>task 2</log>
<log>task 3</log>
<log>task 4</log>
</if>
</target>

<target name="no-condition">
<if>
<log>no go</log>
</if>
</target>

<target name="too-many-conditions">
<if test="test-prop" not-test="test-prop">
<log>no go</log>
</if>
</target>

</project>

+ 0
- 65
proposal/myrmidon/src/testcases/org/apache/antlib/core/test/property.ant View File

@@ -1,65 +0,0 @@
<project version="2.0">

<!-- Test setting property via attribute -->
<target name="set-attr">
<property name="test-prop" value="some value"/>
<log>test-prop = [${test-prop}]</log>
</target>

<!-- Test setting property via content -->
<target name="set-content">
<property name="test-prop2">some value</property>
<log>test-prop2 = [${test-prop2}]</log>
</target>

<!-- Test setting property via a nested element -->
<target name="set-element">
<property name="test-prop3">
<property-test-type value="some value"/>
</property>
<log>test-prop3 = [${test-prop3}]</log>
</target>

<!-- Test missing property name -->
<target name="missing-name">
<property value="some value"/>
</target>

<!-- Test missing property value -->
<target name="missing-value">
<property name="some-prop"/>
</target>

<!-- Test setting the value more than once -->
<target name="too-many-values1">
<property name="some-prop" value="some value">another value</property>
</target>

<!-- Test setting the value more than once -->
<target name="too-many-values2">
<property name="some-prop" value="some value">
<property-test-type value="value 2"/>
</property>
</target>

<!-- Test setting the value more than once -->
<target name="too-many-values3">
<property name="some-prop">
<property-test-type value="value 1"/>
<property-test-type value="value 2"/>
<property-test-type value="value 3"/>
</property>
</target>

<!-- Test properties with invalid names -->
<target name="bad-prop-name1">
<property name="badname!" value="value"/>
</target>
<target name="bad-prop-name2">
<property name="bad name" value="value"/>
</target>
<target name="bad-prop-name3">
<property name="" value="value"/>
</target>

</project>

+ 0
- 35
proposal/myrmidon/src/testcases/org/apache/antlib/vfile/test/CopyFilesTaskTestCase.java View File

@@ -1,35 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.antlib.vfile.test;

import java.io.File;
import org.apache.myrmidon.AbstractProjectTest;

/**
* Test cases for the <v-copy> task.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class CopyFilesTaskTestCase
extends AbstractProjectTest
{
public CopyFilesTaskTestCase( String name )
{
super( name );
}

/**
* A simple smoke test.
*/
public void testCopy() throws Exception
{
final File projectFile = getTestResource( "copy.ant" );
executeTarget( projectFile, "copy" );
}
}

+ 0
- 8
proposal/myrmidon/src/testcases/org/apache/antlib/vfile/test/copy.ant View File

@@ -1,8 +0,0 @@
<project version="2.0">
<target name="copy">
<v-fileset id="src-files" dir="src"/>
<v-copy destdir="dest">
<v-fileset-ref id="src-files"/>
</v-copy>
</target>
</project>

+ 0
- 0
proposal/myrmidon/src/testcases/org/apache/antlib/vfile/test/src/emptyFile.txt View File


+ 0
- 1
proposal/myrmidon/src/testcases/org/apache/antlib/vfile/test/src/file1.txt View File

@@ -1 +0,0 @@
A test file.

+ 0
- 5
proposal/myrmidon/src/testcases/org/apache/antlib/vfile/test/src/subdir1/someFile.html View File

@@ -1,5 +0,0 @@
<html>
<body>
<p>Yo!</p>
</body>
</html>

BIN
proposal/myrmidon/src/testcases/org/apache/aut/bzip2/asf-logo-huge.tar View File


BIN
proposal/myrmidon/src/testcases/org/apache/aut/bzip2/asf-logo-huge.tar.bz2 View File


+ 0
- 115
proposal/myrmidon/src/testcases/org/apache/aut/bzip2/test/BzipTestCase.java View File

@@ -1,115 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.aut.bzip2.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import junit.framework.TestCase;
import org.apache.avalon.excalibur.io.FileUtil;
import org.apache.avalon.excalibur.io.IOUtil;
import org.apache.aut.bzip2.CBZip2OutputStream;
import org.apache.aut.bzip2.CBZip2InputStream;

/**
* A test the stress tested the BZip implementation to verify
* that it behaves correctly.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class BzipTestCase
extends TestCase
{
private final static byte[] HEADER = new byte[]{(byte)'B', (byte)'Z'};

public BzipTestCase( final String name )
{
super( name );
}

public void testBzipOutputStream()
throws Exception
{
final InputStream input = getInputStream( "asf-logo-huge.tar" );
final File outputFile = getOutputFile( ".tar.bz2" );
final OutputStream output = new FileOutputStream( outputFile );
final CBZip2OutputStream packedOutput = getPackedOutput( output );
IOUtil.copy( input, packedOutput );
IOUtil.shutdownStream( input );
IOUtil.shutdownStream( packedOutput );
IOUtil.shutdownStream( output );
compareContents( "asf-logo-huge.tar.bz2", outputFile );
FileUtil.forceDelete( outputFile );
}

public void testBzipInputStream()
throws Exception
{
final InputStream input = getInputStream( "asf-logo-huge.tar.bz2" );
final File outputFile = getOutputFile( ".tar" );
final OutputStream output = new FileOutputStream( outputFile );
final CBZip2InputStream packedInput = getPackedInput( input );
IOUtil.copy( packedInput, output );
IOUtil.shutdownStream( input );
IOUtil.shutdownStream( packedInput );
IOUtil.shutdownStream( output );
compareContents( "asf-logo-huge.tar", outputFile );
FileUtil.forceDelete( outputFile );
}

private void compareContents( final String initial, final File generated )
throws Exception
{
final InputStream input1 = getInputStream( initial );
final InputStream input2 = new FileInputStream( generated );
final boolean test = IOUtil.contentEquals( input1, input2 );
IOUtil.shutdownStream( input1 );
IOUtil.shutdownStream( input2 );
assertTrue( "Contents of " + initial + " matches generated version " + generated, test );
}

private CBZip2InputStream getPackedInput( final InputStream input )
throws IOException
{
final int b1 = input.read();
final int b2 = input.read();
assertEquals( "Equal header byte1", b1, 'B' );
assertEquals( "Equal header byte2", b2, 'Z' );
return new CBZip2InputStream( input );
}

private CBZip2OutputStream getPackedOutput( final OutputStream output )
throws IOException
{
output.write( HEADER );
return new CBZip2OutputStream( output );
}

private File getOutputFile( final String postfix )
throws IOException
{
final File cwd = new File( "." );
return File.createTempFile( "ant-test", postfix, cwd );
}

private InputStream getInputStream( final String resource )
throws Exception
{
final String filename = "src" + File.separator + "testcases" + File.separator +
getClass().getName().replace( '.', File.separatorChar );
final String path = FileUtil.getPath( filename );
final File input = new File( path, resource );
return new FileInputStream( input );
//final ClassLoader loader = getClass().getClassLoader();
//return loader.getResourceAsStream( resource );
}
}

BIN
proposal/myrmidon/src/testcases/org/apache/aut/bzip2/test/asf-logo-huge.tar View File


BIN
proposal/myrmidon/src/testcases/org/apache/aut/bzip2/test/asf-logo-huge.tar.bz2 View File


+ 0
- 795
proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/AbstractFileSystemTestCase.java View File

@@ -1,795 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.aut.vfs.test;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.aut.vfs.impl.DefaultFileSystemManager;
import org.apache.aut.vfs.provider.AbstractFileObject;
import org.apache.aut.vfs.FileObject;
import org.apache.aut.vfs.FileType;
import org.apache.aut.vfs.FileSystemException;
import org.apache.aut.vfs.FileName;
import org.apache.aut.vfs.NameScope;
import org.apache.aut.vfs.FileContent;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.myrmidon.AbstractMyrmidonTest;

/**
* File system test cases, which verifies the structure and naming
* functionality.
*
* Works from a base folder, and assumes a particular structure under
* that base folder.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
*/
public abstract class AbstractFileSystemTestCase
extends AbstractMyrmidonTest
{
private final static Resources REZ
= ResourceManager.getPackageResources( AbstractFileObject.class );

protected FileObject m_baseFolder;
protected DefaultFileSystemManager m_manager;

// Contents of "file1.txt"
private String m_charContent;

public AbstractFileSystemTestCase( String name )
{
super( name );
}

/**
* Builds the expected folder structure.
*/
private FileInfo buildExpectedStructure()
{
// Build the expected structure
final FileInfo base = new FileInfo( "test", FileType.FOLDER );
base.addChild( new FileInfo( "file1.txt", FileType.FILE ) );
base.addChild( new FileInfo( "empty.txt", FileType.FILE ) );
base.addChild( new FileInfo( "emptydir", FileType.FOLDER ) );

final FileInfo dir = new FileInfo( "dir1", FileType.FOLDER );
base.addChild( dir );
dir.addChild( new FileInfo( "file1.txt", FileType.FILE ) );
dir.addChild( new FileInfo( "file2.txt", FileType.FILE ) );
dir.addChild( new FileInfo( "file3.txt", FileType.FILE ) );
return base;
}

/**
* Returns the base folder to run the tests against.
*/
protected abstract FileObject getBaseFolder() throws Exception;

/**
* Sets up the test
*/
protected void setUp() throws Exception
{
// Create the file system manager
m_manager = new DefaultFileSystemManager();

// Locate the base folder
m_baseFolder = getBaseFolder();

// Make some assumptions absout the name
assertTrue( ! m_baseFolder.getName().getPath().equals( "/" ) );

// Build the expected content of "file1.txt"
final String eol = System.getProperty( "line.separator" );
m_charContent = "This is a test file." + eol + "With 2 lines in it." + eol;
}

/**
* Cleans-up test.
*/
protected void tearDown() throws Exception
{
m_manager.close();
}

/**
* Tests resolution of absolute URI.
*/
public void testAbsoluteURI() throws Exception
{
// Try fetching base folder again by its URI
final String uri = m_baseFolder.getName().getURI();
final FileObject file = m_manager.resolveFile( uri );

assertSame( "file object", m_baseFolder, file );
}

/**
* Tests resolution of relative file names via the FS manager
*/
public void testRelativeURI() throws Exception
{
// Build base dir
m_manager.setBaseFile( m_baseFolder );

// Locate the base dir
FileObject file = m_manager.resolveFile( "." );
assertSame( "file object", m_baseFolder, file );

// Locate a child
file = m_manager.resolveFile( "some-child" );
assertSame( "file object", m_baseFolder, file.getParent() );

// Locate a descendent
file = m_manager.resolveFile( "some-folder/some-file" );
assertSame( "file object", m_baseFolder, file.getParent().getParent() );

// Locate parent
file = m_manager.resolveFile( ".." );
assertSame( "file object", m_baseFolder.getParent(), file );
}

/**
* Tests encoding of relative URI.
*/
public void testRelativeUriEncoding() throws Exception
{
// Build base dir
m_manager.setBaseFile( m_baseFolder );
final String path = m_baseFolder.getName().getPath();

// Encode "some file"
FileObject file = m_manager.resolveFile( "%73%6f%6d%65%20%66%69%6c%65" );
assertEquals( path + "/some file", file.getName().getPath() );

// Encode "."
file = m_manager.resolveFile( "%2e" );
assertEquals( path, file.getName().getPath() );

// Encode '%'
file = m_manager.resolveFile( "a%25" );
assertEquals( path + "/a%", file.getName().getPath() );

// Encode /
file = m_manager.resolveFile( "dir%2fchild" );
assertEquals( path + "/dir/child", file.getName().getPath() );

// Encode \
file = m_manager.resolveFile( "dir%5cchild" );
assertEquals( path + "/dir/child", file.getName().getPath() );

// Use "%" literal
try
{
m_manager.resolveFile( "%" );
fail();
}
catch( FileSystemException e )
{
}

// Not enough digits in encoded char
try
{
m_manager.resolveFile( "%5" );
fail();
}
catch( FileSystemException e )
{
}

// Invalid digit in encoded char
try
{
m_manager.resolveFile( "%q" );
fail();
}
catch( FileSystemException e )
{
}
}

/**
* Tests the root file name.
*/
public void testRootFileName() throws Exception
{
// Locate the root file
final FileName rootName = m_baseFolder.getRoot().getName();

// Test that the root path is "/"
assertEquals( "root path", "/", rootName.getPath() );

// Test that the root basname is ""
assertEquals( "root base name", "", rootName.getBaseName() );

// Test that the root name has no parent
assertNull( "root parent", rootName.getParent() );
}

/**
* Tests child file names.
*/
public void testChildName() throws Exception
{
final FileName baseName = m_baseFolder.getName();
final String basePath = baseName.getPath();
final FileName name = baseName.resolveName( "some-child", NameScope.CHILD );

// Test path is absolute
assertTrue( "is absolute", basePath.startsWith( "/" ) );

// Test base name
assertEquals( "base name", "some-child", name.getBaseName() );

// Test absolute path
assertEquals( "absolute path", basePath + "/some-child", name.getPath() );

// Test parent path
assertEquals( "parent absolute path", basePath, name.getParent().getPath() );

// Try using a compound name to find a child
assertBadName( name, "a/b", NameScope.CHILD );

// Check other invalid names
checkDescendentNames( name, NameScope.CHILD );
}

/**
* Name resolution tests that are common for CHILD or DESCENDENT scope.
*/
private void checkDescendentNames( final FileName name,
final NameScope scope )
throws Exception
{
// Make some assumptions about the name
assertTrue( !name.getPath().equals( "/" ) );
assertTrue( !name.getPath().endsWith( "/a" ) );
assertTrue( !name.getPath().endsWith( "/a/b" ) );

// Test names with the same prefix
String path = name.getPath() + "/a";
assertSameName( path, name, path, scope );
assertSameName( path, name, "../" + name.getBaseName() + "/a", scope );

// Test an empty name
assertBadName( name, "", scope );

// Test . name
assertBadName( name, ".", scope );
assertBadName( name, "./", scope );

// Test ancestor names
assertBadName( name, "..", scope );
assertBadName( name, "../a", scope );
assertBadName( name, "../" + name.getBaseName() + "a", scope );
assertBadName( name, "a/..", scope );

// Test absolute names
assertBadName( name, "/", scope );
assertBadName( name, "/a", scope );
assertBadName( name, "/a/b", scope );
assertBadName( name, name.getPath(), scope );
assertBadName( name, name.getPath() + "a", scope );
}

/**
* Checks that a relative name resolves to the expected absolute path.
* Tests both forward and back slashes.
*/
private void assertSameName( final String expectedPath,
final FileName baseName,
final String relName,
final NameScope scope )
throws Exception
{
// Try the supplied name
FileName name = baseName.resolveName( relName, scope );
assertEquals( expectedPath, name.getPath() );

// Replace the separators
relName.replace( '\\', '/' );
name = baseName.resolveName( relName, scope );
assertEquals( expectedPath, name.getPath() );

// And again
relName.replace( '/', '\\' );
name = baseName.resolveName( relName, scope );
assertEquals( expectedPath, name.getPath() );
}

/**
* Checks that a relative name resolves to the expected absolute path.
* Tests both forward and back slashes.
*/
private void assertSameName( String expectedPath,
FileName baseName,
String relName ) throws Exception
{
assertSameName( expectedPath, baseName, relName, NameScope.FILE_SYSTEM );
}

/**
* Tests relative name resolution, relative to the base folder.
*/
public void testNameResolution() throws Exception
{
final FileName baseName = m_baseFolder.getName();
final String parentPath = baseName.getParent().getPath();
final String path = baseName.getPath();
final String childPath = path + "/some-child";

// Test empty relative path
assertSameName( path, baseName, "" );

// Test . relative path
assertSameName( path, baseName, "." );

// Test ./ relative path
assertSameName( path, baseName, "./" );

// Test .// relative path
assertSameName( path, baseName, ".//" );

// Test .///.///. relative path
assertSameName( path, baseName, ".///.///." );
assertSameName( path, baseName, "./\\/.\\//." );

// Test <elem>/.. relative path
assertSameName( path, baseName, "a/.." );

// Test .. relative path
assertSameName( parentPath, baseName, ".." );

// Test ../ relative path
assertSameName( parentPath, baseName, "../" );

// Test ..//./ relative path
assertSameName( parentPath, baseName, "..//./" );
assertSameName( parentPath, baseName, "..//.\\" );

// Test <elem>/../.. relative path
assertSameName( parentPath, baseName, "a/../.." );

// Test <elem> relative path
assertSameName( childPath, baseName, "some-child" );

// Test ./<elem> relative path
assertSameName( childPath, baseName, "./some-child" );

// Test ./<elem>/ relative path
assertSameName( childPath, baseName, "./some-child/" );

// Test <elem>/././././ relative path
assertSameName( childPath, baseName, "./some-child/././././" );

// Test <elem>/../<elem> relative path
assertSameName( childPath, baseName, "a/../some-child" );

// Test <elem>/<elem>/../../<elem> relative path
assertSameName( childPath, baseName, "a/b/../../some-child" );
}

/**
* Tests descendent name resolution.
*/
public void testDescendentName()
throws Exception
{
final FileName baseName = m_baseFolder.getName();

// Test direct child
String path = baseName.getPath() + "/some-child";
assertSameName( path, baseName, "some-child", NameScope.DESCENDENT );

// Test compound name
path = path + "/grand-child";
assertSameName( path, baseName, "some-child/grand-child", NameScope.DESCENDENT );

// Test relative names
assertSameName( path, baseName, "./some-child/grand-child", NameScope.DESCENDENT );
assertSameName( path, baseName, "./nada/../some-child/grand-child", NameScope.DESCENDENT );
assertSameName( path, baseName, "some-child/./grand-child", NameScope.DESCENDENT );

// Test badly formed descendent names
checkDescendentNames( baseName, NameScope.DESCENDENT );
}

/**
* Tests resolution of absolute names.
*/
public void testAbsoluteNames() throws Exception
{
// Test against the base folder
FileName name = m_baseFolder.getName();
checkAbsoluteNames( name );

// Test against the root
name = m_baseFolder.getRoot().getName();
checkAbsoluteNames( name );

// Test against some unknown file
name = name.resolveName( "a/b/unknown" );
checkAbsoluteNames( name );
}

/**
* Tests resolution of absolute names.
*/
private void checkAbsoluteNames( final FileName name ) throws Exception
{
// Root
assertSameName( "/", name, "/" );
assertSameName( "/", name, "//" );
assertSameName( "/", name, "/." );
assertSameName( "/", name, "/some file/.." );

// Some absolute names
assertSameName( "/a", name, "/a" );
assertSameName( "/a", name, "/./a" );
assertSameName( "/a", name, "/a/." );
assertSameName( "/a/b", name, "/a/b" );

// Some bad names
assertBadName( name, "/..", NameScope.FILE_SYSTEM );
assertBadName( name, "/a/../..", NameScope.FILE_SYSTEM );
}

/**
* Asserts that a particular relative name is invalid for a particular
* scope.
*/
private void assertBadName( final FileName name,
final String relName,
final NameScope scope )
{
try
{
name.resolveName( relName, scope );
fail( "expected failure" );
}
catch( FileSystemException e )
{
// TODO - should check error message
}
}

/**
* Walks the base folder structure, asserting it contains exactly the
* expected files and folders.
*/
public void testStructure() throws Exception
{
final FileInfo baseInfo = buildExpectedStructure();
assertSameStructure( m_baseFolder, baseInfo );
}

/**
* Walks a folder structure, asserting it contains exactly the
* expected files and folders.
*/
protected void assertSameStructure( final FileObject folder,
final FileInfo expected )
throws Exception
{
// Setup the structure
final List queueExpected = new ArrayList();
queueExpected.add( expected );

final List queueActual = new ArrayList();
queueActual.add( folder );

while( queueActual.size() > 0 )
{
final FileObject file = (FileObject)queueActual.remove( 0 );
final FileInfo info = (FileInfo)queueExpected.remove( 0 );

// Check the type is correct
assertSame( file.getType(), info._type );

if( info._type == FileType.FILE )
{
continue;
}

// Check children
final FileObject[] children = file.getChildren();

// Make sure all children were found
assertNotNull( children );
assertEquals( "count children of \"" + file.getName() + "\"", info._children.size(), children.length );

// Recursively check each child
for( int i = 0; i < children.length; i++ )
{
final FileObject child = children[ i ];
final FileInfo childInfo = (FileInfo)info._children.get( child.getName().getBaseName() );

// Make sure the child is expected
assertNotNull( childInfo );

// Add to the queue of files to check
queueExpected.add( childInfo );
queueActual.add( child );
}
}
}

/**
* Tests existence determination.
*/
public void testExists() throws Exception
{
// Test a file
FileObject file = m_baseFolder.resolveFile( "file1.txt" );
assertTrue( "file exists", file.exists() );

// Test a folder
file = m_baseFolder.resolveFile( "dir1" );
assertTrue( "folder exists", file.exists() );

// Test an unknown file
file = m_baseFolder.resolveFile( "unknown-child" );
assertTrue( "unknown file does not exist", !file.exists() );

// Test an unknown file in an unknown folder
file = m_baseFolder.resolveFile( "unknown-folder/unknown-child" );
assertTrue( "unknown file does not exist", !file.exists() );
}

/**
* Tests type determination.
*/
public void testType() throws Exception
{
// Test a file
FileObject file = m_baseFolder.resolveFile( "file1.txt" );
assertSame( FileType.FILE, file.getType() );

// Test a folder
file = m_baseFolder.resolveFile( "dir1" );
assertSame( FileType.FOLDER, file.getType() );

// Test an unknown file
file = m_baseFolder.resolveFile( "unknown-child" );
try
{
file.getType();
fail();
}
catch( FileSystemException e )
{
final String message = REZ.getString( "get-type-no-exist.error", file );
assertSameMessage( message, e );
}
}

/**
* Tests parent identity
*/
public void testParent() throws FileSystemException
{
// Test when both exist
FileObject folder = m_baseFolder.resolveFile( "dir1" );
FileObject child = folder.resolveFile( "file3.txt" );
assertTrue( "folder exists", folder.exists() );
assertTrue( "child exists", child.exists() );
assertSame( folder, child.getParent() );

// Test when file does not exist
child = folder.resolveFile( "unknown-file" );
assertTrue( "folder exists", folder.exists() );
assertTrue( "child does not exist", !child.exists() );
assertSame( folder, child.getParent() );

// Test when neither exists
folder = m_baseFolder.resolveFile( "unknown-folder" );
child = folder.resolveFile( "unknown-file" );
assertTrue( "folder does not exist", !folder.exists() );
assertTrue( "child does not exist", !child.exists() );
assertSame( folder, child.getParent() );

// Test root of the file system has no parent
FileObject root = m_baseFolder.getRoot();
assertNull( "root has null parent", root.getParent() );
}

/**
* Tests that children cannot be listed for non-folders.
*/
public void testChildren() throws FileSystemException
{
// Check for file
FileObject file = m_baseFolder.resolveFile( "file1.txt" );
assertSame( FileType.FILE, file.getType() );
try
{
file.getChildren();
fail();
}
catch( FileSystemException e )
{
final String message = REZ.getString( "list-children-not-folder.error", file );
assertSameMessage( message, e );
}

// Should be able to get child by name
file = file.resolveFile( "some-child" );
assertNotNull( file );

// Check for unknown file
file = m_baseFolder.resolveFile( "unknown-file" );
assertTrue( !file.exists() );
try
{
file.getChildren();
fail();
}
catch( FileSystemException e )
{
final String message = REZ.getString( "list-children-no-exist.error", file );
assertSameMessage( message, e );
}

// Should be able to get child by name
FileObject child = file.resolveFile( "some-child" );
assertNotNull( child );
}

/**
* Tests content.
*/
public void testContent() throws Exception
{
// Test non-empty file
FileObject file = m_baseFolder.resolveFile( "file1.txt" );
FileContent content = file.getContent();
assertSameContent( m_charContent, content );

// Test empty file
file = m_baseFolder.resolveFile( "empty.txt" );
content = file.getContent();
assertSameContent( "", content );
}

/**
* Asserts that the content of a file is the same as expected. Checks the
* length reported by getSize() is correct, then reads the content as
* a byte stream, and as a char stream, and compares the result with
* the expected content. Assumes files are encoded using UTF-8.
*/
protected void assertSameContent( final String expected,
final FileContent content )
throws Exception
{
// Get file content as a binary stream
final byte[] expectedBin = expected.getBytes( "utf-8" );

// Check lengths
assertEquals( "same content length", expectedBin.length, content.getSize() );

// Read content into byte array
final InputStream instr = content.getInputStream();
final ByteArrayOutputStream outstr;
try
{
outstr = new ByteArrayOutputStream();
final byte[] buffer = new byte[ 256 ];
int nread = 0;
while( nread >= 0 )
{
outstr.write( buffer, 0, nread );
nread = instr.read( buffer );
}
}
finally
{
instr.close();
}

// Compare
assertTrue( "same binary content", Arrays.equals( expectedBin, outstr.toByteArray() ) );
}

/**
* Tests that folders and unknown files have no content.
*/
public void testNoContent() throws Exception
{
// Try getting the content of a folder
FileObject folder = m_baseFolder.resolveFile( "dir1" );
try
{
folder.getContent();
fail();
}
catch( FileSystemException e )
{
final String message = REZ.getString( "get-folder-content.error", folder );
assertSameMessage( message, e );
}

// Try getting the content of an unknown file
FileObject unknownFile = m_baseFolder.resolveFile( "unknown-file" );
FileContent content = unknownFile.getContent();
try
{
content.getInputStream();
fail();
}
catch( FileSystemException e )
{
final String message = REZ.getString( "read-no-exist.error", unknownFile );
assertSameMessage( message, e );
}
try
{
content.getSize();
fail();
}
catch( FileSystemException e )
{
final String message = REZ.getString( "get-size-no-exist.error", unknownFile );
assertSameMessage( message, e );
}
}

/**
* Tests that content and file objects are usable after being closed.
*/
public void testReuse() throws Exception
{
// Get the test file
FileObject file = m_baseFolder.resolveFile( "file1.txt" );
assertEquals( FileType.FILE, file.getType() );

// Get the file content
FileContent content = file.getContent();
assertSameContent( m_charContent, content );

// Read the content again
content = file.getContent();
assertSameContent( m_charContent, content );

// Close the content + file
content.close();
file.close();

// Read the content again
content = file.getContent();
assertSameContent( m_charContent, content );
}

/**
* Info about a file.
*/
protected static final class FileInfo
{
String _baseName;
FileType _type;
Map _children = new HashMap();

public FileInfo( String name, FileType type )
{
_baseName = name;
_type = type;
}

/** Adds a child. */
public void addChild( FileInfo child )
{
_children.put( child._baseName, child );
}
}
}

+ 0
- 24
proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/AbstractReadOnlyFileSystemTestCase.java View File

@@ -1,24 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.aut.vfs.test;

import org.apache.aut.vfs.test.AbstractFileSystemTestCase;

/**
* File system tests which check that a read-only file system cannot be
* changed.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
*/
public abstract class AbstractReadOnlyFileSystemTestCase extends AbstractFileSystemTestCase
{
public AbstractReadOnlyFileSystemTestCase( String name )
{
super( name );
}
}

+ 0
- 259
proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/AbstractWritableFileSystemTestCase.java View File

@@ -1,259 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.aut.vfs.test;

import java.io.OutputStream;
import java.util.HashSet;
import java.util.Set;
import org.apache.aut.vfs.test.AbstractFileSystemTestCase;
import org.apache.aut.vfs.FileObject;
import org.apache.aut.vfs.FileType;
import org.apache.aut.vfs.FileSystemException;

/**
* File system test that check that a file system can be modified.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
*/
public abstract class AbstractWritableFileSystemTestCase
extends AbstractFileSystemTestCase
{
public AbstractWritableFileSystemTestCase( String name )
{
super( name );
}

/**
* Returns the URI for the area to do tests in.
*/
protected abstract FileObject getWriteFolder() throws Exception;

/**
* Sets up a scratch folder for the test to use.
*/
protected FileObject createScratchFolder() throws Exception
{
FileObject scratchFolder = getWriteFolder();

// Make sure the test folder is empty
scratchFolder.delete();
scratchFolder.create( FileType.FOLDER );

return scratchFolder;
}

/**
* Tests folder creation.
*/
public void testFolderCreate() throws Exception
{
FileObject scratchFolder = createScratchFolder();

// Create direct child of the test folder
FileObject folder = scratchFolder.resolveFile( "dir1" );
assertTrue( !folder.exists() );
folder.create( FileType.FOLDER );
assertTrue( folder.exists() );
assertEquals( 0, folder.getChildren().length );

// Create a descendant, where the intermediate folders don't exist
folder = scratchFolder.resolveFile( "dir2/dir1/dir1" );
assertTrue( !folder.exists() );
assertTrue( !folder.getParent().exists() );
assertTrue( !folder.getParent().getParent().exists() );
folder.create( FileType.FOLDER );
assertTrue( folder.exists() );
assertEquals( 0, folder.getChildren().length );
assertTrue( folder.getParent().exists() );
assertTrue( folder.getParent().getParent().exists() );

// Test creating a folder that already exists
folder.create( FileType.FOLDER );
}

/**
* Tests file creation
*/
public void testFileCreate() throws Exception
{
FileObject scratchFolder = createScratchFolder();

// Create direct child of the test folder
FileObject file = scratchFolder.resolveFile( "file1.txt" );
assertTrue( !file.exists() );
file.create( FileType.FILE );
assertTrue( file.exists() );
assertEquals( 0, file.getContent().getSize() );

// Create a descendant, where the intermediate folders don't exist
file = scratchFolder.resolveFile( "dir1/dir1/file1.txt" );
assertTrue( !file.exists() );
assertTrue( !file.getParent().exists() );
assertTrue( !file.getParent().getParent().exists() );
file.create( FileType.FILE );
assertTrue( file.exists() );
assertEquals( 0, file.getContent().getSize() );
assertTrue( file.getParent().exists() );
assertTrue( file.getParent().getParent().exists() );

// Test creating a file that already exists
file.create( FileType.FILE );
}

/**
* Tests file/folder creation with mismatched types.
*/
public void testFileCreateMismatched() throws Exception
{
FileObject scratchFolder = createScratchFolder();

// Create a test file and folder
FileObject file = scratchFolder.resolveFile( "dir1/file1.txt" );
file.create( FileType.FILE );
assertEquals( FileType.FILE, file.getType() );

FileObject folder = scratchFolder.resolveFile( "dir1/dir2" );
folder.create( FileType.FOLDER );
assertEquals( FileType.FOLDER, folder.getType() );

// Attempt to create a file that already exists as a folder
try
{
folder.create( FileType.FILE );
assertTrue( false );
}
catch( FileSystemException exc )
{
}

// Attempt to create a folder that already exists as a file
try
{
file.create( FileType.FOLDER );
assertTrue( false );
}
catch( FileSystemException exc )
{
}

// Attempt to create a folder as a child of a file
FileObject folder2 = file.resolveFile( "some-child" );
try
{
folder2.create( FileType.FOLDER );
assertTrue( false );
}
catch( FileSystemException exc )
{
}
}

/**
* Tests deletion
*/
public void testDelete() throws Exception
{
// Set-up the test structure
FileObject folder = createScratchFolder();
folder.resolveFile( "file1.txt" ).create( FileType.FILE );
folder.resolveFile( "emptydir" ).create( FileType.FOLDER );
folder.resolveFile( "dir1/file1.txt" ).create( FileType.FILE );
folder.resolveFile( "dir1/dir2/file2.txt" ).create( FileType.FILE );

// Delete a file
FileObject file = folder.resolveFile( "file1.txt" );
assertTrue( file.exists() );
file.delete();
assertTrue( !file.exists() );

// Delete an empty folder
file = folder.resolveFile( "emptydir" );
assertTrue( file.exists() );
file.delete();
assertTrue( !file.exists() );

// Recursive delete
file = folder.resolveFile( "dir1" );
FileObject file2 = file.resolveFile( "dir2/file2.txt" );
assertTrue( file.exists() );
assertTrue( file2.exists() );
file.delete();
assertTrue( !file.exists() );
assertTrue( !file2.exists() );

// Delete a file that does not exist
file = folder.resolveFile( "some-folder/some-file" );
assertTrue( !file.exists() );
file.delete();
assertTrue( !file.exists() );
}

/**
* Test that children are handled correctly by create and delete.
*/
public void testListChildren() throws Exception
{
FileObject folder = createScratchFolder();
HashSet names = new HashSet();

// Make sure the folder is empty
assertEquals( 0, folder.getChildren().length );

// Create a child folder
folder.resolveFile( "dir1" ).create( FileType.FOLDER );
names.add( "dir1" );
assertSameFileSet( names, folder.getChildren() );

// Create a child file
folder.resolveFile( "file1.html" ).create( FileType.FILE );
names.add( "file1.html" );
assertSameFileSet( names, folder.getChildren() );

// Create a descendent
folder.resolveFile( "dir2/file1.txt" ).create( FileType.FILE );
names.add( "dir2" );
assertSameFileSet( names, folder.getChildren() );

// Create a child file via an output stream
OutputStream outstr = folder.resolveFile( "file2.txt" ).getContent().getOutputStream();
outstr.close();
names.add( "file2.txt" );
assertSameFileSet( names, folder.getChildren() );

// Delete a child folder
folder.resolveFile( "dir1" ).delete();
names.remove( "dir1" );
assertSameFileSet( names, folder.getChildren() );

// Delete a child file
folder.resolveFile( "file1.html" ).delete();
names.remove( "file1.html" );
assertSameFileSet( names, folder.getChildren() );

// Recreate the folder
folder.delete();
folder.create( FileType.FOLDER );
assertEquals( 0, folder.getChildren().length );
}

/**
* Ensures the names of a set of files match an expected set.
*/
private void assertSameFileSet( Set names, FileObject[] files )
{
// Make sure the sets are the same length
assertEquals( names.size(), files.length );

// Check for unexpected names
for( int i = 0; i < files.length; i++ )
{
FileObject file = files[ i ];
assertTrue( names.contains( file.getName().getBaseName() ) );
}
}
}

+ 0
- 45
proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/FtpFileSystemTestCase.java View File

@@ -1,45 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.aut.vfs.test;

import org.apache.aut.vfs.provider.ftp.FtpFileSystemProvider;
import org.apache.aut.vfs.test.AbstractWritableFileSystemTestCase;
import org.apache.aut.vfs.FileObject;

/**
* Tests for FTP file systems.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
*/
public class FtpFileSystemTestCase
extends AbstractWritableFileSystemTestCase
{
public FtpFileSystemTestCase( String name )
{
super( name );
}

/**
* Returns the URI for the base folder.
*/
protected FileObject getBaseFolder() throws Exception
{
final String uri = System.getProperty( "test.ftp.uri" ) + "/read-tests";
m_manager.addProvider( "ftp", new FtpFileSystemProvider() );
return m_manager.resolveFile( uri );
}

/**
* Returns the URI for the area to do tests in.
*/
protected FileObject getWriteFolder() throws Exception
{
final String uri = System.getProperty( "test.ftp.uri" ) + "/write-tests";
return m_manager.resolveFile( uri );
}
}

+ 0
- 60
proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/LocalFileSystemTestCase.java View File

@@ -1,60 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.aut.vfs.test;

import java.io.File;
import org.apache.aut.vfs.test.AbstractWritableFileSystemTestCase;
import org.apache.aut.vfs.FileObject;

/**
* Tests for the local file system.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
*/
public class LocalFileSystemTestCase extends AbstractWritableFileSystemTestCase
{
public LocalFileSystemTestCase( String name )
{
super( name );
}

/**
* Returns the URI for the base folder.
*/
protected FileObject getBaseFolder() throws Exception
{
final File testDir = getTestResource( "basedir" );
return m_manager.convert( testDir );
}

/**
* Returns the URI for the area to do tests in.
*/
protected FileObject getWriteFolder() throws Exception
{
final File testDir = getTestResource( "write-tests" );
return m_manager.convert( testDir );
}

/**
* Tests resolution of an absolute file name.
*/
public void testAbsoluteFileName() throws Exception
{
// Locate file by absolute file name
String fileName = new File( "testdir" ).getAbsolutePath();
FileObject absFile = m_manager.resolveFile( fileName );

// Locate file by URI
String uri = "file://" + fileName.replace( File.separatorChar, '/' );
FileObject uriFile = m_manager.resolveFile( uri );

assertSame( "file object", absFile, uriFile );
}

}

+ 0
- 43
proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/NestedZipFileSystemTestCase.java View File

@@ -1,43 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.aut.vfs.test;

import org.apache.aut.vfs.provider.zip.ZipFileSystemProvider;
import org.apache.aut.vfs.test.AbstractReadOnlyFileSystemTestCase;
import org.apache.aut.vfs.FileObject;

/**
* Tests for the Zip file system, using a zip file nested inside another zip file.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
*/
public class NestedZipFileSystemTestCase
extends AbstractReadOnlyFileSystemTestCase
{
public NestedZipFileSystemTestCase( String name )
{
super( name );
}

/**
* Returns the URI for the base folder.
*/
protected FileObject getBaseFolder() throws Exception
{
m_manager.addProvider( "zip", new ZipFileSystemProvider() );

// Locate the base Zip file
final String zipFilePath = getTestResource( "nested.zip" ).getAbsolutePath();
String uri = "zip:" + zipFilePath + "!/test.zip";
final FileObject zipFile = m_manager.resolveFile( uri );

// Now build the nested file system
final FileObject nestedFS = m_manager.createFileSystem( "zip", zipFile );
return nestedFS.resolveFile( "/basedir" );
}
}

+ 0
- 44
proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/SmbFileSystemTestCase.java View File

@@ -1,44 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.aut.vfs.test;

import org.apache.aut.vfs.provider.smb.SmbFileSystemProvider;
import org.apache.aut.vfs.test.AbstractWritableFileSystemTestCase;
import org.apache.aut.vfs.FileObject;

/**
* Tests for the SMB file system.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
*/
public class SmbFileSystemTestCase extends AbstractWritableFileSystemTestCase
{
public SmbFileSystemTestCase( String name )
{
super( name );
}

/**
* Returns the URI for the base folder.
*/
protected FileObject getBaseFolder() throws Exception
{
final String uri = System.getProperty( "test.smb.uri" ) + "/read-tests";
m_manager.addProvider( "smb", new SmbFileSystemProvider() );
return m_manager.resolveFile( uri );
}

/**
* Returns the URI for the area to do tests in.
*/
protected FileObject getWriteFolder() throws Exception
{
final String uri = System.getProperty( "test.smb.uri" ) + "/write-tests";
return m_manager.resolveFile( uri );
}
}

+ 0
- 37
proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/ZipFileSystemTestCase.java View File

@@ -1,37 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.aut.vfs.test;

import java.io.File;
import org.apache.aut.vfs.provider.zip.ZipFileSystemProvider;
import org.apache.aut.vfs.test.AbstractReadOnlyFileSystemTestCase;
import org.apache.aut.vfs.FileObject;

/**
* Tests for the Zip file system.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
*/
public class ZipFileSystemTestCase extends AbstractReadOnlyFileSystemTestCase
{
public ZipFileSystemTestCase( String name )
{
super( name );
}

/**
* Returns the URI for the base folder.
*/
protected FileObject getBaseFolder() throws Exception
{
File zipFile = getTestResource( "test.zip" );
String uri = "zip:" + zipFile.getAbsolutePath() + "!basedir";
m_manager.addProvider( "zip", new ZipFileSystemProvider() );
return m_manager.resolveFile( uri );
}
}

+ 0
- 0
proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/basedir/dir1/file1.txt View File


+ 0
- 0
proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/basedir/dir1/file2.txt View File


+ 0
- 0
proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/basedir/dir1/file3.txt View File


+ 0
- 0
proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/basedir/empty.txt View File


+ 0
- 2
proposal/myrmidon/src/testcases/org/apache/aut/vfs/test/basedir/file1.txt View File

@@ -1,2 +0,0 @@
This is a test file.
With 2 lines in it.

+ 0
- 217
proposal/myrmidon/src/testcases/org/apache/myrmidon/AbstractMyrmidonTest.java View File

@@ -1,217 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon;

import java.io.File;
import java.io.IOException;
import junit.framework.TestCase;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.framework.ExceptionUtil;
import org.apache.avalon.framework.logger.Logger;
import org.apache.myrmidon.frontends.BasicLogger;

/**
* A base class for Myrmidon tests. Provides utility methods for locating
* test resources.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
*/
public abstract class AbstractMyrmidonTest
extends TestCase
{
private final File m_testBaseDir;
private final File m_baseDir;
private Logger m_logger;

protected static final Resources getResourcesForTested( final Class clazz )
{
final Package pkg = clazz.getPackage();

String baseName;
if( null == pkg )
{
final String name = clazz.getName();
if( -1 == name.lastIndexOf( "." ) )
{
baseName = "";
}
else
{
baseName = name.substring( 0, name.lastIndexOf( "." ) );
}
}
else
{
baseName = pkg.getName();
}

if( baseName.endsWith( ".test" ) )
{
baseName = baseName.substring( 0, baseName.length() - 5 );
}

return ResourceManager.getBaseResources( baseName + ".Resources", AbstractMyrmidonTest.class.getClassLoader() );
}

public AbstractMyrmidonTest( String name )
{
super( name );
final String baseDirProp = System.getProperty( "test.basedir" );
m_baseDir = getCanonicalFile( new File( baseDirProp ) );
String packagePath = getClass().getName();
int idx = packagePath.lastIndexOf( '.' );
packagePath = packagePath.substring( 0, idx );
packagePath = packagePath.replace( '.', File.separatorChar );
m_testBaseDir = getCanonicalFile( new File( m_baseDir, packagePath ) );
}

/**
* Locates a test resource, and asserts that the resource exists
*
* @param name path of the resource, relative to this test's base directory.
*/
protected File getTestResource( final String name )
{
return getTestResource( name, true );
}

/**
* Locates a test resource.
*
* @param name path of the resource, relative to this test's base directory.
*/
protected File getTestResource( final String name, final boolean mustExist )
{
File file = new File( m_testBaseDir, name );
file = getCanonicalFile( file );
if( mustExist )
{
assertTrue( "Test file \"" + file + "\" does not exist.", file.exists() );
}
else
{
assertTrue( "Test file \"" + file + "\" should not exist.", !file.exists() );
}

return file;
}

/**
* Locates the base directory for this test.
*/
protected File getTestDirectory()
{
return m_testBaseDir;
}

/**
* Locates a test directory, creating it if it does not exist.
*
* @param name path of the directory, relative to this test's base directory.
*/
protected File getTestDirectory( final String name )
{
File file = new File( m_testBaseDir, name );
file = getCanonicalFile( file );
assertTrue( "Test directory \"" + file + "\" does not exist or is not a directory.",
file.isDirectory() || file.mkdirs() );
return file;
}

/**
* Returns the directory containing a Myrmidon install.
*/
protected File getHomeDirectory()
{
final File file = new File( m_baseDir, "dist" );
return getCanonicalFile( file );
}

/**
* Makes a file canonical
*/
private File getCanonicalFile( final File file )
{
try
{
return file.getCanonicalFile();
}
catch( IOException e )
{
return file.getAbsoluteFile();
}
}

/**
* Creates a logger.
*/
protected Logger getLogger()
{
if( m_logger == null )
{
m_logger = new BasicLogger( "[test]", BasicLogger.LEVEL_WARN );
}
return m_logger;
}

/**
* Asserts that an exception chain contains the expected messages.
*
* @param messages The messages, in order. A null entry in this array
* indicates that the message should be ignored.
*/
protected void assertSameMessage( final String[] messages, final Throwable throwable )
{
//System.out.println( "exception:" );
//for( Throwable t = throwable; t != null; t = ExceptionUtil.getCause( t, true ) )
//{
// System.out.println( " " + t.getMessage() );
//}

Throwable current = throwable;
for( int i = 0; i < messages.length; i++ )
{
String message = messages[ i ];
assertNotNull( current );
if( message != null )
{
assertEquals( message, current.getMessage() );
}

// Get the next exception in the chain
current = ExceptionUtil.getCause( current, true );
}
}

/**
* Asserts that an exception contains the expected message.
*/
protected void assertSameMessage( final String message, final Throwable throwable )
{
assertSameMessage( new String[]{message}, throwable );
}

/**
* Compares 2 objects for equality, nulls are equal. Used by the test
* classes' equals() methods.
*/
public static boolean equals( final Object o1, final Object o2 )
{
if( o1 == null && o2 == null )
{
return true;
}
if( o1 == null || o2 == null )
{
return false;
}
return o1.equals( o2 );
}

}

+ 0
- 144
proposal/myrmidon/src/testcases/org/apache/myrmidon/AbstractProjectTest.java View File

@@ -1,144 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon;

import java.io.File;
import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.myrmidon.components.embeddor.DefaultEmbeddor;
import org.apache.myrmidon.interfaces.embeddor.Embeddor;
import org.apache.myrmidon.interfaces.model.Project;
import org.apache.myrmidon.interfaces.workspace.Workspace;
import org.apache.myrmidon.listeners.ProjectListener;

/**
* A base class for test cases which need to execute projects.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class AbstractProjectTest
extends AbstractMyrmidonTest
{
private DefaultEmbeddor m_embeddor;

public AbstractProjectTest( final String name )
{
super( name );
}

/**
* Tear-down the test.
*/
protected void tearDown() throws Exception
{
if( m_embeddor != null )
{
m_embeddor.dispose();
m_embeddor = null;
}
}

/**
* Returns an embeddor which can be used to build and execute projects.
*/
protected Embeddor getEmbeddor() throws Exception
{
if( m_embeddor == null )
{
// Need to set the context classloader - The default embeddor uses it
Thread.currentThread().setContextClassLoader( getClass().getClassLoader() );

final Logger logger = getLogger();
m_embeddor = new DefaultEmbeddor();
m_embeddor.enableLogging( logger );

final Parameters params = new Parameters();
final File instDir = getHomeDirectory();
params.setParameter( "myrmidon.home", instDir.getAbsolutePath() );
m_embeddor.parameterize( params );
m_embeddor.initialize();
m_embeddor.start();
}

return m_embeddor;
}

/**
* Executes a target in a project, and asserts that it fails with the
* given error message.
*/
protected void executeTargetExpectError( final File projectFile,
final String targetName,
final String message )
{
executeTargetExpectError( projectFile, targetName, new String[]{message} );
}

/**
* Executes a target in a project, and asserts that it fails with the
* given error messages.
*/
protected void executeTargetExpectError( final File projectFile,
final String targetName,
final String[] messages )
{
try
{
executeTarget( projectFile, targetName, null );
fail( "target execution did not fail" );
}
catch( Exception e )
{
assertSameMessage( messages, e );
}
}

/**
* Executes a target in a project, and asserts that it does not fail.
*/
protected void executeTarget( final File projectFile, final String targetName )
throws Exception
{
executeTarget( projectFile, targetName, null );
}

/**
* Executes a target in a project, and asserts that it does not fail.
*/
protected void executeTarget( final File projectFile,
final String targetName,
final ProjectListener listener )
throws Exception
{
// Create the project and workspace
final Embeddor embeddor = getEmbeddor();
final Project project = embeddor.createProject( projectFile.getAbsolutePath(), null, null );
final Workspace workspace = embeddor.createWorkspace( new Parameters() );

// Add a listener to make sure all is good
final TrackingProjectListener tracker = new TrackingProjectListener();
workspace.addProjectListener( tracker );

// Add supplied listener
if( listener != null )
{
workspace.addProjectListener( listener );
}

// Now execute the target
workspace.executeProject( project, targetName );

// Make sure all expected events were delivered
tracker.assertComplete();
if( listener instanceof TrackingProjectListener )
{
( (TrackingProjectListener)listener ).assertComplete();
}
}
}

+ 0
- 293
proposal/myrmidon/src/testcases/org/apache/myrmidon/DependencyMetricsTest.java View File

@@ -1,293 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import jdepend.framework.JDepend;
import jdepend.framework.JavaPackage;
import junit.framework.TestCase;

/**
* An abstract Unit test that can be used to test Dependency metrics
* fall in acceptable limits.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class DependencyMetricsTest
extends TestCase
{
private JDepend m_jDepend;

public DependencyMetricsTest( final String name )
{
super( name );
}

/**
* Sets up the test fixture.
*
* Called before every test case method.
*/
protected void setUp()
{
m_jDepend = new JDepend();

try
{

m_jDepend.addDirectory( "src/java" );
//m_jDepend.addDirectory( "src/main" );
}
catch( final IOException ioe )
{
fail( ioe.getMessage() );
}

m_jDepend.analyze();
}

/**
* Tears down the test fixture.
*
* Called after every test case method.
*/
protected void tearDown()
{
m_jDepend = null;
}

/**
* Utility method to retrieve JDpenden instance that contains statistics.
*/
protected final JDepend getJDepend()
{
return m_jDepend;
}

/**
* Make sure that the launcher classes in org.apache.myrmidon.launcher.*
* are completely decoupled from the rest of the system.
*/
public void testLauncherDecoupled()
{
final JDepend jDepend = getJDepend();
final String name = "org.apache.myrmidon.launcher";
final JavaPackage javaPackage = jDepend.getPackage( name );

final Collection efferentSet = javaPackage.getEfferents();
final Iterator afferents = efferentSet.iterator();
while( afferents.hasNext() )
{
final JavaPackage efferent = (JavaPackage)afferents.next();
final String efferentName = efferent.getName();
if( ! isSubPackage( name, efferentName ) )
{
fail( "The launcher package " + name + " depends on external classes " +
"contained in " + efferentName + ". No classes besides " +
"those in the launcher hierarchy should be referenced" );
}
}
}

/**
* Make sure that the implementations of the myrmidon kernel components
* (ie org.apache.myrmidon.component.X.*) are not referenced by anyone
* except by other objects in the same package or child packages.
*/
public void testNoComponentImplSharing()
{
final JDepend jDepend = getJDepend();
final Collection packageSet = jDepend.getPackages();

final Iterator packages = packageSet.iterator();
while( packages.hasNext() )
{
final JavaPackage javaPackage = (JavaPackage)packages.next();
final String name = javaPackage.getName();
final String componentPackage = "org.apache.myrmidon.components.";
if( !name.startsWith( componentPackage ) )
{
continue;
}

// Extract the component package
final int start = componentPackage.length() + 1;
final int end = name.indexOf( '.', start );
final String component;
if( end > -1 )
{
component = name.substring( end );
}
else
{
component = name;
}

// Make sure that all the afferent packages of this package (i.e.
// those that refer to this package) are sub-packages of the
// component package
final Collection afferentSet = javaPackage.getAfferents();
final Iterator afferents = afferentSet.iterator();
while( afferents.hasNext() )
{
final JavaPackage efferent = (JavaPackage)afferents.next();
final String efferentName = efferent.getName();
if( !isSubPackage( component, efferentName ) )
{
fail( "The package " + name + " is referred to by classes " +
"contained in " + efferentName + ". No classes besides " +
"those part of the particular implementation of kernel " +
"component should reference the implementations" );
}
}
}
}

/**
* Make sure that aut does not depend on any other ant classes
* and thus can be cleanly decoupled.
*/
public void testAutDecoupled()
{
final String packageName = "org.apache.aut";
final String[] badEfferents = new String[]
{
"org.apache.myrmidon", "org.apache.antlib", "org.apache.tools.ant"
};
doTestDecoupled( packageName, badEfferents );
}

/**
* Make sure that myrmidon package does not have any
* unwanted dependencies.
*/
/*
public void testMyrmidonDecoupled()
{
final String packageName = "org.apache.myrmidon";
final String[] badEfferents = new String[]
{
"org.apache.antlib", "org.apache.tools.ant"
};
doTestDecoupled( packageName, badEfferents );
}
*/

/**
* Make sure that antlib package does not have any
* unwanted dependencies.
*/
/*
public void testAntlibDecoupled()
{
final String packageName = "org.apache.antlib";
final String[] badEfferents = new String[]
{
"org.apache.tools.ant"
};
doTestDecoupled( packageName, badEfferents );
}
*/
/**
* Make sure there are no circular dependencies between packages because
* circular dependencies are evil!!!
*/
public void testNoCircularity()
{
final JDepend jDepend = getJDepend();
final Collection packageSet = jDepend.getPackages();
final Iterator packages = packageSet.iterator();
while( packages.hasNext() )
{
final JavaPackage javaPackage = (JavaPackage)packages.next();
if( javaPackage.containsCycle() )
{
final ArrayList cycle = new ArrayList();
javaPackage.collectCycle( cycle );

final ArrayList names = getPackageNames( cycle );
fail( "The package " + javaPackage.getName() + " contains a cycle " +
"with a path " + names );
}
}
}

private ArrayList getPackageNames( final ArrayList cycle )
{
final ArrayList names = new ArrayList();

final int size = cycle.size();
for( int i = 0; i < size; i++ )
{
final JavaPackage javaPackage = (JavaPackage)cycle.get( i );
names.add( javaPackage.getName() );
}

return names;
}

/**
* Make sure that the specified package does not depend on any
* of the specified package hierarchies.
*/
private void doTestDecoupled( final String packageName,
final String[] invalidEfferents )
{
final JDepend jDepend = getJDepend();
final Collection packageSet = jDepend.getPackages();

final Iterator packages = packageSet.iterator();
while( packages.hasNext() )
{
final JavaPackage javaPackage = (JavaPackage)packages.next();
final String name = javaPackage.getName();
if( !isSubPackage( packageName, name ) )
{
continue;
}

final Collection efferentSet = javaPackage.getEfferents();
final Iterator efferents = efferentSet.iterator();
while( efferents.hasNext() )
{
final JavaPackage efferent = (JavaPackage)efferents.next();
final String efferentName = efferent.getName();
for( int i = 0; i < invalidEfferents.length; i++ )
{
final String other = invalidEfferents[ i ];
if( isSubPackage( other, efferentName ) )
{
fail( "The package " + name + " has an unwanted dependency " +
"on classes contained in " + efferentName );
}
}
}
}
}

/**
* Determines if a package is a sub-package of another package.
*
* @return true if <code>subpackage</code> is either the same package as
* <code>basePackage</code>, or a sub-package of it.
*/
private boolean isSubPackage( final String basePackage,
final String subpackage )
{
if( ! subpackage.startsWith( basePackage ) )
{
return false;
}
return ( subpackage.length() == basePackage.length()
|| subpackage.charAt( basePackage.length() ) == '.' );
}
}

+ 0
- 59
proposal/myrmidon/src/testcases/org/apache/myrmidon/LogMessageTracker.java View File

@@ -1,59 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon;

import java.util.ArrayList;
import java.util.List;
import org.apache.myrmidon.listeners.LogEvent;

/**
* Asserts that log messages are delivered in the correct order.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class LogMessageTracker
extends TrackingProjectListener
{
private List m_targets = new ArrayList();
private List m_messages = new ArrayList();

/**
* Handles a log message.
*/
public void log( final LogEvent event )
{
super.log( event );

// Pop the next expected message off the list, and make sure it
// matches the message in the event
assertTrue( "Unexpected log message", m_targets.size() > 0 && m_messages.size() > 0 );
assertEquals( "Unexpected log message", m_targets.remove( 0 ), event.getTargetName() );
assertEquals( "Unexpected log message", m_messages.remove( 0 ), event.getMessage() );
}

/**
* Asserts that all the log messages were delivered.
*/
public void assertComplete()
{
super.assertComplete();

// Make sure that all log messages were delivered
assertTrue( "Log message not delivered", m_targets.size() == 0 && m_messages.size() == 0 );
}

/**
* Adds an expected log message.
*/
public void addExpectedMessage( String target, String message )
{
m_targets.add( target );
m_messages.add( message );
}
}

+ 0
- 121
proposal/myrmidon/src/testcases/org/apache/myrmidon/TrackingProjectListener.java View File

@@ -1,121 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon;

import junit.framework.Assert;
import org.apache.myrmidon.listeners.LogEvent;
import org.apache.myrmidon.listeners.ProjectEvent;
import org.apache.myrmidon.listeners.ProjectListener;
import org.apache.myrmidon.listeners.TargetEvent;
import org.apache.myrmidon.listeners.TaskEvent;

/**
* A project listener that asserts that it receives a particular sequence of
* events.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class TrackingProjectListener
extends Assert
implements ProjectListener
{
private String m_rootProject;
private String m_currentProject;
private String m_currentTarget;
private String m_currentTask;

/**
* Notify the listener that a project is about to start.
*/
public void projectStarted( final ProjectEvent event )
{
assertNull( "Project already started", m_rootProject );
m_rootProject = event.getProjectName();
}

/**
* Notify the listener that a project has finished.
*/
public void projectFinished( final ProjectEvent event )
{
assertEquals( "Mismatched project name", m_rootProject, event.getProjectName() );
m_rootProject = null;

assertNull( "Target not started", m_currentTarget );
}

/**
* Notify the listener that a target is about to start.
*/
public void targetStarted( final TargetEvent event )
{
assertNotNull( "Project not started", m_rootProject );
assertNull( "Target already started", m_currentTarget );
m_currentProject = event.getProjectName();
m_currentTarget = event.getTargetName();
}

/**
* Notify the listener that a target has finished.
*/
public void targetFinished( final TargetEvent event )
{
assertEquals( "Mismatched project name", m_currentProject, event.getProjectName() );
assertEquals( "Mismatched target name", m_currentTarget, event.getTargetName() );
m_currentProject = null;
m_currentTarget = null;

assertNull( "Task not finished", m_currentTask );
}

/**
* Notify the listener that a task is about to start.
*/
public void taskStarted( final TaskEvent event )
{
assertEquals( "Mismatched project name", m_currentProject, event.getProjectName() );
assertEquals( "Mismatched target name", m_currentTarget, event.getTargetName() );

assertNull( "Task already started", m_currentTask );
m_currentTask = event.getTaskName();
}

/**
* Notify the listener that a task has finished.
*/
public void taskFinished( final TaskEvent event )
{
assertEquals( "Mismatched project name", m_currentProject, event.getProjectName() );
assertEquals( "Mismatched target name", m_currentTarget, event.getTargetName() );
assertEquals( "Mismatched task name", m_currentTask, event.getTaskName() );
m_currentTask = null;
}

/**
* Notify listener of log message event.
*/
public void log( final LogEvent event )
{
assertEquals( "Mismatched project name", m_currentProject, event.getProjectName() );
assertEquals( "Mismatched target name", m_currentTarget, event.getTargetName() );
assertEquals( "Mismatched task name", m_currentTask, event.getTaskName() );
assertNull( "Unexpected build error", event.getThrowable() );
}

/**
* Asserts that the listener has finished.
*/
public void assertComplete()
{
assertNull( "Task not finished", m_currentTask );
assertNull( "Target not finished", m_currentTarget );
assertNull( "Target not finished", m_currentProject );
assertNull( "Project not finished", m_rootProject );
}
}

+ 0
- 207
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/AbstractComponentTest.java View File

@@ -1,207 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.aut.converter.Converter;
import org.apache.avalon.framework.logger.LogEnabled;
import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.service.DefaultServiceManager;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
import org.apache.myrmidon.AbstractMyrmidonTest;
import org.apache.myrmidon.components.classloader.DefaultClassLoaderManager;
import org.apache.myrmidon.components.configurer.DefaultConfigurer;
import org.apache.myrmidon.components.converter.DefaultConverterRegistry;
import org.apache.myrmidon.components.converter.DefaultMasterConverter;
import org.apache.myrmidon.components.deployer.DefaultDeployer;
import org.apache.myrmidon.components.executor.DefaultExecutor;
import org.apache.myrmidon.components.extensions.DefaultExtensionManager;
import org.apache.myrmidon.components.property.DefaultPropertyResolver;
import org.apache.myrmidon.components.role.DefaultRoleManager;
import org.apache.myrmidon.components.type.DefaultTypeManager;
import org.apache.myrmidon.framework.DataType;
import org.apache.myrmidon.interfaces.classloader.ClassLoaderManager;
import org.apache.myrmidon.interfaces.configurer.Configurer;
import org.apache.myrmidon.interfaces.converter.ConverterRegistry;
import org.apache.myrmidon.interfaces.deployer.Deployer;
import org.apache.myrmidon.interfaces.executor.Executor;
import org.apache.myrmidon.interfaces.extensions.ExtensionManager;
import org.apache.myrmidon.interfaces.property.PropertyResolver;
import org.apache.myrmidon.interfaces.role.RoleInfo;
import org.apache.myrmidon.interfaces.role.RoleManager;
import org.apache.myrmidon.interfaces.service.ServiceFactory;
import org.apache.myrmidon.interfaces.type.DefaultTypeFactory;
import org.apache.myrmidon.interfaces.type.TypeManager;

/**
* A base class for tests for the default components.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
*/
public abstract class AbstractComponentTest
extends AbstractMyrmidonTest
{
private DefaultServiceManager m_serviceManager;

public static final String DATA_TYPE_ROLE = "data-type";
public static final String CONVERTER_ROLE = "converter";
public static final String SERVICE_FACTORY_ROLE = "service-factory";

public AbstractComponentTest( final String name )
{
super( name );
}

/**
* Returns the component manager containing the components to test.
*/
protected final ServiceManager getServiceManager() throws Exception
{
if( m_serviceManager == null )
{
Logger logger = getLogger();

// Create the components
m_serviceManager = new DefaultServiceManager();
List components = new ArrayList();

Object component = createComponent( Converter.ROLE, DefaultMasterConverter.class );
m_serviceManager.put( Converter.ROLE, component );
components.add( component );

component = createComponent( ConverterRegistry.ROLE, DefaultConverterRegistry.class );
m_serviceManager.put( ConverterRegistry.ROLE, component );
components.add( component );

component = createComponent( TypeManager.ROLE, DefaultTypeManager.class );
m_serviceManager.put( TypeManager.ROLE, component );
components.add( component );

component = createComponent( Configurer.ROLE, DefaultConfigurer.class );
m_serviceManager.put( Configurer.ROLE, component );
components.add( component );

component = createComponent( Deployer.ROLE, DefaultDeployer.class );
m_serviceManager.put( Deployer.ROLE, component );
components.add( component );

component = createComponent( Executor.ROLE, DefaultExecutor.class );
m_serviceManager.put( Executor.ROLE, component );
components.add( component );

final DefaultClassLoaderManager classLoaderMgr = new DefaultClassLoaderManager();
classLoaderMgr.setBaseClassLoader( getClass().getClassLoader() );
m_serviceManager.put( ClassLoaderManager.ROLE, classLoaderMgr );
components.add( classLoaderMgr );

component = createComponent( ExtensionManager.ROLE, DefaultExtensionManager.class );
m_serviceManager.put( ExtensionManager.ROLE, component );
components.add( component );

component = createComponent( RoleManager.ROLE, DefaultRoleManager.class );
m_serviceManager.put( RoleManager.ROLE, component );
components.add( component );

component = createComponent( PropertyResolver.ROLE, DefaultPropertyResolver.class );
m_serviceManager.put( PropertyResolver.ROLE, component );
components.add( component );

// Log enable the components
for( Iterator iterator = components.iterator(); iterator.hasNext(); )
{
Object obj = iterator.next();
if( obj instanceof LogEnabled )
{
final LogEnabled logEnabled = (LogEnabled)obj;
logEnabled.enableLogging( logger );
}
}

// Compose the components
for( Iterator iterator = components.iterator(); iterator.hasNext(); )
{
Object obj = iterator.next();
if( obj instanceof Serviceable )
{
final Serviceable serviceable = (Serviceable)obj;
serviceable.service( m_serviceManager );
}
}

// Register some standard roles
// Add some core roles
final RoleManager roleManager = (RoleManager)getServiceManager().lookup( RoleManager.ROLE );
roleManager.addRole( new RoleInfo( DataType.ROLE, DATA_TYPE_ROLE, DataType.class ) );
roleManager.addRole( new RoleInfo( Converter.ROLE, CONVERTER_ROLE, Converter.class ) );
roleManager.addRole( new RoleInfo( ServiceFactory.ROLE, SERVICE_FACTORY_ROLE, ServiceFactory.class ) );
}

return m_serviceManager;
}

/**
* Creates an instance of a component. Sub-classes can override this
* method to add a particular implementation to the set of test components.
*/
protected Object createComponent( final String role, final Class defaultImpl )
throws Exception
{
return defaultImpl.newInstance();
}

/**
* Returns the type manager.
*/
protected TypeManager getTypeManager()
throws Exception
{
return (TypeManager)getServiceManager().lookup( TypeManager.ROLE );
}

/**
* Utility method to register a role.
*/
protected void registerRole( final RoleInfo roleInfo )
throws Exception
{
RoleManager roleMgr = (RoleManager)getServiceManager().lookup( RoleManager.ROLE );
roleMgr.addRole( roleInfo );
}

/**
* Utility method to register a type.
*/
protected void registerType( final String roleName,
final String typeName,
final Class type )
throws Exception
{
final ClassLoader loader = getClass().getClassLoader();
final DefaultTypeFactory factory = new DefaultTypeFactory( loader );
factory.addNameClassMapping( typeName, type.getName() );
getTypeManager().registerType( roleName, typeName, factory );
}

/**
* Utility method to register a Converter.
*/
protected void registerConverter( final Class converterClass,
final Class sourceClass,
final Class destClass )
throws Exception
{
ConverterRegistry converterRegistry = (ConverterRegistry)getServiceManager().lookup( ConverterRegistry.ROLE );
converterRegistry.registerConverter( converterClass.getName(), sourceClass.getName(), destClass.getName() );
DefaultTypeFactory factory = new DefaultTypeFactory( getClass().getClassLoader() );
factory.addNameClassMapping( converterClass.getName(), converterClass.getName() );
getTypeManager().registerType( Converter.ROLE, converterClass.getName(), factory );
}
}

+ 0
- 302
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/DefaultProjectBuilderTestCase.java View File

@@ -1,302 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.builder.test;

import java.io.File;
import java.util.Arrays;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.avalon.excalibur.io.FileUtil;
import org.apache.myrmidon.AbstractMyrmidonTest;
import org.apache.myrmidon.components.builder.DefaultProjectBuilder;
import org.apache.myrmidon.components.builder.DefaultProject;
import org.apache.myrmidon.interfaces.builder.ProjectException;
import org.apache.myrmidon.interfaces.model.Project;

/**
* Test cases for {@link org.apache.myrmidon.components.builder.DefaultProjectBuilder}.
*
* @author <a href="mailto:darrell@apache.org">Darrell DeBoer</a>
* @version $Revision$ $Date$
*/
public class DefaultProjectBuilderTestCase
extends AbstractMyrmidonTest
{
private final static Resources REZ = getResourcesForTested( DefaultProjectBuilderTestCase.class );

private DefaultProjectBuilder m_builder;

public DefaultProjectBuilderTestCase( String name )
{
super( name );
}

protected void setUp() throws Exception
{
super.setUp();
m_builder = new DefaultProjectBuilder();
m_builder.enableLogging( getLogger() );
}

/**
* Creates a project, with default values set.
*/
private DefaultProject createProject( final File projFile )
{
final DefaultProject project = new DefaultProject();
project.setProjectName( FileUtil.removeExtension( projFile.getName() ) );
project.setBaseDirectory( getTestDirectory( "." ) );
project.setDefaultTargetName( "main" );
return project;
}

/**
* Tests bad project file name.
*/
public void testProjectFileName() throws Exception
{
// Test with a file that does not exist
File projFile = getTestResource( "unknown.ant", false );

try
{
m_builder.build( projFile.getAbsolutePath() );
fail();
}
catch( ProjectException e )
{
final String[] messages =
{
REZ.getString( "ant.project-build.error", projFile.getAbsolutePath() ),
REZ.getString( "ant.no-project-file.error" )
};
assertSameMessage( messages, e );
}

// Test with a directory
projFile = getTestDirectory( "some-dir" );

try
{
m_builder.build( projFile.getAbsolutePath() );
fail();
}
catch( ProjectException e )
{
final String[] messages =
{
REZ.getString( "ant.project-build.error", projFile.getAbsolutePath() ),
REZ.getString( "ant.no-project-file.error" )
};
assertSameMessage( messages, e );
}
}

/**
* Tests error reporting when the project file contains badly formed XML.
*/
public void testBadlyFormedFile() throws Exception
{
final File projFile = getTestResource( "bad-xml.ant" );
try
{
m_builder.build( projFile.getAbsolutePath() );
fail();
}
catch( ProjectException e )
{
final String[] messages =
{
REZ.getString( "ant.project-build.error", projFile.getAbsolutePath() ),
REZ.getString( "ant.project-parse.error" )
};
assertSameMessage( messages, e );
}
}

/**
* Tests building a project with default values for project name, base dir
* and default target.
*/
public void testDefaults() throws Exception
{
// Build project
final File projFile = getTestResource( "defaults.ant" );
Project project = m_builder.build( projFile.getAbsolutePath() );

// Compare against expected project
DefaultProject expected = createProject( projFile );
assertSameProject( expected, project );
}

/**
* Tests setting the project name.
*/
public void testProjectName() throws Exception
{
// Build project
final File projFile = getTestResource( "set-project-name.ant" );
Project project = m_builder.build( projFile.getAbsolutePath() );

// Compare against expected project
DefaultProject expected = createProject( projFile );
expected.setProjectName( "some-project" );
assertSameProject( expected, project );
}

/**
* Tests setting the base directory.
*/
public void testBaseDirectory() throws Exception
{
// Build project
final File projFile = getTestResource( "set-base-dir.ant" );
Project project = m_builder.build( projFile.getAbsolutePath() );

// Compare against expected project
DefaultProject expected = createProject( projFile );
final File baseDir = getTestDirectory( "other-base-dir" );
expected.setBaseDirectory( baseDir );
assertSameProject( expected, project );
}

/**
* Tests setting the default target name.
*/
public void testDefaultTarget() throws Exception
{
// Build project
final File projFile = getTestResource( "set-default-target.ant" );
Project project = m_builder.build( projFile.getAbsolutePath() );

// Compare against expected project
DefaultProject expected = createProject( projFile );
expected.setDefaultTargetName( "some-target" );
assertSameProject( expected, project );
}

/**
* Tests missing, invalid and incompatible project version.
*/
public void testProjectVersion() throws Exception
{
// No version
File projFile = getTestResource( "no-version.ant" );
try
{
m_builder.build( projFile.getAbsolutePath() );
fail();
}
catch( ProjectException e )
{
final String[] messages =
{
REZ.getString( "ant.project-build.error", projFile.getAbsolutePath() ),
REZ.getString( "ant.version-missing.error" )
};
assertSameMessage( messages, e );
}

// Badly formed version
projFile = getTestResource( "bad-version.ant" );
try
{
m_builder.build( projFile.getAbsolutePath() );
fail();
}
catch( ProjectException e )
{
final String[] messages =
{
REZ.getString( "ant.project-build.error", projFile.getAbsolutePath() ),
REZ.getString( "ant.malformed.version", "ant2" )
};
assertSameMessage( messages, e );
}

// Incompatible version
projFile = getTestResource( "mismatched-version.ant" );
try
{
m_builder.build( projFile.getAbsolutePath() );
fail();
}
catch( ProjectException e )
{
final String[] messages =
{
REZ.getString( "ant.project-build.error", projFile.getAbsolutePath() ),
REZ.getString( "ant.bad-version.error", "2.0.0", "1.0.2" )
};
assertSameMessage( messages, e );
}
}

/**
* Asserts that 2 projects are identical.
*/
protected void assertSameProject( final Project expected,
final Project project )
{
assertEquals( expected.getProjectName(), project.getProjectName() );
assertEquals( expected.getBaseDirectory(), project.getBaseDirectory() );
assertEquals( expected.getDefaultTargetName(), project.getDefaultTargetName() );

// TODO - make sure each of the projects are the same
assertTrue( Arrays.equals( expected.getProjectNames(), project.getProjectNames() ) );

// TODO - make sure the implicit targets are the same

// TODO - make sure each of the targets are the same
assertTrue( Arrays.equals( expected.getTargetNames(), project.getTargetNames() ) );

// TODO - implement TypeLib.equals(), or use a comparator
assertTrue( Arrays.equals( expected.getTypeLibs(), project.getTypeLibs() ) );
}

/**
* Tests validation of project and target names.
*/
public void testNameValidation() throws Exception
{
// Check bad project name
final File badProjectFile = getTestResource( "bad-project-name.ant" );
try
{
m_builder.build( badProjectFile.getAbsolutePath() );
fail();
}
catch( Exception e )
{
final String[] messages =
{
REZ.getString( "ant.project-build.error", badProjectFile.getAbsolutePath() ),
REZ.getString( "ant.project-bad-name.error" )
};
assertSameMessage( messages, e );
}

// Check bad target name
final File badTargetFile = getTestResource( "bad-target-name.ant" );
try
{
m_builder.build( badTargetFile.getAbsolutePath() );
fail();
}
catch( Exception e )
{
final String[] messages =
{
REZ.getString( "ant.project-build.error", badTargetFile.getAbsolutePath() ),
// TODO - check error message
null
};
assertSameMessage( messages, e );
}
}
}

+ 0
- 4
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/bad-project-name.ant View File

@@ -1,4 +0,0 @@
<!-- Project with an invalid name -->
<project version="2.0" name="!badname">
<target name="main"/>
</project>

+ 0
- 5
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/bad-target-name.ant View File

@@ -1,5 +0,0 @@
<!-- Target with an invalid name -->
<project version="2.0" name="ok name">
<target name="main"/>
<target name="bad ^ name"/>
</project>

+ 0
- 3
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/bad-version.ant View File

@@ -1,3 +0,0 @@
<!-- Project with invalid version -->
<project version="ant2">
</project>

+ 0
- 1
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/bad-xml.ant View File

@@ -1 +0,0 @@
this ain't xml.

+ 0
- 3
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/defaults.ant View File

@@ -1,3 +0,0 @@
<!-- Use all the defaults -->
<project version="2.0">
</project>

+ 0
- 3
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/mismatched-version.ant View File

@@ -1,3 +0,0 @@
<!-- Project with mismatched version -->
<project version="1.0.2">
</project>

+ 0
- 3
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/no-version.ant View File

@@ -1,3 +0,0 @@
<!-- Project with no version attribute -->
<project>
</project>

+ 0
- 3
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/set-base-dir.ant View File

@@ -1,3 +0,0 @@
<!-- Project with a non-default base directory -->
<project version="2.0" basedir="other-base-dir">
</project>

+ 0
- 3
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/set-default-target.ant View File

@@ -1,3 +0,0 @@
<!-- Project with a non-default default target -->
<project version="2.0" default="some-target">
</project>

+ 0
- 3
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/builder/test/set-project-name.ant View File

@@ -1,3 +0,0 @@
<!-- Project with non-default name -->
<project name="some-project" version="2.0">
</project >

+ 0
- 36
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/ConfigTestConfigurable.java View File

@@ -1,36 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test;

import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;

/**
* Simple class to test {@link org.apache.avalon.framework.configuration.Configurable}.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class ConfigTestConfigurable
implements Configurable
{
private Configuration m_configuration;

public void configure( Configuration configuration )
throws ConfigurationException
{
m_configuration = configuration;
}

public boolean equals( final Object object )
{
final ConfigTestConfigurable other = (ConfigTestConfigurable)object;
return m_configuration == other.m_configuration;
}
}

+ 0
- 859
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/DefaultConfigurerTestCase.java View File

@@ -1,859 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test;

import java.io.File;
import org.apache.antlib.core.StringToIntegerConverter;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.avalon.framework.ExceptionUtil;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.configuration.DefaultConfiguration;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.components.AbstractComponentTest;
import org.apache.myrmidon.components.configurer.DefaultConfigurer;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestAttributeConvert;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestConfigAdder;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestContent;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestEmpty;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestIdResolve;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestIgnoreStringMethods;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestInterfaceAdder;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestMismatchedRefType;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestMultipleTypedAdder;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestNestedErrors;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestNonInterfaceAdder;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestPropResolution;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestReferenceAttribute;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestReferenceConversion;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestReferenceElement;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestSetAndAdd;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestSetAttribute;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestSetElement;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestTypedAdder;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestTypedAdderConversion;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestTypedAdderReference;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestTypedAdderRole;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestTypedConfigAdder;
import org.apache.myrmidon.components.configurer.test.data.ConfigTestUnknownReference;
import org.apache.myrmidon.components.workspace.DefaultTaskContext;
import org.apache.myrmidon.framework.DataType;
import org.apache.myrmidon.interfaces.configurer.Configurer;
import org.apache.myrmidon.interfaces.role.RoleInfo;

/**
* Test cases for the default configurer and related classes.
*
* @author Adam Murdoch
*/
public class DefaultConfigurerTestCase
extends AbstractComponentTest
{
private final static Resources REZ =
getResourcesForTested( DefaultConfigurerTestCase.class );

private Configurer m_configurer;
private DefaultTaskContext m_context;

public DefaultConfigurerTestCase( String name )
{
super( name );
}

/**
* Setup the test case - prepares a set of components, including the
* configurer.
*/
protected void setUp() throws Exception
{
super.setUp();

// Find the configurer
m_configurer = (Configurer)getServiceManager().lookup( Configurer.ROLE );

// Setup a context
m_context = new DefaultTaskContext( null, getServiceManager(), getLogger() );
final File baseDir = new File( "." ).getAbsoluteFile();
m_context.setProperty( TaskContext.BASE_DIRECTORY, baseDir );
}

/**
* Creates an instance of a component. Sub-classes can override this
* method to add a particular implementation to the set of test components.
*/
protected Object createComponent( final String role, final Class defaultImpl )
throws Exception
{
if( role.equals( Configurer.ROLE) )
{
return new DefaultConfigurer();
}
else
{
return super.createComponent( role, defaultImpl );
}
}

/**
* Tests setting an attribute, via a setter method.
*/
public void testSetAttribute()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
final String value1 = "some value";
config.setAttribute( "some-prop", value1 );

final ConfigTestSetAttribute test = new ConfigTestSetAttribute();

// Configure the object
configure( test, config );

// Check result
final ConfigTestSetAttribute expected = new ConfigTestSetAttribute();
expected.setSomeProp( value1 );
assertEquals( expected, test );
}

/**
* Tests attribute conversion.
*/
public void testAttributeConvert()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
config.setAttribute( "int-prop", "90" );
config.setAttribute( "integer-prop", "-401" );

// Register the converter
registerConverter( StringToIntegerConverter.class, String.class, Integer.class );

final ConfigTestAttributeConvert test = new ConfigTestAttributeConvert();

// Configure the object
configure( test, config );

// Check result
final ConfigTestAttributeConvert expected = new ConfigTestAttributeConvert();
expected.setIntProp( 90 );
expected.setIntegerProp( new Integer( -401 ) );
assertEquals( expected, test );
}

/**
* Tests setting an unknown attribute.
*/
public void testSetUnknownAttribute()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
config.setAttribute( "unknown", "some value" );

final ConfigTestEmpty test = new ConfigTestEmpty();

// Configure the object
try
{
m_configurer.configureElement( test, config, m_context );
fail();
}
catch( final ConfigurationException ce )
{
final String message = REZ.getString( "no-such-attribute.error", "test", "unknown" );
assertSameMessage( message, ce );
}
}

/**
* Tests setting a nested element, via adder and setter methods.
*/
public void testSetElement()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
final DefaultConfiguration child1 = new DefaultConfiguration( "prop", "test" );
final String value1 = "some value";
child1.setAttribute( "some-prop", value1 );
config.addChild( child1 );
final DefaultConfiguration child2 = new DefaultConfiguration( "prop", "test" );
final String value2 = "another value";
child2.setAttribute( "some-prop", value2 );
config.addChild( child2 );

final ConfigTestSetElement test = new ConfigTestSetElement();

// Configure the object
configure( test, config );

// Check result
final ConfigTestSetElement expected = new ConfigTestSetElement();
ConfigTestSetElement elem = new ConfigTestSetElement();
elem.setSomeProp( value1 );
expected.addProp( elem );
elem = new ConfigTestSetElement();
elem.setSomeProp( value2 );
expected.addProp( elem );
assertEquals( expected, test );
}

/**
* Tests setting an unknown element.
*/
public void testSetUnknownElement()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
final DefaultConfiguration elem = new DefaultConfiguration( "unknown", "test" );
config.addChild( elem );

final ConfigTestEmpty test = new ConfigTestEmpty();

// Configure the object
try
{
m_configurer.configureElement( test, config, m_context );
fail();
}
catch( final ConfigurationException ce )
{
final String message = REZ.getString( "no-such-element.error", "test", "unknown" );
assertSameMessage( message, ce );
}
}

/**
* Tests setting the content of an object.
*/
public void testContent()
throws Exception
{
// Create the test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
final String value1 = "some value";
config.setValue( value1 );

final ConfigTestContent test = new ConfigTestContent();

// Configure the object
configure( test, config );

// Check result
final ConfigTestContent expected = new ConfigTestContent();
expected.addContent( value1 );
assertEquals( expected, test );
}

/**
* Tests setting the content of an object that does not handle it.
*/
public void testUnexpectedContent()
throws Exception
{
// Create the test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
config.setValue( "some value" );

final ConfigTestEmpty test = new ConfigTestEmpty();

// Configure the object
try
{
m_configurer.configureElement( test, config, m_context );
fail();
}
catch( final ConfigurationException ce )
{
final String message = REZ.getString( "no-content.error", "test" );
assertSameMessage( message, ce );
}
}

/**
* Tests property resolution.
*/
public void testPropResolution()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
config.setAttribute( "prop", "some ${prop-a} value" );

final ConfigTestPropResolution test = new ConfigTestPropResolution();

m_context.setProperty( "prop-a", "other" );

// Configure the object
configure( test, config );

// Check the configured object
final ConfigTestPropResolution expected = new ConfigTestPropResolution();
expected.setProp( "some other value" );
assertEquals( expected, test );
}

/**
* Tests reference resolution via an attribute.
*/
public void testReferenceAttribute() throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
config.setAttribute( "some-prop-ref", "prop-a" );

final ConfigTestReferenceAttribute test = new ConfigTestReferenceAttribute();

m_context.setProperty( "prop-a", "some value" );

// Configure the object
configure( test, config );

// Check the configured object
final ConfigTestReferenceAttribute expected = new ConfigTestReferenceAttribute();
expected.setSomeProp( "some value" );
assertEquals( expected, test );
}

/**
* Tests reference resolution via a nested element.
*/
public void testReferenceElement() throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
final DefaultConfiguration elem = new DefaultConfiguration( "some-prop-ref", "test" );
elem.setAttribute( "id", "prop-a" );
config.addChild( elem );

final ConfigTestReferenceElement test = new ConfigTestReferenceElement();

m_context.setProperty( "prop-a", "some value" );

// Configure the object
m_configurer.configureElement( test, config, m_context );

// Check the configured object
final ConfigTestReferenceElement expected = new ConfigTestReferenceElement();
expected.addSomeProp( "some value" );
assertEquals( expected, test );
}

/**
* Tests that extra content is not allowed in a reference element.
*/
public void testReferenceElementExtra()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
final DefaultConfiguration elem = new DefaultConfiguration( "some-prop-ref", "test" );
elem.setAttribute( "id", "prop-a" );
elem.setAttribute( "extra-attr", "some value" );
config.addChild( elem );

final ConfigTestReferenceElement test = new ConfigTestReferenceElement();

try
{
// Configure the object
m_configurer.configureElement( test, config, m_context );
fail();
}
catch( ConfigurationException e )
{
final String[] messages = new String[]
{
REZ.getString( "bad-configure-element.error", "some-prop-ref" ),
REZ.getString( "extra-config-for-ref.error" )
};
assertSameMessage( messages, e );
}
}

/**
* Tests reference type conversion.
*/
public void testReferenceConversion() throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
config.setAttribute( "prop-a-ref", "id" );

final Integer refValue = new Integer( 21 );
m_context.setProperty( "id", refValue );

registerConverter( ObjectToMyRole1Converter.class, Object.class, MyRole1.class );

final ConfigTestReferenceConversion test = new ConfigTestReferenceConversion();

// Configure
configure( test, config );

// Check result
final ConfigTestReferenceConversion expected = new ConfigTestReferenceConversion();
expected.setPropA( new MyRole1Adaptor( refValue ) );
assertEquals( expected, test );
}

/**
* Tests that the role's default type is used for interface typed
* elements.
*/
public void testInterfaceAdder()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
final DefaultConfiguration child = new DefaultConfiguration( "prop-a", "test" );
config.addChild( child );

registerRole( new RoleInfo( "myrole1", null, MyRole1.class, "default-type" ) );
registerType( "myrole1", "default-type", MyType1.class );

final ConfigTestInterfaceAdder test = new ConfigTestInterfaceAdder();

// Configure object
configure( test, config );

// Check result
final ConfigTestInterfaceAdder expected = new ConfigTestInterfaceAdder();
expected.addPropA( new MyType1() );
assertEquals( expected, test );
}

/**
* Tests whether an object with a non-iterface typed adder causes an
* exception.
*/
public void testNonInterfaceTypedAdder()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );

final ConfigTestNonInterfaceAdder test = new ConfigTestNonInterfaceAdder();

try
{
// Configure the object
m_configurer.configureElement( test, config, m_context );
fail();
}
catch( final ConfigurationException ce )
{
final String[] messages = {
REZ.getString( "bad-configure-element.error", "test" ),
REZ.getString( "typed-adder-non-interface.error",
ConfigTestNonInterfaceAdder.class.getName(),
Integer.class.getName() )
};
assertSameMessage( messages, ce );
}
}

/**
* Tests whether an object with multiple typed adders causes an exception.
*/
public void testMultipleTypedAdder()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );

final ConfigTestMultipleTypedAdder test = new ConfigTestMultipleTypedAdder();

try
{
// Configure the object
m_configurer.configureElement( test, config, m_context );
fail();
}
catch( final ConfigurationException ce )
{
final String[] messages = new String[]
{
REZ.getString( "bad-configure-element.error", "test" ),
REZ.getString( "multiple-methods-for-element.error",
ConfigTestMultipleTypedAdder.class.getName(),
"add" )
};
assertSameMessage( messages, ce );
}
}

/**
* Tests to see if typed adder works, with iterface types.
*/
public void testTypedAdder()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
final DefaultConfiguration child1 = new DefaultConfiguration( "my-type1", "test" );
final DefaultConfiguration child2 = new DefaultConfiguration( "my-type2", "test" );
config.addChild( child1 );
config.addChild( child2 );

registerRole( new RoleInfo( MyRole1.ROLE, "my-role1", MyRole1.class ) );
registerType( MyRole1.ROLE, "my-type1", MyType1.class );
registerType( MyRole1.ROLE, "my-type2", MyType2.class );

final ConfigTestTypedAdder test = new ConfigTestTypedAdder();

// Configure the object
configure( test, config );

final ConfigTestTypedAdder expected = new ConfigTestTypedAdder();
expected.add( new MyType1() );
expected.add( new MyType2() );
assertEquals( expected, test );
}

/**
* Tests to check that role is used for typed adder.
*/
public void testTypedAdderRole()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
final DefaultConfiguration child1 = new DefaultConfiguration( "my-type1", "test" );
config.addChild( child1 );

// Register incompatible types with the same name, as data-type and myrole1.
registerRole( new RoleInfo( "myrole1", "myrole1", MyRole1.class ) );
registerType( "myrole1", "my-type1", MyType1.class );
registerType( DataType.ROLE, "my-type1", StringBuffer.class );

final ConfigTestTypedAdderRole test = new ConfigTestTypedAdderRole();

// Configure the object
configure( test, config );

// Check the result
final ConfigTestTypedAdderRole expected = new ConfigTestTypedAdderRole();
expected.add( new MyType1() );
assertEquals( expected, test );
}

/**
* Tests conversion with a typed adder.
*/
public void testTypedAdderConversion()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
final DefaultConfiguration child = new DefaultConfiguration( "some-type", "test" );
child.setAttribute( "prop", "some value" );
config.addChild( child );

registerType( DataType.ROLE, "some-type", ConfigTestTypedAdderConversion.class );
registerConverter( ObjectToMyRole1Converter.class, Object.class, MyRole1.class );

final ConfigTestTypedAdderConversion test = new ConfigTestTypedAdderConversion();

// Configure the object
configure( test, config );

// Check the result
final ConfigTestTypedAdderConversion expected = new ConfigTestTypedAdderConversion();
final ConfigTestTypedAdderConversion nested = new ConfigTestTypedAdderConversion();
nested.setProp( "some value" );
expected.add( new MyRole1Adaptor( nested ) );
assertEquals( expected, test );
}

/**
* Tests to see if typed adder works, with Configuration type.
*/
public void testTypedConfigAdder()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
final DefaultConfiguration child1 = new DefaultConfiguration( "my-type1", "test" );
final DefaultConfiguration child2 = new DefaultConfiguration( "my-type2", "test" );
config.addChild( child1 );
config.addChild( child2 );

final ConfigTestTypedConfigAdder test = new ConfigTestTypedConfigAdder();

// Configure the object
configure( test, config );

final ConfigTestTypedConfigAdder expected = new ConfigTestTypedConfigAdder();
expected.add( child1 );
expected.add( child2 );
assertEquals( expected, test );
}

/**
* Tests to see if adder works, with Configuration objects.
*/
public void testConfigAdder()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
final DefaultConfiguration child1 = new DefaultConfiguration( "config", "test" );
final DefaultConfiguration child2 = new DefaultConfiguration( "config", "test" );
config.addChild( child1 );
config.addChild( child2 );

final ConfigTestConfigAdder test = new ConfigTestConfigAdder();

// Configure the object
configure( test, config );

final ConfigTestConfigAdder expected = new ConfigTestConfigAdder();
expected.addConfig( child1 );
expected.addConfig( child2 );
assertEquals( expected, test );
}

/**
* Tests to check that Configurable is handled properly.
*/
public void testConfigurable()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );

final ConfigTestConfigurable test = new ConfigTestConfigurable();

// Configure the object
m_configurer.configureElement( test, config, m_context );

final ConfigTestConfigurable expected = new ConfigTestConfigurable();
expected.configure( config );
assertEquals( expected, test );
}

/**
* Test resolving properties in an id.
*/
public void testIdResolve()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
config.setAttribute( "some-prop-ref", "${id}" );

final ConfigTestIdResolve test = new ConfigTestIdResolve();

m_context.setProperty( "id", "prop-a" );
m_context.setProperty( "prop-a", "some indirect value" );

// Configure the object
configure( test, config );

// Check the configured object
final ConfigTestIdResolve expected = new ConfigTestIdResolve();
expected.setSomeProp( "some indirect value" );
assertEquals( expected, test );
}

/**
* Tests an unknown reference.
*/
public void testUnknownReference()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
config.setAttribute( "some-prop-ref", "unknown-prop" );

final ConfigTestUnknownReference test = new ConfigTestUnknownReference();

// Configure the object
try
{
m_configurer.configureElement( test, config, m_context );
fail();
}
catch( ConfigurationException e )
{
final String[] messages = new String[]
{
REZ.getString( "bad-set-attribute.error", "test", "some-prop-ref" ),
REZ.getString( "unknown-reference.error", "unknown-prop" )
};
assertSameMessage( messages, e );
}
}

/**
* Tests handling of mismatched reference type.
*/
public void testMismatchedRefType()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
config.setAttribute( "some-prop-ref", "prop-a" );

final ConfigTestMismatchedRefType test = new ConfigTestMismatchedRefType();

m_context.setProperty( "prop-a", new Integer( 23 ) );

// Configure the object
try
{
m_configurer.configureElement( test, config, m_context );
fail();
}
catch( ConfigurationException e )
{
final String[] messages = new String[]
{
REZ.getString( "bad-set-attribute.error", "test", "some-prop-ref" ),
REZ.getString( "mismatch-ref-types.error",
"prop-a",
"some-prop" )
};
assertSameMessage( messages, e );
}
}

/**
* Tests using a reference with a typed adder. Tests using an attribute
* and a nested element.
*/
public void testTypedAdderReference()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
final DefaultConfiguration child = new DefaultConfiguration( "my-role1-ref", "test" );
child.setAttribute( "id", "id2" );
config.addChild( child );

// Add role mapping, and add to reference to context
registerRole( new RoleInfo( "my-role1", MyRole1.class ) );
m_context.setProperty( "id2", new MyType2() );

final ConfigTestTypedAdderReference test = new ConfigTestTypedAdderReference();

// Configure the object
configure( test, config );

// Compare against expected value
final ConfigTestTypedAdderReference expected = new ConfigTestTypedAdderReference();
expected.add( new MyType2() );
assertEquals( expected, test );
}

/**
* Tests reporting of nested errors.
*/
public void testNestedErrors() throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
final DefaultConfiguration elem = new DefaultConfiguration( "prop", "test" );
elem.setAttribute( "not-a-prop", "not-a-value" );
config.addChild( elem );

final ConfigTestNestedErrors test = new ConfigTestNestedErrors();

try
{
// Configure the object
m_configurer.configureElement( test, config, m_context );
fail();
}
catch( ConfigurationException e )
{
final String message = REZ.getString( "no-such-attribute.error",
"prop",
"not-a-prop" );
assertSameMessage( message, e );
}
}

/**
* Tests that string setter/adder/creators are ignored when there
* are multiple.
*/
public void testIgnoreStringMethods()
throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
config.setAttribute( "prop1", "some-value" );
config.setValue( "99" );
DefaultConfiguration elem = new DefaultConfiguration( "prop2", "test" );
config.addChild( elem );
elem = new DefaultConfiguration( "my-type1", "test" );
config.addChild( elem );

registerConverter( ObjectToMyRole1Converter.class, String.class, MyRole1.class );
registerConverter( StringToIntegerConverter.class, String.class, Integer.class );
registerType( DataType.ROLE, "my-type1", MyType1.class );

final ConfigTestIgnoreStringMethods test = new ConfigTestIgnoreStringMethods();

// Configure the object
configure( test, config );

// Test expected value
final ConfigTestIgnoreStringMethods expected = new ConfigTestIgnoreStringMethods();
expected.setProp1( new MyRole1Adaptor( "some-value" ) );
expected.addProp2( new ConfigTestIgnoreStringMethods() );
expected.add( new MyType1() );
expected.addContent( 99 );
assertEquals( expected, test );
}

/**
* Tests that a class with a setter and adder with the same property name
* is handled correctly.
*/
public void testSetAndAdd() throws Exception
{
// Setup test data
final DefaultConfiguration config = new DefaultConfiguration( "test", "test" );
config.setAttribute( "prop", "some value" );
DefaultConfiguration elem = new DefaultConfiguration( "prop", "test" );
elem.setAttribute( "prop", "another value" );
config.addChild( elem );

final ConfigTestSetAndAdd test = new ConfigTestSetAndAdd();

// Configure the object
configure( test, config );

// Test expected value
final ConfigTestSetAndAdd expected = new ConfigTestSetAndAdd();
expected.setProp( "some value" );
final ConfigTestSetAndAdd nested = new ConfigTestSetAndAdd();
nested.setProp( "another value" );
expected.addProp( nested );
assertEquals( expected, test );
}

private void configure( final Object test,
final DefaultConfiguration config )
throws ConfigurationException
{
try
{
m_configurer.configureElement( test, config, m_context );
}
catch( final ConfigurationException ce )
{
ExceptionUtil.printStackTrace( ce );
throw ce;
}
}
}

+ 0
- 22
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/MyRole1.java View File

@@ -1,22 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test;

import org.apache.myrmidon.framework.DataType;

/**
* A basic interface to test configurer.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public interface MyRole1
extends DataType
{
String ROLE = MyRole1.class.getName();
}

+ 0
- 34
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/MyRole1Adaptor.java View File

@@ -1,34 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test;

import org.apache.myrmidon.AbstractMyrmidonTest;
import org.apache.myrmidon.components.configurer.test.MyRole1;

/**
* Adapts an Object to MyRole
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class MyRole1Adaptor
implements MyRole1
{
private final Object m_object;

public MyRole1Adaptor( final Object o )
{
m_object = o;
}

public boolean equals( Object obj )
{
final MyRole1Adaptor adaptor = (MyRole1Adaptor)obj;
return AbstractMyrmidonTest.equals( m_object, adaptor.m_object );
}
}

+ 0
- 18
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/MyRole2.java View File

@@ -1,18 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test;

/**
* A basic interface to test configurer.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public interface MyRole2
{
}

+ 0
- 25
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/MyType1.java View File

@@ -1,25 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test;

import org.apache.myrmidon.components.configurer.test.MyRole1;

/**
* A basic implementation of MyRole1 to test configurer.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class MyType1
implements MyRole1
{
public boolean equals( final Object object )
{
return object.getClass() == getClass();
}
}

+ 0
- 25
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/MyType2.java View File

@@ -1,25 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test;

import org.apache.myrmidon.components.configurer.test.MyRole1;

/**
* A basic implementation of MyRole1 to test configurer.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class MyType2
implements MyRole1
{
public boolean equals( final Object object )
{
return object.getClass() == getClass();
}
}

+ 0
- 34
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/ObjectToMyRole1Converter.java View File

@@ -1,34 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test;

import org.apache.aut.converter.AbstractConverter;
import org.apache.aut.converter.ConverterException;
import org.apache.myrmidon.components.configurer.test.MyRole1;
import org.apache.myrmidon.components.configurer.test.MyRole1Adaptor;

/**
* Converts from Object to MyRole1.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class ObjectToMyRole1Converter
extends AbstractConverter
{
public ObjectToMyRole1Converter()
{
super( Object.class, MyRole1.class );
}

protected Object convert( Object original, Object context )
throws ConverterException
{
return new MyRole1Adaptor( original );
}
}

+ 0
- 46
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestAttributeConvert.java View File

@@ -1,46 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import org.apache.myrmidon.components.AbstractComponentTest;

/**
* A class for testing conversion.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
*/
public class ConfigTestAttributeConvert
{
private int m_intProp;
private Integer m_integerProp;

public void setIntProp( final int intProp )
{
m_intProp = intProp;
}

public void setIntegerProp( final Integer integerProp )
{
m_integerProp = integerProp;
}

public boolean equals( Object obj )
{
ConfigTestAttributeConvert test = (ConfigTestAttributeConvert)obj;
if( m_intProp != test.m_intProp )
{
return false;
}
if( !AbstractComponentTest.equals( m_integerProp, test.m_integerProp ) )
{
return false;
}

return true;
}
}

+ 0
- 33
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestConfigAdder.java View File

@@ -1,33 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.ArrayList;
import org.apache.avalon.framework.configuration.Configuration;

/**
* Simple class to test adder for Configurations.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class ConfigTestConfigAdder
{
private ArrayList m_configurations = new ArrayList();

public void addConfig( final Configuration configuration )
{
m_configurations.add( configuration );
}

public boolean equals( final Object object )
{
final ConfigTestConfigAdder other = (ConfigTestConfigAdder)object;
return m_configurations.equals( other.m_configurations );
}
}

+ 0
- 42
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestContent.java View File

@@ -1,42 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.ArrayList;
import java.util.List;
import org.apache.myrmidon.framework.DataType;
import org.apache.myrmidon.components.configurer.test.DefaultConfigurerTestCase;

/**
* A simple test class with string properties.
*
* @author Adam Murdoch
*/
public class ConfigTestContent
implements DataType
{
private String m_content;

public boolean equals( final Object obj )
{
final ConfigTestContent test = (ConfigTestContent)obj;
if( !DefaultConfigurerTestCase.equals( m_content, test.m_content ) )
{
return false;
}
else
{
return true;
}
}

public void addContent( final String content )
{
m_content = content;
}
}

+ 0
- 20
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestEmpty.java View File

@@ -1,20 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import org.apache.myrmidon.framework.DataType;

/**
* An empty class.
*
* @author Adam Murdoch
*/
public class ConfigTestEmpty
implements DataType
{
}

+ 0
- 42
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestIdResolve.java View File

@@ -1,42 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.ArrayList;
import java.util.List;
import org.apache.myrmidon.framework.DataType;
import org.apache.myrmidon.components.configurer.test.DefaultConfigurerTestCase;

/**
* A simple test class with string properties.
*
* @author Adam Murdoch
*/
public class ConfigTestIdResolve
implements DataType
{
private String m_someProp;

public boolean equals( final Object obj )
{
final ConfigTestIdResolve test = (ConfigTestIdResolve)obj;
if( !DefaultConfigurerTestCase.equals( m_someProp, test.m_someProp ) )
{
return false;
}
else
{
return true;
}
}

public void setSomeProp( final String value )
{
m_someProp = value;
}
}

+ 0
- 105
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestIgnoreStringMethods.java View File

@@ -1,105 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.ArrayList;
import junit.framework.AssertionFailedError;
import org.apache.myrmidon.components.configurer.test.DefaultConfigurerTestCase;
import org.apache.myrmidon.components.configurer.test.MyRole1;

/**
* A test class with multiple setters/adders/creators for a property.
*
* @author Adam Murdoch
*/
public class ConfigTestIgnoreStringMethods
{
private MyRole1 m_prop1;
private ArrayList m_prop2 = new ArrayList();
private int m_content;
private ArrayList m_typed = new ArrayList();

public boolean equals( Object obj )
{
ConfigTestIgnoreStringMethods test = (ConfigTestIgnoreStringMethods)obj;
if( !DefaultConfigurerTestCase.equals( m_prop1, test.m_prop1 ) )
{
return false;
}
if( !m_prop2.equals( test.m_prop2 ) )
{
return false;
}
if( m_content != test.m_content )
{
return false;
}
if( !m_typed.equals( test.m_typed ) )
{
return false;
}
return true;
}

//
// Multiple Setters
//

public void setProp1( final String value )
{
throw new AssertionFailedError();
}

public void setProp1( final MyRole1 value )
{
m_prop1 = value;
}

//
// Multiple Adders
//

public void addProp2( final String value )
{
throw new AssertionFailedError();
}

public void addProp2( final ConfigTestIgnoreStringMethods value )
{
m_prop2.add( value );
}

//
// Multiple typed adders
//

public void add( final String value )
{
throw new AssertionFailedError();
}

public void add( final MyRole1 value )
{
m_typed.add( value );
}

//
// Multiple content setters
//

public void addContent( final int value )
{
m_content = value;
}

public void addContent( final String value )
{
throw new AssertionFailedError();
}

}

+ 0
- 33
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestInterfaceAdder.java View File

@@ -1,33 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.ArrayList;
import org.apache.myrmidon.components.configurer.test.MyRole1;

/**
* A test class with an interface property.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class ConfigTestInterfaceAdder
{
private final ArrayList m_elems = new ArrayList();

public void addPropA( final MyRole1 role1 )
{
m_elems.add( role1 );
}

public boolean equals( Object obj )
{
final ConfigTestInterfaceAdder test = (ConfigTestInterfaceAdder)obj;
return m_elems.equals( test.m_elems );
}
}

+ 0
- 26
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestMismatchedRefType.java View File

@@ -1,26 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.ArrayList;
import java.util.List;
import org.apache.myrmidon.framework.DataType;
import org.apache.myrmidon.components.configurer.test.DefaultConfigurerTestCase;

/**
* A simple test class with string properties.
*
* @author Adam Murdoch
*/
public class ConfigTestMismatchedRefType
implements DataType
{
public void setSomeProp( final String value )
{
}
}

+ 0
- 28
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestMultipleTypedAdder.java View File

@@ -1,28 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import org.apache.myrmidon.components.configurer.test.MyRole1;
import org.apache.myrmidon.components.configurer.test.MyRole2;

/**
* Simple class with more than one typed adder method.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class ConfigTestMultipleTypedAdder
{
public void add( final MyRole1 role1 )
{
}

public void add( final MyRole2 role2 )
{
}
}

+ 0
- 20
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestNestedErrors.java View File

@@ -1,20 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

/**
* A simple test class.
*
* @author Adam Murdoch
*/
public class ConfigTestNestedErrors
{
public void addProp( final ConfigTestEmpty test )
{
}
}

+ 0
- 23
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestNonInterfaceAdder.java View File

@@ -1,23 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

/**
* Simple class to test typed adder.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class ConfigTestNonInterfaceAdder
{
public void add( final Integer integer )
{
System.out.println( "This should not have been called as " +
"Integer is not an interface" );
}
}

+ 0
- 41
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestPropResolution.java View File

@@ -1,41 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.List;
import java.util.ArrayList;
import org.apache.myrmidon.components.configurer.test.DefaultConfigurerTestCase;

/**
* Simple class to test typed adder.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class ConfigTestPropResolution
{
private String m_prop;

public boolean equals( final Object obj )
{
final ConfigTestPropResolution test = (ConfigTestPropResolution)obj;
if( !DefaultConfigurerTestCase.equals( m_prop, test.m_prop ) )
{
return false;
}
else
{
return true;
}
}

public void setProp( final String value )
{
m_prop = value;
}
}

+ 0
- 41
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestReferenceAttribute.java View File

@@ -1,41 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.List;
import java.util.ArrayList;
import org.apache.myrmidon.components.configurer.test.DefaultConfigurerTestCase;

/**
* Simple class to test typed adder.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class ConfigTestReferenceAttribute
{
private String m_someProp;

public boolean equals( final Object obj )
{
final ConfigTestReferenceAttribute test = (ConfigTestReferenceAttribute)obj;
if( !DefaultConfigurerTestCase.equals( m_someProp, test.m_someProp ) )
{
return false;
}
else
{
return true;
}
}

public void setSomeProp( final String value )
{
m_someProp = value;
}
}

+ 0
- 32
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestReferenceConversion.java View File

@@ -1,32 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.ArrayList;
import org.apache.myrmidon.components.configurer.test.MyRole1;

/**
* A simple test class.
*
* @author Adam Murdoch
*/
public class ConfigTestReferenceConversion
{
private final ArrayList m_elems = new ArrayList();

public void setPropA( final MyRole1 role1 )
{
m_elems.add( role1 );
}

public boolean equals( Object obj )
{
final ConfigTestReferenceConversion test = (ConfigTestReferenceConversion)obj;
return m_elems.equals( test.m_elems );
}
}

+ 0
- 37
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestReferenceElement.java View File

@@ -1,37 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.ArrayList;
import java.util.List;
import org.apache.myrmidon.components.configurer.test.DefaultConfigurerTestCase;

/**
* A simple test class.
*
* @author Adam Murdoch
*/
public class ConfigTestReferenceElement
{
private String m_someProp;

public boolean equals( Object obj )
{
ConfigTestReferenceElement test = (ConfigTestReferenceElement)obj;
if( !DefaultConfigurerTestCase.equals( m_someProp, test.m_someProp ) )
{
return false;
}
return true;
}

public void addSomeProp( final String value )
{
m_someProp = value;
}
}

+ 0
- 50
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestSetAndAdd.java View File

@@ -1,50 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.ArrayList;
import org.apache.myrmidon.AbstractMyrmidonTest;

/**
* A test class with a setter and adder with the same property name.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class ConfigTestSetAndAdd
{
private String m_prop;
private ArrayList m_nested = new ArrayList();

public void setProp( final String prop )
{
m_prop = prop;
}

public void addProp( final ConfigTestSetAndAdd elem )
{
m_nested.add( elem );
}

public boolean equals( final Object obj )
{
ConfigTestSetAndAdd test = (ConfigTestSetAndAdd)obj;
if( ! AbstractMyrmidonTest.equals( m_prop, test.m_prop) )
{
return false;
}
else if( ! m_nested.equals( test.m_nested ) )
{
return false;
}
else
{
return true;
}
}
}

+ 0
- 41
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestSetAttribute.java View File

@@ -1,41 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.List;
import java.util.ArrayList;
import org.apache.myrmidon.components.configurer.test.DefaultConfigurerTestCase;

/**
* Simple class to test setter.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class ConfigTestSetAttribute
{
private String m_someProp;

public boolean equals( final Object obj )
{
final ConfigTestSetAttribute test = (ConfigTestSetAttribute)obj;
if( !DefaultConfigurerTestCase.equals( m_someProp, test.m_someProp ) )
{
return false;
}
else
{
return true;
}
}

public void setSomeProp( final String value )
{
m_someProp = value;
}
}

+ 0
- 47
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestSetElement.java View File

@@ -1,47 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.ArrayList;
import java.util.List;
import org.apache.myrmidon.components.configurer.test.DefaultConfigurerTestCase;

/**
* A simple test class.
*
* @author Adam Murdoch
*/
public class ConfigTestSetElement
{
private List m_propList = new ArrayList();
private String m_someProp;

public boolean equals( Object obj )
{
ConfigTestSetElement test = (ConfigTestSetElement)obj;
if( !m_propList.equals( test.m_propList ) )
{
return false;
}
else if( !DefaultConfigurerTestCase.equals( m_someProp, test.m_someProp ) )
{
return false;
}
return true;
}

public void setSomeProp( final String value )
{
m_someProp = value;
}

public void addProp( final ConfigTestSetElement test )
{
m_propList.add( test );
}
}

+ 0
- 33
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestTypedAdder.java View File

@@ -1,33 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.ArrayList;
import org.apache.myrmidon.components.configurer.test.MyRole1;

/**
* Simple class to test adder for Configurations.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class ConfigTestTypedAdder
{
private ArrayList m_roles = new ArrayList();

public void add( final MyRole1 role )
{
m_roles.add( role );
}

public boolean equals( final Object object )
{
final ConfigTestTypedAdder other = (ConfigTestTypedAdder)object;
return m_roles.equals( other.m_roles );
}
}

+ 0
- 40
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestTypedAdderConversion.java View File

@@ -1,40 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.ArrayList;
import org.apache.myrmidon.components.configurer.test.MyRole1;
import org.apache.myrmidon.framework.DataType;

/**
* Simple class to test typed adder.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class ConfigTestTypedAdderConversion
implements DataType
{
private ArrayList m_roles = new ArrayList();
private String m_prop;

public void setProp( final String prop )
{
m_prop = prop;
}
public void add( final MyRole1 role1 )
{
m_roles.add( role1 );
}

public boolean equals( final Object object )
{
final ConfigTestTypedAdderConversion other = (ConfigTestTypedAdderConversion)object;
return m_roles.equals( other.m_roles );
}
}

+ 0
- 33
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestTypedAdderReference.java View File

@@ -1,33 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.ArrayList;
import org.apache.myrmidon.components.configurer.test.MyRole1;

/**
* Simple class to test typed adder.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class ConfigTestTypedAdderReference
{
private ArrayList m_roles = new ArrayList();

public void add( final MyRole1 role1 )
{
m_roles.add( role1 );
}

public boolean equals( final Object object )
{
final ConfigTestTypedAdderReference other = (ConfigTestTypedAdderReference)object;
return m_roles.equals( other.m_roles );
}
}

+ 0
- 33
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestTypedAdderRole.java View File

@@ -1,33 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.ArrayList;
import org.apache.myrmidon.components.configurer.test.MyRole1;

/**
* Simple class to test typed adder.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class ConfigTestTypedAdderRole
{
private ArrayList m_roles = new ArrayList();

public void add( final MyRole1 role1 )
{
m_roles.add( role1 );
}

public boolean equals( final Object object )
{
final ConfigTestTypedAdderRole other = (ConfigTestTypedAdderRole)object;
return m_roles.equals( other.m_roles );
}
}

+ 0
- 33
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestTypedConfigAdder.java View File

@@ -1,33 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import java.util.ArrayList;
import org.apache.avalon.framework.configuration.Configuration;

/**
* Simple class to test adder for Configurations.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class ConfigTestTypedConfigAdder
{
private ArrayList m_configurations = new ArrayList();

public void add( final Configuration configuration )
{
m_configurations.add( configuration );
}

public boolean equals( final Object object )
{
final ConfigTestTypedConfigAdder other = (ConfigTestTypedConfigAdder)object;
return m_configurations.equals( other.m_configurations );
}
}

+ 0
- 23
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/configurer/test/data/ConfigTestUnknownReference.java View File

@@ -1,23 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.configurer.test.data;

import org.apache.myrmidon.framework.DataType;

/**
* A simple test class with string properties.
*
* @author Adam Murdoch
*/
public class ConfigTestUnknownReference
implements DataType
{
public void setSomeProp( final String value )
{
}
}

+ 0
- 203
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/deployer/test/DefaultDeployerTestCase.java View File

@@ -1,203 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.deployer.test;

import java.io.File;
import org.apache.aut.converter.Converter;
import org.apache.aut.converter.ConverterException;
import org.apache.myrmidon.components.AbstractComponentTest;
import org.apache.myrmidon.components.deployer.DefaultDeployer;
import org.apache.myrmidon.framework.DataType;
import org.apache.myrmidon.interfaces.deployer.ConverterDefinition;
import org.apache.myrmidon.interfaces.deployer.Deployer;
import org.apache.myrmidon.interfaces.deployer.TypeDefinition;
import org.apache.myrmidon.interfaces.deployer.TypeDeployer;
import org.apache.myrmidon.interfaces.type.TypeException;
import org.apache.myrmidon.interfaces.type.TypeFactory;

/**
* Test cases for the default deployer.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
*/
public class DefaultDeployerTestCase
extends AbstractComponentTest
{
private static final String TEST_TYPE1_NAME = "test-type1";

private Deployer m_deployer;
private Converter m_converter;

public DefaultDeployerTestCase( final String name )
{
super( name );
}

/**
* Setup the test case - prepares the set of components, including the
* deployer.
*/
protected void setUp() throws Exception
{
super.setUp();
m_deployer = (Deployer)getServiceManager().lookup( Deployer.ROLE );
m_converter = (Converter)getServiceManager().lookup( Converter.ROLE );
}

/**
* Creates an instance of a component. Sub-classes can override this
* method to add a particular implementation to the set of test components.
*/
protected Object createComponent( final String role, final Class defaultImpl )
throws Exception
{
if( role.equals( Deployer.ROLE) )
{
return new DefaultDeployer();
}
else
{
return super.createComponent( role, defaultImpl );
}
}

/**
* Tests deployment of a single type from a ClassLoader.
*/
public void testSingleType() throws Exception
{
final String typeName = TEST_TYPE1_NAME;
final String classname = TestType1.class.getName();

// Determine the shorthand for the DataType role

// Create the type definition
final TypeDefinition typeDef = new TypeDefinition( typeName, DATA_TYPE_ROLE, classname );

final ClassLoader classLoader = getClass().getClassLoader();
final TypeDeployer typeDeployer = m_deployer.createDeployer( classLoader );

// Make sure the test types have not been deployed
assertTypesNotRegistered();

// Deploy the type
typeDeployer.deployType( typeDef );

// Check the type has been registered
final TypeFactory typeFactory = getTypeManager().getFactory( DataType.ROLE );
final Object result = typeFactory.create( typeName );
assertTrue( result instanceof TestType1 );
}

/**
* Tests deployment of a single converter from a ClassLoader.
*/
public void testSingleConverter() throws Exception
{
// Create the type definition
final String classname = TestConverter1.class.getName();
final String source = "java.lang.String";
final String destClass = TestType1.class.getName();

final ConverterDefinition typeDef =
new ConverterDefinition( classname, source, destClass );

final ClassLoader classLoader = getClass().getClassLoader();
final TypeDeployer typeDeployer = m_deployer.createDeployer( classLoader );

// Make sure the test types have not been deployed
assertTypesNotRegistered();

// Deploy the type
typeDeployer.deployType( typeDef );

// Try to convert from string to test type
final Object result = m_converter.convert( TestType1.class, "some-string", null );
assertTrue( result instanceof TestType1 );
}

/**
* Tests deployment of types from a typelib descriptor.
*/
public void testLibDescriptor() throws Exception
{
final File typelib = getTestResource( "test.atl" );
final TypeDeployer typeDeployer = m_deployer.createDeployer( typelib );

// Make sure the test types have not been deployed
assertTypesNotRegistered();

// Deploy all the types from the descriptor
typeDeployer.deployAll();

// Make sure the test types have been deployed
assertTypesRegistered();
}

/**
* Ensures that the test types have not ben deployed.
*/
private void assertTypesNotRegistered() throws Exception
{
// Check the data-type
TypeFactory typeFactory = getTypeManager().getFactory( DataType.ROLE );
try
{
typeFactory.create( TEST_TYPE1_NAME );
fail();
}
catch( TypeException e )
{
// TODO - check error message
}

// Check the custom role implementation
try
{
typeFactory = getTypeManager().getFactory( TestRole1.ROLE );
typeFactory.create( TEST_TYPE1_NAME );
fail();
}
catch( TypeException e )
{
// TODO - check error message
}

// Check the converter
try
{
m_converter.convert( TestType1.class, "some string", null );
fail();
}
catch( ConverterException e )
{
// TODO - check error message
}
}

/**
* Ensures the types from the test typelib descriptor have been correctly
* deployed.
*/
private void assertTypesRegistered() throws Exception
{
// Check the data-type
TypeFactory typeFactory = getTypeManager().getFactory( DataType.ROLE );
Object object = typeFactory.create( TEST_TYPE1_NAME );
assertTrue( object instanceof TestType1 );

// Check the custom role implementation
typeFactory = getTypeManager().getFactory( TestRole1.ROLE );
object = typeFactory.create( TEST_TYPE1_NAME );
assertTrue( object instanceof TestType1 );

// Check the converter
object = m_converter.convert( TestType1.class, "some string", null );
assertTrue( object instanceof TestType1 );
}
}

+ 0
- 29
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/deployer/test/TestConverter1.java View File

@@ -1,29 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.deployer.test;

import org.apache.aut.converter.Converter;
import org.apache.aut.converter.ConverterException;

/**
* A test converter.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
*/
public class TestConverter1
implements Converter
{
/**
* Convert original to destination type.
*/
public Object convert( Class destination, Object original, Object context )
throws ConverterException
{
return new TestType1();
}
}

+ 0
- 18
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/deployer/test/TestRole1.java View File

@@ -1,18 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.deployer.test;

/**
* A test role interface.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
*/
public interface TestRole1
{
String ROLE = TestRole1.class.getName();
}

+ 0
- 21
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/deployer/test/TestType1.java View File

@@ -1,21 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.deployer.test;

import org.apache.myrmidon.framework.DataType;
import org.apache.myrmidon.components.deployer.test.TestRole1;

/**
* A test data-type.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
*/
public class TestType1
implements DataType, TestRole1
{
}

+ 0
- 18
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/deployer/test/ant-descriptor.xml View File

@@ -1,18 +0,0 @@
<ant-lib version="1.0">

<types>
<!-- Register a data-type -->
<data-type name="test-type1"
classname="org.apache.myrmidon.components.deployer.test.TestType1"/>

<!-- Register a custom role implementation -->
<test-role1 name="test-type1"
classname="org.apache.myrmidon.components.deployer.test.TestType1"/>

<!-- Register a converter -->
<converter classname="org.apache.myrmidon.components.deployer.test.TestConverter1"
source="java.lang.String"
destination="org.apache.myrmidon.components.deployer.test.TestType1"/>
</types>

</ant-lib>

+ 0
- 4
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/deployer/test/ant-roles.xml View File

@@ -1,4 +0,0 @@
<roles version="1.0">
<!-- A custom role -->
<role shorthand="test-role1" name="org.apache.myrmidon.components.deployer.test.TestRole1"/>
</roles>

+ 0
- 94
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/embeddor/test/DefaultEmbeddorTest.java View File

@@ -1,94 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.embeddor.test;

import java.io.File;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.myrmidon.AbstractProjectTest;
import org.apache.myrmidon.LogMessageTracker;
import org.apache.myrmidon.interfaces.embeddor.Embeddor;
import org.apache.myrmidon.interfaces.model.Project;
import org.apache.myrmidon.interfaces.model.Target;
import org.apache.myrmidon.interfaces.workspace.Workspace;
import org.apache.myrmidon.listeners.ProjectListener;

/**
* Test cases for the default embeddor.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class DefaultEmbeddorTest
extends AbstractProjectTest
{
public DefaultEmbeddorTest( String name )
{
super( name );
}

/**
* Tests that a project is successfully built from a file.
*/
public void testProjectBuilder() throws Exception
{
// Build the project
final File projectFile = getTestResource( "project-builder.ant" );
final Project project = getEmbeddor().createProject( projectFile.getAbsolutePath(), null, null );

// Verify the project.
assertEquals( "test-project", project.getProjectName() );
assertEquals( "main-target", project.getDefaultTargetName() );
assertEquals( projectFile.getParentFile(), project.getBaseDirectory() );
assertEquals( 0, project.getProjectNames().length );
assertEquals( 0, project.getTypeLibs().length );
assertEquals( 1, project.getTargetNames().length );

final Target implicitTarget = project.getImplicitTarget();
assertEquals( 1, implicitTarget.getTasks().length );
assertEquals( "property", implicitTarget.getTasks()[ 0 ].getName() );

final Target target = project.getTarget( "main-target" );
assertEquals( 1, target.getTasks().length );
assertEquals( "log", target.getTasks()[ 0 ].getName() );
}

/**
* Tests that a listener can be created.
*/
public void testCreateListener() throws Exception
{
final ProjectListener listener = getEmbeddor().createListener( "default" );
}

/**
* Tests that a workspace can execute a project file.
*/
public void testWorkspaceCreate() throws Exception
{
// Build the project
final File projectFile = getTestResource( "project-builder.ant" );
final Embeddor embeddor = getEmbeddor();
final Project project = embeddor.createProject( projectFile.getAbsolutePath(), null, null );

// Build the workspace
final Workspace workspace = embeddor.createWorkspace( new Parameters() );

// Install a listener
final LogMessageTracker listener = new LogMessageTracker();
workspace.addProjectListener( listener );

listener.addExpectedMessage( "main-target", "A log message" );

// Execute the default target
final String target = project.getDefaultTargetName();
workspace.executeProject( project, target );

// Cleanup
listener.assertComplete();
}
}

+ 0
- 6
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/embeddor/test/project-builder.ant View File

@@ -1,6 +0,0 @@
<project version="2.0" name="test-project" default="main-target">
<property name="some-prop" value="some-value"/>
<target name="main-target">
<log>A log message</log>
</target>
</project>

+ 0
- 166
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/test/AbstractPropertyResolverTestCase.java View File

@@ -1,166 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.property.test;

import java.io.File;
import java.util.Date;
import org.apache.antlib.core.ObjectToStringConverter;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.components.AbstractComponentTest;
import org.apache.myrmidon.components.workspace.DefaultTaskContext;
import org.apache.myrmidon.interfaces.property.PropertyResolver;

/**
* General-purpose property resolver test cases.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public abstract class AbstractPropertyResolverTestCase
extends AbstractComponentTest
{
protected final static Resources REZ = getResourcesForTested( AbstractPropertyResolverTestCase.class );

protected PropertyResolver m_resolver;
protected DefaultTaskContext m_context;

public AbstractPropertyResolverTestCase( final String name )
{
super( name );
}

protected void setUp() throws Exception
{
m_resolver = (PropertyResolver)getServiceManager().lookup( PropertyResolver.ROLE );

m_context = new DefaultTaskContext( null, null, getLogger() );
m_context.setProperty( "intProp", new Integer( 333 ) );
m_context.setProperty( "stringProp", "String property" );

registerConverter( ObjectToStringConverter.class, Object.class, String.class );
}

/**
* Creates an instance of a component. Sub-classes can override this
* method to add a particular implementation to the set of test components.
*/
protected Object createComponent( String role, Class defaultImpl )
throws Exception
{
if( role.equals( PropertyResolver.ROLE) )
{
return createResolver();
}
else
{
return super.createComponent( role, defaultImpl );
}
}

/**
* Creates the resolver to test.
*/
protected abstract PropertyResolver createResolver();

/**
* Test property resolution with various different typed properties.
*/
public void testPropertyTypes() throws Exception
{
testPropertyValue( new String( "String value" ) );
testPropertyValue( new Date() );
testPropertyValue( new Integer( Integer.MIN_VALUE ) );
testPropertyValue( new Double( 24234.98453 ) );
testPropertyValue( this.getClass() );
testPropertyValue( File.createTempFile( "PropertyResolverTest", null ) );
}

/**
* Simple tests with property on it's own, and accompanied by text.
*/
private void testPropertyValue( final Object propObject )
throws Exception
{
m_context.setProperty( "typedProp", propObject );
final String propString = propObject.toString();

doTestResolution( "${typedProp}", propObject, m_context );
doTestResolution( "${typedProp} with following text",
propString + " with following text", m_context );
doTestResolution( "Preceding text with ${typedProp}",
"Preceding text with " + propString, m_context );
}

/**
* Tests multiple property declarations in a single value.
*/
public void testMultipleProperties() throws Exception
{
m_context.setProperty( "prop1", "value1" );
m_context.setProperty( "prop2", "value2" );
m_context.setProperty( "int1", new Integer( 123 ) );

doTestResolution( "${prop1}${prop2}", "value1value2", m_context );
doTestResolution( "${prop1}${prop1}${prop1}", "value1value1value1", m_context );
doTestResolution( "before ${prop2} between ${prop1} after",
"before value2 between value1 after", m_context );
doTestResolution( "${prop1}-${int1}-${prop2}", "value1-123-value2", m_context );
}

/**
* Tests illegal property syntax.
*/
public void testInvalidTypeDeclarations() throws Exception
{

doTestFailure( "${unclosed",
REZ.getString( "prop.mismatched-braces.error" ),
m_context );
doTestFailure( "${",
REZ.getString( "prop.mismatched-braces.error" ),
m_context );

/* TODO - need to handle these cases. */
// testFailure( "${bad${}", "", m_context );
// testFailure( "${ }", "", m_context );
}

/**
* Resolves the property using the supplied context, and checks the result.
*/
protected void doTestResolution( final String value,
final Object expected,
final TaskContext context )
throws Exception
{
final Object resolved = m_resolver.resolveProperties( value, context );

assertEquals( expected, resolved );
}

/**
* Attempts to resolve the value using the supplied context, expecting to
* fail with the supplied error message.
*/
protected void doTestFailure( final String value,
final String expectedErrorMessage,
final TaskContext context )
{
try
{
m_resolver.resolveProperties( value, context );
fail( "Unexpected sucess - test should have failed." );
}
catch( TaskException e )
{
assertSameMessage( expectedErrorMessage, e );
}
}
}

+ 0
- 42
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/test/ClassicPropertyResolverTestCase.java View File

@@ -1,42 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.property.test;

import org.apache.myrmidon.interfaces.property.PropertyResolver;
import org.apache.myrmidon.components.property.test.AbstractPropertyResolverTestCase;
import org.apache.myrmidon.components.property.ClassicPropertyResolver;

/**
* A test for {@link org.apache.myrmidon.components.property.ClassicPropertyResolver}.
*
* @author <a href="mailto:darrell@apache.org">Darrell DeBoer</a>
* @version $Revision$ $Date$
*/
public class ClassicPropertyResolverTestCase
extends AbstractPropertyResolverTestCase
{
public ClassicPropertyResolverTestCase( String name )
{
super( name );
}

protected PropertyResolver createResolver()
{
return new ClassicPropertyResolver();
}

/**
* Tests handing undefined property.
*/
public void testUndefinedProp() throws Exception
{
final String undefinedProp = "undefinedProperty";
final String propRef = "${" + undefinedProp + "}";
doTestResolution( propRef, propRef, m_context );
}
}

+ 0
- 48
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/property/test/DefaultPropertyResolverTestCase.java View File

@@ -1,48 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.property.test;

import org.apache.myrmidon.interfaces.property.PropertyResolver;
import org.apache.myrmidon.components.property.test.AbstractPropertyResolverTestCase;
import org.apache.myrmidon.components.property.DefaultPropertyResolver;

/**
* Functional tests for {@link org.apache.myrmidon.components.property.DefaultPropertyResolver}.
*
* @author <a href="mailto:darrell@apache.org">Darrell DeBoer</a>
* @version $Revision$ $Date$
*/
public class DefaultPropertyResolverTestCase
extends AbstractPropertyResolverTestCase
{
public DefaultPropertyResolverTestCase( final String name )
{
super( name );
}

protected PropertyResolver createResolver()
{
return new DefaultPropertyResolver();
}

/**
* Tests handing undefined property.
*/
public void testUndefinedProp() throws Exception
{
final String undefinedProp = "undefinedProperty";
doTestFailure( "${" + undefinedProp + "}",
REZ.getString( "prop.missing-value.error", undefinedProp ),
m_context );

//TODO - "" should be disallowed as a property name
doTestFailure( "${}",
REZ.getString( "prop.missing-value.error", "" ),
m_context );
}
}

+ 0
- 182
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/role/test/DefaultRoleManagerTestCase.java View File

@@ -1,182 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.role.test;

import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.myrmidon.AbstractMyrmidonTest;
import org.apache.myrmidon.components.role.DefaultRoleManager;
import org.apache.myrmidon.api.Task;
import org.apache.myrmidon.interfaces.role.RoleException;
import org.apache.myrmidon.interfaces.role.RoleInfo;
import org.apache.myrmidon.interfaces.role.RoleManager;

/**
* Test cases for the DefaultRoleManager.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class DefaultRoleManagerTestCase
extends AbstractMyrmidonTest
{
private final static Resources REZ = getResourcesForTested( DefaultRoleManagerTestCase.class );

private RoleManager m_roleManager;

public DefaultRoleManagerTestCase( String name )
{
super( name );
}

protected void setUp() throws Exception
{
m_roleManager = new DefaultRoleManager();
}

/**
* Tests looking up a role by name, shorthand and type.
*/
public void testLookup() throws Exception
{
final String roleName = "role-name";
final String shorthand = "role-shorthand";
final RoleInfo origRole = new RoleInfo( roleName, shorthand, Task.class );
m_roleManager.addRole( origRole );

// Lookup the role
RoleInfo role = m_roleManager.getRole( roleName );
assertTrue( origRole.equals( role ) );

// Lookup the role by shorthand
role = m_roleManager.getRoleByShorthandName( shorthand );
assertTrue( origRole.equals( role ) );

// Lookup the role by type
role = m_roleManager.getRoleByType( Task.class );
assertTrue( origRole.equals( role ) );

// Lookup an unknown role
RoleInfo unknownRole = m_roleManager.getRole( "unknown" );
assertNull( unknownRole );

// Lookup an unknown shorthand
unknownRole = m_roleManager.getRoleByShorthandName( "unknown" );
assertNull( unknownRole );

// Lookup an unknown role
unknownRole = m_roleManager.getRoleByType( DefaultRoleManagerTestCase.class );
assertNull( unknownRole );
}

/**
* Tests inheriting roles from parent role manager.
*/
public void testParent() throws Exception
{
final String roleName = "role-name";
final String shorthand = "shorthand";
final RoleInfo origRole = new RoleInfo( roleName, shorthand, Task.class );
m_roleManager.addRole( origRole );
final RoleManager roleManager = new DefaultRoleManager( m_roleManager );

// Lookup by name
RoleInfo roleInfo = roleManager.getRole( roleName );
assertTrue( origRole.equals( roleInfo ) );

// Lookup by shorthand
roleInfo = roleManager.getRoleByShorthandName( shorthand );
assertTrue( origRole.equals( roleInfo ) );

// Lookup by type
roleInfo = roleManager.getRoleByType( Task.class );
assertTrue( origRole.equals( roleInfo ) );
}

/**
* Tests overriding a role in a child role manager.
*/
public void testOverrideName() throws Exception
{
final String roleName = "role-name";
final String shorthand = "shorthand";

// Add original role
final RoleInfo origRole = new RoleInfo( roleName, shorthand, Task.class );
m_roleManager.addRole( origRole );

// Override role
final RoleManager roleManager = new DefaultRoleManager( m_roleManager );
final RoleInfo overrideNameRole = new RoleInfo( roleName, "shorthand1" );
roleManager.addRole( overrideNameRole );
final RoleInfo overrideShorthandRole = new RoleInfo( "role2", shorthand );
roleManager.addRole( overrideShorthandRole );
final RoleInfo overrideTypeRole = new RoleInfo( "role3", "shorthand3", Task.class );
roleManager.addRole( overrideTypeRole );

// Lookup role by name
RoleInfo roleInfo = roleManager.getRole( roleName );
assertTrue( overrideNameRole.equals( roleInfo ) );

// Lookup role by shorthand
roleInfo = roleManager.getRoleByShorthandName( shorthand );
assertTrue( overrideShorthandRole.equals( roleInfo ) );

// Lookup role by type
roleInfo = roleManager.getRoleByType( Task.class );
assertTrue( overrideTypeRole.equals( roleInfo ) );
}

/**
* Tests adding duplicate roles.
*/
public void testDuplicate() throws Exception
{
final String roleName = "role-name";
final String shorthand = "shorthand";
final RoleInfo origRole = new RoleInfo( roleName, shorthand, Task.class );
m_roleManager.addRole( origRole );

// Duplicate role name
try
{
m_roleManager.addRole( new RoleInfo( roleName ) );
fail();
}
catch( RoleException exc )
{
final String message = REZ.getString( "duplicate-role.error", roleName );
assertSameMessage( message, exc );
}

// Duplicate shorthand
try
{
m_roleManager.addRole( new RoleInfo( "another-role", shorthand ) );
fail();
}
catch( RoleException exc )
{
final String message = REZ.getString( "duplicate-shorthand.error", shorthand );
assertSameMessage( message, exc );
}

// Duplicate type
try
{
m_roleManager.addRole( new RoleInfo( null, Task.class ) );
fail();
}
catch( RoleException exc )
{
final String message = REZ.getString( "duplicate-type.error", Task.class.getName() );
assertSameMessage( message, exc );
}
}

}

+ 0
- 145
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/service/test/InstantiatingServiceManagerTestCase.java View File

@@ -1,145 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.service.test;

import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.myrmidon.components.AbstractComponentTest;
import org.apache.myrmidon.components.service.InstantiatingServiceManager;
import org.apache.myrmidon.interfaces.role.RoleInfo;
import org.apache.myrmidon.interfaces.role.RoleManager;
import org.apache.myrmidon.interfaces.service.ServiceFactory;
import org.apache.myrmidon.interfaces.type.DefaultTypeFactory;
import org.apache.myrmidon.interfaces.type.TypeManager;

/**
* Test cases for the default service manager.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class InstantiatingServiceManagerTestCase
extends AbstractComponentTest
{
private final static Resources REZ = getResourcesForTested( InstantiatingServiceManagerTestCase.class );

private InstantiatingServiceManager m_serviceManager;
private Parameters m_parameters = new Parameters();

public InstantiatingServiceManagerTestCase( final String name )
{
super( name );
}

/**
* Setup the test case - prepares the set of components.
*/
protected void setUp()
throws Exception
{
// Set-up the service manager
m_serviceManager = new InstantiatingServiceManager();
m_serviceManager.enableLogging( getLogger() );
m_serviceManager.service( getServiceManager() );
m_serviceManager.parameterize( m_parameters );
}

/**
* Tests service instantiation.
*/
public void testCreateService() throws Exception
{
final String serviceRoleName = "test-service";

// Setup the test service
registerFactory( serviceRoleName, TestService.class, TestServiceFactory1.class );

// Create the service
Object service = m_serviceManager.lookup( serviceRoleName );

// Check service is of the expected class (don't use instanceof)
assertTrue( service.getClass() == TestServiceImpl1.class );
}

/**
* Tests service lookup.
*/
public void testLookup() throws Exception
{
final String serviceRoleName = "test-service";

// Setup the test service
registerFactory( serviceRoleName, TestService.class, TestServiceFactory1.class );

// Check whether the service can be instantiated
boolean hasService = m_serviceManager.hasService( serviceRoleName );
assertTrue( hasService );
}

/**
* Tests that a service factory and service instance are taken through
* the lifecycle steps.
*/
public void testLifecycle() throws Exception
{
final String serviceRoleName = "test-service";

// Setup the test service
registerFactory( serviceRoleName, TestService.class, TestServiceFactory2.class );

// Create the service
TestService service = (TestService)m_serviceManager.lookup( serviceRoleName );

// Check service is of the expected class (don't use instanceof)
assertTrue( service.getClass() == TestServiceImpl2.class );

// Assert the service has been setup correctly
service.doWork();
}

/**
* Tests looking up an unknown service.
*/
public void testUnknownService() throws Exception
{
// Make sure that hasService() works correctly
final String serviceRole = "some-unknown-service";
assertTrue( !m_serviceManager.hasService( serviceRole ) );

// Make sure that lookup() fails
try
{
m_serviceManager.lookup( serviceRole );
fail();
}
catch( ServiceException e )
{
final String message = REZ.getString( "create-service.error", serviceRole );
assertSameMessage( message, e );
}
}

/**
* Registers a service factory.
*/
private void registerFactory( final String serviceRoleName,
final Class serviceType,
final Class factoryClass )
throws Exception
{
// TODO - add stuff to TypeDeployer to do this instead
final RoleManager roleManager = (RoleManager)getServiceManager().lookup( RoleManager.ROLE );
roleManager.addRole( new RoleInfo( serviceRoleName, null, serviceType ) );
final DefaultTypeFactory typeFactory = new DefaultTypeFactory( getClass().getClassLoader() );
typeFactory.addNameClassMapping( serviceRoleName, factoryClass.getName() );
final TypeManager typeManager = (TypeManager)getServiceManager().lookup( TypeManager.ROLE );
typeManager.registerType( ServiceFactory.ROLE, serviceRoleName, typeFactory );
}
}

+ 0
- 67
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/service/test/LifecycleValidator.java View File

@@ -1,67 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.service.test;

import junit.framework.Assert;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.logger.LogEnabled;
import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.parameters.ParameterException;
import org.apache.avalon.framework.parameters.Parameterizable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;

/**
* A basic class that asserts that the object is correctly set-up.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class LifecycleValidator
extends Assert
implements LogEnabled, Serviceable, Parameterizable, Initializable
{
private String m_state = STATE_NOT_INIT;

private final static String STATE_NOT_INIT = "not-prepared";
private final static String STATE_LOG_ENABLED = "log-enabled";
private final static String STATE_SERVICED = "serviced";
private final static String STATE_PARAMETERISED = "parameterised";
protected final static String STATE_INITIALISED = "initialised";

public void enableLogging( final Logger logger )
{
assertEquals( STATE_NOT_INIT, m_state );
m_state = STATE_LOG_ENABLED;
}

public void service( final ServiceManager serviceManager ) throws ServiceException
{
assertEquals( STATE_LOG_ENABLED, m_state );
m_state = STATE_SERVICED;
}

public void parameterize( Parameters parameters ) throws ParameterException
{
assertEquals( STATE_SERVICED, m_state );
m_state = STATE_PARAMETERISED;
}

public void initialize() throws Exception
{
assertEquals( STATE_PARAMETERISED, m_state );
m_state = STATE_INITIALISED;
}

protected void assertSetup()
{
assertEquals( STATE_INITIALISED, m_state );
}
}

+ 0
- 19
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/service/test/TestService.java View File

@@ -1,19 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.service.test;

/**
* A service interface.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public interface TestService
{
void doWork();
}

+ 0
- 30
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/service/test/TestServiceFactory1.java View File

@@ -1,30 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.service.test;

import org.apache.myrmidon.interfaces.service.AntServiceException;
import org.apache.myrmidon.interfaces.service.ServiceFactory;

/**
* A test service factory.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class TestServiceFactory1
implements ServiceFactory
{
/**
* Create a service that coresponds to this factory.
*/
public Object createService()
throws AntServiceException
{
return new TestServiceImpl1();
}
}

+ 0
- 34
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/service/test/TestServiceFactory2.java View File

@@ -1,34 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.service.test;

import org.apache.myrmidon.interfaces.service.AntServiceException;
import org.apache.myrmidon.interfaces.service.ServiceFactory;
import org.apache.myrmidon.components.service.test.LifecycleValidator;

/**
* A test service factory, which asserts that the factory has been properly
* set-up before it is used.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class TestServiceFactory2
extends LifecycleValidator
implements ServiceFactory
{
/**
* Create a service that corresponds to this factory.
*/
public Object createService()
throws AntServiceException
{
assertSetup();
return new TestServiceImpl2();
}
}

+ 0
- 24
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/service/test/TestServiceImpl1.java View File

@@ -1,24 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.service.test;

import org.apache.myrmidon.components.service.test.TestService;

/**
* A test service implementation.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class TestServiceImpl1
implements TestService
{
public void doWork()
{
}
}

+ 0
- 27
proposal/myrmidon/src/testcases/org/apache/myrmidon/components/service/test/TestServiceImpl2.java View File

@@ -1,27 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.components.service.test;

import org.apache.myrmidon.components.service.test.LifecycleValidator;
import org.apache.myrmidon.components.service.test.TestService;

/**
* A test service that asserts it has been set-up correctly.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class TestServiceImpl2
extends LifecycleValidator
implements TestService
{
public void doWork()
{
assertSetup();
}
}

+ 0
- 99
proposal/myrmidon/src/testcases/org/apache/myrmidon/framework/file/test/PathTestCase.java View File

@@ -1,99 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.myrmidon.framework.file.test;

import java.io.File;
import org.apache.avalon.excalibur.io.FileUtil;
import org.apache.myrmidon.AbstractProjectTest;
import org.apache.myrmidon.LogMessageTracker;

/**
* Test-cases for the <path> data type.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
public class PathTestCase
extends AbstractProjectTest
{
public PathTestCase( final String name )
{
super( name );
}

/**
* Tests setting the location attribute.
*/
public void testLocationAttribute() throws Exception
{
testPathContent( "set-location", new String[] { "location" } );
}

/**
* Tests setting the path attribute.
*/
public void testPathAttribute() throws Exception
{
// Test a path with a single file
testPathContent( "set-path", new String[] { "single-file" } );

// Test a path with several files, using ; separator
testPathContent( "set-multi-path", new String[] { "file1", "file2", ".." } );

// Test a path with several files, using : separator
testPathContent( "set-multi-path2", new String[] { "file1", "file2", ".." } );
}

/**
* Test using nested <path> elements.
*/
public void testPathElement() throws Exception
{
testPathContent( "nested-path", new String[] { "some-file" } );
testPathContent( "mixed-path", new String[] { "file1", "file2", "file3", "file4", "file5" } );
}

/**
* Test using nested <fileset> elements.
*/
public void testFilesetElement() throws Exception
{
testPathContent( "set-fileset", new String[] { "path.ant" } );
}

/**
* Test using a nested custom file list implementation.
*/
public void testCustomFileList() throws Exception
{
testPathContent( "test-custom-file-list", new String[] { "file1" } );
}

/**
* Executes a target, and asserts that a particular list of file names
* is logged.
*/
private void testPathContent( final String targetName,
final String[] files ) throws Exception
{
final File projectFile = getTestResource( "path.ant" );
final File baseDir = projectFile.getParentFile();

// Add each of the expected file names
final LogMessageTracker listener = new LogMessageTracker();
for( int i = 0; i < files.length; i++ )
{
final String fileName = files[ i ];
final File file = FileUtil.resolveFile( baseDir, fileName );
listener.addExpectedMessage( targetName, file.getAbsolutePath() );
}

// Execute the target
executeTarget( projectFile, targetName, listener );
}
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save