diff --git a/src/etc/testcases/types/mappers/define.mapperresult.xml b/src/etc/testcases/types/mappers/define.mapperresult.xml new file mode 100644 index 000000000..9ea447f14 --- /dev/null +++ b/src/etc/testcases/types/mappers/define.mapperresult.xml @@ -0,0 +1,5 @@ + + + diff --git a/src/etc/testcases/types/mappers/globmapper.xml b/src/etc/testcases/types/mappers/globmapper.xml new file mode 100644 index 000000000..08e1f2da2 --- /dev/null +++ b/src/etc/testcases/types/mappers/globmapper.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/etc/testcases/types/mappers/regexpmapper.xml b/src/etc/testcases/types/mappers/regexpmapper.xml new file mode 100644 index 000000000..cf3b65f7a --- /dev/null +++ b/src/etc/testcases/types/mappers/regexpmapper.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/testcases/org/apache/tools/ant/types/mappers/GlobMapperTest.java b/src/testcases/org/apache/tools/ant/types/mappers/GlobMapperTest.java new file mode 100644 index 000000000..11bddb477 --- /dev/null +++ b/src/testcases/org/apache/tools/ant/types/mappers/GlobMapperTest.java @@ -0,0 +1,42 @@ +/* + * Copyright 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.tools.ant.types.mappers; + +import org.apache.tools.ant.BuildFileTest; + +/** + * Testcase for the <globmapper> mapper. + * + */ +public class GlobMapperTest extends BuildFileTest { + public GlobMapperTest(String name) { + super(name); + } + public void setUp() { + configureProject("src/etc/testcases/types/mappers/globmapper.xml"); + } + + public void testIgnoreCase() { + executeTarget("ignore.case"); + } + public void testHandleDirChar() { + executeTarget("handle.dirchar"); + } +} + + diff --git a/src/testcases/org/apache/tools/ant/types/mappers/MapperResult.java b/src/testcases/org/apache/tools/ant/types/mappers/MapperResult.java new file mode 100644 index 000000000..3a4b94c2c --- /dev/null +++ b/src/testcases/org/apache/tools/ant/types/mappers/MapperResult.java @@ -0,0 +1,97 @@ +/* + * Copyright 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.tools.ant.types.mappers; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Task; +import org.apache.tools.ant.types.Mapper; +import org.apache.tools.ant.util.FileNameMapper; + +/** + * This is a test task to show the result of a mapper + * on a specific input. + * (Test is not in the name of the class, to make sure that + * it is not treated as a unit test. + */ + +public class MapperResult extends Task { + + private String failMessage = ""; + private String input; + private String output; + private FileNameMapper fileNameMapper; + + public void setFailMessage(String failMessage) { + this.failMessage = failMessage; + } + + public void setInput(String input) { + this.input = input; + } + + public void setOutput(String output) { + this.output = output; + } + + public void addConfiguredMapper(Mapper mapper) { + add(mapper.getImplementation()); + } + + public void add(FileNameMapper fileNameMapper) { + if (this.fileNameMapper != null) { + throw new BuildException("Only one mapper type nested element allowed"); + } + this.fileNameMapper = fileNameMapper; + } + + public void execute() { + if (input == null) { + throw new BuildException("Missing attribute 'input'"); + } + if (output == null) { + throw new BuildException("Missing attribute 'output'"); + } + if (fileNameMapper == null) { + throw new BuildException("Missing a nested file name mapper type element"); + } + String[] result = fileNameMapper.mapFileName(input); + String flattened; + if (result == null) { + flattened = ""; + } else { + StringBuffer b = new StringBuffer(); + for (int i = 0; i < result.length; ++i) { + if (i != 0) { + b.append("|"); + } + b.append(result[i]); + } + flattened = b.toString(); + } + if (!flattened.equals(output)) { + throw new BuildException( + failMessage + + " " + + "got " + + flattened + + " " + + "expected " + + output); + } + } +} diff --git a/src/testcases/org/apache/tools/ant/types/mappers/RegexpPatternMapperTest.java b/src/testcases/org/apache/tools/ant/types/mappers/RegexpPatternMapperTest.java new file mode 100644 index 000000000..3ad7f8bcb --- /dev/null +++ b/src/testcases/org/apache/tools/ant/types/mappers/RegexpPatternMapperTest.java @@ -0,0 +1,42 @@ +/* + * Copyright 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.tools.ant.types.mappers; + +import org.apache.tools.ant.BuildFileTest; + +/** + * Testcase for the <regexpmapper> mapper. + * + */ +public class RegexpPatternMapperTest extends BuildFileTest { + public RegexpPatternMapperTest(String name) { + super(name); + } + public void setUp() { + configureProject("src/etc/testcases/types/mappers/regexpmapper.xml"); + } + + public void testIgnoreCase() { + executeTarget("ignore.case"); + } + public void testHandleDirChar() { + executeTarget("handle.dirchar"); + } +} + +