You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by tf...@apache.org on 2010/02/16 18:16:02 UTC

svn commit: r910600 [15/29] - in /db/torque/torque4/trunk: maven-torque-gf-plugin/ maven-torque-gf-plugin/src/ maven-torque-gf-plugin/src/main/ maven-torque-gf-plugin/src/main/java/ maven-torque-gf-plugin/src/main/java/org/ maven-torque-gf-plugin/src/m...

Added: db/torque/torque4/trunk/torque-generator/src/test/deeplyNestedMergepoints/src/main/torque-gf/generatorDefs/generators.xml
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/deeplyNestedMergepoints/src/main/torque-gf/generatorDefs/generators.xml?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/deeplyNestedMergepoints/src/main/torque-gf/generatorDefs/generators.xml (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/deeplyNestedMergepoints/src/main/torque-gf/generatorDefs/generators.xml Tue Feb 16 17:15:43 2010
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+-->
+
+<generators xmlns="http://db.apache.org/torque/gf/4.0/configuration"
+    xsi:schemaLocation="http://db.apache.org/torque/gf/4.0/configuration http://db.apache.org/torque/gf/4.0/generator.xsd"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <generator name="nestingGenerator0"
+      xsi:type="velocityGenerator" 
+      path="nesting.vm">
+    <mergepoint name="mergepoint">
+      <action xsi:type="applyAction" generator="nestingGenerator1"/>
+    </mergepoint>
+  </generator>
+  <generator name="nestingGenerator1"
+      xsi:type="velocityGenerator" 
+      path="nesting.vm">
+    <mergepoint name="mergepoint">
+      <action xsi:type="applyAction" generator="nestingGenerator2"/>
+    </mergepoint>
+  </generator>
+  <generator name="nestingGenerator2"
+      xsi:type="velocityGenerator" 
+      path="nesting.vm">
+    <mergepoint name="mergepoint">
+      <action xsi:type="applyAction" generator="nestingGenerator3"/>
+    </mergepoint>
+  </generator>
+  <generator name="nestingGenerator3"
+      xsi:type="velocityGenerator" 
+      path="nesting.vm">
+    <mergepoint name="mergepoint">
+      <action xsi:type="applyAction" generator="nestingGenerator4"/>
+    </mergepoint>
+  </generator>
+  <generator name="nestingGenerator4"
+      xsi:type="velocityGenerator" 
+      path="nesting.vm">
+    <mergepoint name="mergepoint">
+      <action xsi:type="applyAction" generator="nestingGenerator5"/>
+    </mergepoint>
+  </generator>
+  <generator name="nestingGenerator5"
+      xsi:type="velocityGenerator" 
+      path="nesting.vm">
+    <mergepoint name="mergepoint">
+      <action xsi:type="applyAction" generator="nestingGenerator6"/>
+    </mergepoint>
+  </generator>
+  <generator name="nestingGenerator6"
+      xsi:type="velocityGenerator" 
+      path="nesting.vm">
+    <mergepoint name="mergepoint">
+      <action xsi:type="applyAction" generator="nestingGenerator7"/>
+    </mergepoint>
+  </generator>
+  <generator name="nestingGenerator7"
+      xsi:type="velocityGenerator" 
+      path="nesting.vm">
+    <mergepoint name="mergepoint">
+      <action xsi:type="applyAction" generator="nestingGenerator8"/>
+    </mergepoint>
+  </generator>
+  <generator name="nestingGenerator8"
+      xsi:type="velocityGenerator" 
+      path="nesting.vm">
+    <mergepoint name="mergepoint">
+      <action xsi:type="applyAction" generator="nestingGenerator9"/>
+    </mergepoint>
+  </generator>
+  <generator name="nestingGenerator9"
+      xsi:type="velocityGenerator" 
+      path="nesting.vm">
+    <mergepoint name="mergepoint">
+      <action xsi:type="applyAction" generator="contentGenerator"/>
+    </mergepoint>
+  </generator>
+  <generator name="contentGenerator"
+      xsi:type="velocityGenerator" 
+      path="content.vm"/>
+</generators>
\ No newline at end of file

Added: db/torque/torque4/trunk/torque-generator/src/test/deeplyNestedMergepoints/src/main/torque-gf/src/source.xml
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/deeplyNestedMergepoints/src/main/torque-gf/src/source.xml?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/deeplyNestedMergepoints/src/main/torque-gf/src/source.xml (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/deeplyNestedMergepoints/src/main/torque-gf/src/source.xml Tue Feb 16 17:15:43 2010
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+-->
+
+<sourceElement />
\ No newline at end of file

Added: db/torque/torque4/trunk/torque-generator/src/test/deeplyNestedMergepoints/src/main/torque-gf/templates/content.vm
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/deeplyNestedMergepoints/src/main/torque-gf/templates/content.vm?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/deeplyNestedMergepoints/src/main/torque-gf/templates/content.vm (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/deeplyNestedMergepoints/src/main/torque-gf/templates/content.vm Tue Feb 16 17:15:43 2010
@@ -0,0 +1,18 @@
+## Licensed to the Apache Software Foundation (ASF) under one
+## or more contributor license agreements.  See the NOTICE file
+## distributed with this work for additional information
+## regarding copyright ownership.  The ASF licenses this file
+## to you 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.
+##
+content
\ No newline at end of file

Added: db/torque/torque4/trunk/torque-generator/src/test/deeplyNestedMergepoints/src/main/torque-gf/templates/nesting.vm
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/deeplyNestedMergepoints/src/main/torque-gf/templates/nesting.vm?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/deeplyNestedMergepoints/src/main/torque-gf/templates/nesting.vm (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/deeplyNestedMergepoints/src/main/torque-gf/templates/nesting.vm Tue Feb 16 17:15:43 2010
@@ -0,0 +1,18 @@
+## Licensed to the Apache Software Foundation (ASF) under one
+## or more contributor license agreements.  See the NOTICE file
+## distributed with this work for additional information
+## regarding copyright ownership.  The ASF licenses this file
+## to you 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.
+##
+$torqueGf.mergepoint("mergepoint")
\ No newline at end of file

Added: db/torque/torque4/trunk/torque-generator/src/test/fileSourcesImpl/1.properties
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/fileSourcesImpl/1.properties?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/fileSourcesImpl/1.properties (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/fileSourcesImpl/1.properties Tue Feb 16 17:15:43 2010
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+
+1=1
\ No newline at end of file

Added: db/torque/torque4/trunk/torque-generator/src/test/fileSourcesImpl/11.properties
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/fileSourcesImpl/11.properties?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/fileSourcesImpl/11.properties (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/fileSourcesImpl/11.properties Tue Feb 16 17:15:43 2010
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+
+11=11
\ No newline at end of file

Added: db/torque/torque4/trunk/torque-generator/src/test/fileSourcesImpl/subfolder/2.properties
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/fileSourcesImpl/subfolder/2.properties?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/fileSourcesImpl/subfolder/2.properties (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/fileSourcesImpl/subfolder/2.properties Tue Feb 16 17:15:43 2010
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+
+2=2
\ No newline at end of file

Added: db/torque/torque4/trunk/torque-generator/src/test/fileSourcesImpl/subfolder/subsubfolder/3.properties
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/fileSourcesImpl/subfolder/subsubfolder/3.properties?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/fileSourcesImpl/subfolder/subsubfolder/3.properties (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/fileSourcesImpl/subfolder/subsubfolder/3.properties Tue Feb 16 17:15:43 2010
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+
+3=3
\ No newline at end of file

Added: db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/BaseTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/BaseTest.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/BaseTest.java (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/BaseTest.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,34 @@
+package org.apache.torque.gf;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+import org.apache.log4j.BasicConfigurator;
+
+/**
+ * Base class for all tests. Configures the logger.
+ */
+public abstract class BaseTest
+{
+
+    static
+    {
+        BasicConfigurator.configure();
+    }
+}

Added: db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/configuration/ReadConfigurationTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/configuration/ReadConfigurationTest.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/configuration/ReadConfigurationTest.java (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/configuration/ReadConfigurationTest.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,881 @@
+package org.apache.torque.gf.configuration;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.torque.gf.BaseTest;
+import org.apache.torque.gf.configuration.controller.GeneratorReference;
+import org.apache.torque.gf.configuration.controller.Loglevel;
+import org.apache.torque.gf.configuration.controller.Output;
+import org.apache.torque.gf.configuration.generator.GeneratorConfiguration;
+import org.apache.torque.gf.configuration.mergepoint.MergepointMapping;
+import org.apache.torque.gf.configuration.option.MapOptionsConfiguration;
+import org.apache.torque.gf.configuration.option.OptionsConfiguration;
+import org.apache.torque.gf.configuration.paths.CustomProjectPaths;
+import org.apache.torque.gf.configuration.paths.DefaultTorqueGfPaths;
+import org.apache.torque.gf.configuration.paths.Maven2DirectoryProjectPaths;
+import org.apache.torque.gf.configuration.paths.ProjectPaths;
+import org.apache.torque.gf.control.ControllerState;
+import org.apache.torque.gf.control.action.ApplyAction;
+import org.apache.torque.gf.control.action.MergepointAction;
+import org.apache.torque.gf.control.action.TraverseAllAction;
+import org.apache.torque.gf.generator.Generator;
+import org.apache.torque.gf.java.JavaGenerator;
+import org.apache.torque.gf.option.Option;
+import org.apache.torque.gf.option.OptionImpl;
+import org.apache.torque.gf.option.Options;
+import org.apache.torque.gf.qname.QualifiedName;
+import org.apache.torque.gf.source.FileSourcesImpl;
+import org.apache.torque.gf.source.TransformerDefinition;
+import org.apache.torque.gf.source.properties.PropertiesSourceType;
+import org.apache.torque.gf.source.xml.XmlSourceType;
+import org.apache.torque.gf.template.velocity.VelocityGenerator;
+import org.junit.Test;
+
+
+/**
+ * Tests whether the configuration is read correctly.
+ */
+public class ReadConfigurationTest extends BaseTest
+{
+    private ControllerState controllerState = new ControllerState();
+
+    @Test
+    public void testReadConfiguration() throws Exception
+    {
+        ProjectPaths projectPaths = new Maven2DirectoryProjectPaths(
+                new File("src/test/configuration"));
+        UnitDescriptor unitDescriptor = new UnitDescriptor(
+                UnitDescriptor.Packaging.DIRECTORY,
+                projectPaths,
+                new DefaultTorqueGfPaths());
+        UnitConfigurationReader configurationReader
+                = new UnitConfigurationReader();
+        ConfigurationHandlers configurationHandlers
+                = new ConfigurationHandlers();
+        UnitConfiguration unitConfiguration
+                = configurationReader.read(
+                        unitDescriptor,
+                        configurationHandlers);
+
+        {
+            File newFileTargetDirectory
+                    = unitConfiguration.getNewFileTargetDirectory();
+            File expected = new File(
+                    "src/test/configuration/target/generated-sources");
+            assertEquals(expected, newFileTargetDirectory);
+        }
+        {
+            File modifiedFileTargetDirectory
+                    = unitConfiguration.getModifiedFileTargetDirectory();
+            File expected = new File(
+                    "src/test/configuration/src/main/generated-sources");
+            assertEquals(expected, modifiedFileTargetDirectory);
+        }
+
+        assertEquals(Loglevel.DEBUG, unitConfiguration.getLoglevel());
+
+        {
+            Options options = unitConfiguration.getOptions();
+
+            Map<QualifiedName, Option> globalScope = options.getGlobalScope();
+            assertEquals(4, globalScope.size());
+
+            // check normal options
+            {
+                QualifiedName optionWithNamespaceQName
+                        = new QualifiedName(
+                                "org.apache.torque.gf.optionWithNamespace");
+                Option optionWithNamespace
+                        = globalScope.get(optionWithNamespaceQName);
+                assertEquals(
+                        new OptionImpl(
+                                optionWithNamespaceQName,
+                                "optionWithNamespaceValue"),
+                        optionWithNamespace);
+            }
+            {
+                QualifiedName optionWithNamespaceQName
+                        = new QualifiedName(
+                                "org.apache.optionWithNamespace");
+                Option optionWithNamespace
+                        = globalScope.get(optionWithNamespaceQName);
+                assertEquals(
+                        new OptionImpl(
+                                optionWithNamespaceQName,
+                                "org.apache.optionWithNamespaceValue"),
+                        optionWithNamespace);
+            }
+            {
+                QualifiedName optionWithNamespaceQName
+                        = new QualifiedName(
+                                "optionWithoutNamespace", "");
+                Option optionWithNamespace
+                        = globalScope.get(optionWithNamespaceQName);
+                assertEquals(
+                        new OptionImpl(
+                                optionWithNamespaceQName,
+                                "optionWithoutNamespaceValue"),
+                        optionWithNamespace);
+            }
+            // check option from last file takes precedence
+            {
+                QualifiedName optionWithNamespaceQName
+                        = new QualifiedName(
+                                "optionPrecedenceLastFile");
+                Option optionWithNamespace
+                        = globalScope.get(optionWithNamespaceQName);
+                assertEquals(
+                        new OptionImpl(
+                                optionWithNamespaceQName,
+                                "value from xml"),
+                        optionWithNamespace);
+            }
+        }
+
+        {
+            List<Output> outputFiles = unitConfiguration.getOutputFiles();
+            assertEquals(3, outputFiles.size());
+
+            {
+                Output outputFile = outputFiles.get(0);
+                assertEquals(
+                        outputFile.getName(),
+                        new QualifiedName("org.apache.torque.gf.firstOutput"));
+
+                {
+                    GeneratorReference generatorConfiguration
+                            = outputFile.getContentGenerator();
+                    assertEquals(
+                            new QualifiedName(
+                                "org.apache.torque.gf.test.readConfiguration.javaGenerator"),
+                            generatorConfiguration.getName());
+                }
+
+                assertNull(outputFile.getFilename());
+                assertTrue(outputFile.isSkipIfExists());
+
+                {
+                    JavaGenerator filenameGenerator
+                            = (JavaGenerator) outputFile.getFilenameGenerator();
+                    assertEquals("Foo", filenameGenerator.getFoo());
+                    assertEquals("Bar", filenameGenerator.getBar());
+                    assertEquals(
+                            new QualifiedName(
+                                    "org.apache.torque.gf.configuration.filenameGenerator"),
+                            filenameGenerator.getName());
+                }
+
+                {
+                    FileSourcesImpl sources = new FileSourcesImpl(
+                            new XmlSourceType(),
+                            "source",
+                            null,
+                            null,
+                            new ArrayList<TransformerDefinition>(),
+                            configurationHandlers,
+                            projectPaths.getDefaultSourcePath());
+                    assertSourcesEquals(
+                            sources,
+                            (FileSourcesImpl) outputFile.getSources());
+                    // TODO: add source Transformers to config file & check here they are added
+                }
+            }
+
+            {
+                Output outputFile = outputFiles.get(1);
+                assertEquals(
+                        outputFile.getName(),
+                        new QualifiedName("secondOutput"));
+
+                {
+                    GeneratorReference generatorConfiguration
+                            = outputFile.getContentGenerator();
+                    assertEquals(
+                            new QualifiedName(
+                                "org.apache.torque.gf.test.readConfiguration.anotherGenerator"),
+                            generatorConfiguration.getName());
+                }
+
+
+                assertNull(outputFile.getFilename());
+                assertFalse(outputFile.isSkipIfExists());
+
+                {
+                    VelocityGenerator filenameGenerator
+                            = (VelocityGenerator) outputFile.getFilenameGenerator();
+                    String templateContent
+                            = filenameGenerator.getContent(controllerState);
+                    // remove License from template by comparing only
+                    // the last line
+                    String templateContentLicenseRemoved
+                            = StringUtils.substringAfterLast(templateContent, "\r\n");
+                    assertEquals(
+                            "test template output",
+                            templateContentLicenseRemoved);
+                    assertEquals(
+                            new QualifiedName(
+                                    "org.apache.torque.gf.configuration.filenameGenerator"),
+                            filenameGenerator.getName());
+                    assertTrue(filenameGenerator.isOptionsInContext());
+                    assertTrue(filenameGenerator.isSourceAttributesInContext());
+                    assertTrue(filenameGenerator.isVariablesInContext());
+                }
+
+                {
+                    FileSourcesImpl sources = new FileSourcesImpl(
+                            new PropertiesSourceType(),
+                            "secondSourcePath",
+                            "properties/entry",
+                            null,
+                            new ArrayList<TransformerDefinition>(),
+                            configurationHandlers,
+                            projectPaths.getDefaultSourcePath());
+                    assertSourcesEquals(
+                            sources,
+                            (FileSourcesImpl) outputFile.getSources());
+                }
+            }
+            {
+                Output outputFile = outputFiles.get(2);
+                assertEquals(
+                        outputFile.getName(),
+                        new QualifiedName("thirdOutput"));
+
+                {
+                    GeneratorReference generatorConfiguration
+                            = outputFile.getContentGenerator();
+                    assertEquals(
+                            new QualifiedName(
+                                "org.apache.torque.gf.test.readConfiguration.thirdGenerator"),
+                            generatorConfiguration.getName());
+                }
+
+
+                assertEquals("outputFileName", outputFile.getFilename());
+                assertNull(outputFile.getFilenameGenerator());
+                assertFalse(outputFile.isSkipIfExists());
+
+                {
+                    FileSourcesImpl sources = new FileSourcesImpl(
+                            null,
+                            "third.source.path.properties",
+                            null,
+                            null,
+                            new ArrayList<TransformerDefinition>(),
+                            configurationHandlers,
+                            projectPaths.getDefaultSourcePath());
+                    assertSourcesEquals(
+                            sources,
+                            (FileSourcesImpl) outputFile.getSources());
+                }
+            }
+        }
+
+        {
+            GeneratorConfiguration generatorConfiguration
+                    = unitConfiguration.getGeneratorConfiguration();
+            Map <QualifiedName, Generator> generatorMap
+                    = generatorConfiguration.getGenerators();
+            assertEquals(2, generatorMap.size());
+            {
+                JavaGenerator generator
+                        = (JavaGenerator) generatorMap.get(new QualifiedName(
+                                "org.apache.torque.gf.test.readConfiguration.javaGenerator"));
+                assertEquals("Foo2", generator.getFoo());
+                assertEquals("Bar2", generator.getBar());
+                Map<String, MergepointMapping> mergepointMappings
+                        = generator.getMergepointMappings();
+                assertEquals(3, mergepointMappings.size());
+                {
+                    MergepointMapping mergepointMapping
+                            = mergepointMappings.get("properties");
+                    assertEquals(1, mergepointMapping.getActions().size());
+                    MergepointAction action
+                            = mergepointMapping.getActions().get(0);
+                    assertEquals(
+                            new TraverseAllAction(
+                                    "entry",
+                                    "org.apache.torque.gf.velocity.propertyCopy",
+                                    true),
+                            action);
+                    assertEquals("inputElement", generator.getInputElementName());
+                }
+                {
+                    // mergepoint from the separate mapping
+                    MergepointMapping mergepointMapping
+                            = mergepointMappings.get("mergepointName");
+                    assertEquals(1, mergepointMapping.getActions().size());
+                    MergepointAction action 
+                            = mergepointMapping.getActions().get(0);
+                    assertEquals(
+                            new ApplyAction(
+                                    null,
+                                    "someGeneratorAction",
+                                    false),
+                            action);
+                    assertEquals("inputElement", generator.getInputElementName());
+                }
+                {
+                    // other mergepoint from the separate mapping
+                    MergepointMapping mergepointMapping
+                            = mergepointMappings.get("mergepointFromParent");
+                    assertEquals(1, mergepointMapping.getActions().size());
+                    MergepointAction action
+                            = mergepointMapping.getActions().get(0);
+                    assertEquals(
+                            new ApplyAction(
+                                    null,
+                                    "newGeneratorAction",
+                                    true),
+                            action);
+                    assertEquals("inputElement", generator.getInputElementName());
+                }
+            }
+
+            {
+                VelocityGenerator generator
+                        = (VelocityGenerator) generatorMap.get(new QualifiedName(
+                                "org.apache.torque.gf.test.readConfiguration.anotherGenerator"));
+                String templateContent
+                        = generator.getContent(controllerState);
+                // remove License from template by comparing only
+                // the last line
+                String templateContentLicenseRemoved
+                        = StringUtils.substringAfterLast(templateContent, "\r\n");
+                assertEquals(
+                        "test template output",
+                        templateContentLicenseRemoved);
+                assertEquals(0, generator.getMergepointMappings().size());
+                assertNull(generator.getInputElementName());
+                assertFalse(generator.isOptionsInContext());
+                assertFalse(generator.isSourceAttributesInContext());
+                assertFalse(generator.isVariablesInContext());
+            }
+        }
+    }
+
+    @Test
+    public void testReadConfigFromClasspath() throws Exception
+    {
+        ProjectPaths projectPaths = new CustomProjectPaths(
+                null,
+                "org.apache.torque.gf.test.readfromclasspath",
+                new File("src"),
+                new File("target"),
+                new File("generated-src"));
+        UnitDescriptor unitDescriptor = new UnitDescriptor(
+                UnitDescriptor.Packaging.CLASSPATH,
+                projectPaths,
+                new DefaultTorqueGfPaths());
+        ConfigurationHandlers configurationHandlers
+                = new ConfigurationHandlers();
+        UnitConfigurationReader configurationReader
+                = new UnitConfigurationReader();
+        UnitConfiguration unitConfiguration
+                = configurationReader.read(
+                        unitDescriptor,
+                        configurationHandlers);
+
+        // check that we have read the correct configuration
+        {
+            Options options = unitConfiguration.getOptions();
+            Option option  = options.getInHierarchy(
+                    new QualifiedName("configuration"));
+            assertNotNull("option configuration should be set", option);
+            assertEquals("fromClasspath", option.getValue());
+        }
+
+        // check that the generators are read
+        {
+            GeneratorConfiguration generatorConfiguration
+                    = unitConfiguration.getGeneratorConfiguration();
+            Map <QualifiedName, Generator> generatorMap
+                    = generatorConfiguration.getGenerators();
+            assertEquals(2, generatorMap.size());
+        }
+    }
+
+    @Test
+    public void testOverrideOptions() throws Exception
+    {
+        ProjectPaths projectPaths = new Maven2DirectoryProjectPaths(
+                new File("src/test/configuration"));
+        Map<String, String> overrideOptions = new HashMap<String, String>();
+        overrideOptions.put("optionWithoutNamespace", "overriddenValue");
+        overrideOptions.put("newOption", "newValue");
+        OptionsConfiguration optionConfiguration
+                = new MapOptionsConfiguration(overrideOptions);
+
+        UnitDescriptor unitDescriptor = new UnitDescriptor(
+                UnitDescriptor.Packaging.DIRECTORY,
+                projectPaths,
+                new DefaultTorqueGfPaths(),
+                null,
+                optionConfiguration,
+                null);
+        ConfigurationHandlers configurationHandlers
+                = new ConfigurationHandlers();
+        UnitConfigurationReader configurationReader
+                = new UnitConfigurationReader();
+        UnitConfiguration unitConfiguration
+                = configurationReader.read(
+                        unitDescriptor,
+                        configurationHandlers);
+        Options options = unitConfiguration.getOptions();
+        {
+            Option option = options.getInHierarchy(
+                    new QualifiedName("optionWithoutNamespace"));
+            assertEquals("overriddenValue", option.getValue());
+        }
+        {
+            Option option = options.getInHierarchy(
+                    new QualifiedName("newOption"));
+            assertEquals("newValue", option.getValue());
+        }
+    }
+
+
+    @Test
+    public void testInheritance() throws Exception
+    {
+        CustomProjectPaths projectPaths;
+        UnitConfiguration unitConfiguration;
+        ConfigurationHandlers configurationHandlers
+                = new ConfigurationHandlers();
+        {
+            CustomProjectPaths parentProjectPaths
+                    = new CustomProjectPaths(
+                            new Maven2DirectoryProjectPaths(
+                                    new File("src/test/configuration")));
+            parentProjectPaths.setConfigurationDir(
+                    new File("src/test/configuration/src/main/torque-gf-parent"));
+            parentProjectPaths.setNewFileTargetDir(
+                    new File("src/test/configuration/target/parentCustom"));
+            parentProjectPaths.setModifiedFileTargetDir(
+                    new File("src/test/configuration/src/main/parentCustom"));
+            UnitDescriptor parentUnitDescriptor = new UnitDescriptor(
+                    UnitDescriptor.Packaging.DIRECTORY,
+                    parentProjectPaths,
+                    new DefaultTorqueGfPaths(),
+                    null,
+                    null,
+                    null);
+
+            projectPaths = new CustomProjectPaths(
+                    new Maven2DirectoryProjectPaths(
+                            new File("src/test/configuration")));
+            projectPaths.setNewFileTargetDir(
+                    new File("src/test/configuration/target/custom"));
+            projectPaths.setModifiedFileTargetDir(
+                    new File("src/test/configuration/src/main/custom"));
+            UnitDescriptor unitDescriptor = new UnitDescriptor(
+                    UnitDescriptor.Packaging.DIRECTORY,
+                    projectPaths,
+                    new DefaultTorqueGfPaths(),
+                    parentUnitDescriptor,
+                    null,
+                    null);
+            UnitConfigurationReader configurationReader
+                    = new UnitConfigurationReader();
+            unitConfiguration
+                    = configurationReader.read(
+                            unitDescriptor,
+                            configurationHandlers);
+        }
+
+        assertEquals(Loglevel.DEBUG, unitConfiguration.getLoglevel());
+
+        {
+            File newFileTargetDirectory
+                    = unitConfiguration.getNewFileTargetDirectory();
+            File expected = new File("src/test/configuration/target/custom");
+            assertEquals(expected, newFileTargetDirectory);
+        }
+        {
+            File modifiedFileTargetDirectory
+                    = unitConfiguration.getModifiedFileTargetDirectory();
+            File expected = new File("src/test/configuration/src/main/custom");
+            assertEquals(expected, modifiedFileTargetDirectory);
+        }
+
+        {
+            Options options = unitConfiguration.getOptions();
+            Map<QualifiedName, Option> globalScope = options.getGlobalScope();
+            assertEquals(6, globalScope.size());
+
+            {
+                QualifiedName optionWithoutNamespaceQName
+                        = new QualifiedName("optionWithoutNamespace", "");
+                Option optionWithoutNamespace
+                        = globalScope.get(optionWithoutNamespaceQName);
+                assertEquals(
+                        new OptionImpl(
+                                optionWithoutNamespaceQName,
+                                "optionWithoutNamespaceValue"),
+                        optionWithoutNamespace);
+            }
+            {
+                QualifiedName optionWithNamespaceQName
+                        = new QualifiedName(
+                                "org.apache.torque.gf.optionWithNamespace");
+                Option optionWithNamespace
+                        = globalScope.get(optionWithNamespaceQName);
+                assertEquals(
+                        new OptionImpl(
+                                optionWithNamespaceQName,
+                                "optionWithNamespaceValue"),
+                        optionWithNamespace);
+            }
+            {
+                QualifiedName optionWithoutNamespaceQName
+                        = new QualifiedName("parentOptionWithoutNamespace", "");
+                Option optionWithoutNamespace
+                        = globalScope.get(optionWithoutNamespaceQName);
+                assertEquals(
+                        new OptionImpl(
+                                optionWithoutNamespaceQName,
+                                "parentOptionWithoutNamespaceParentValue"),
+                        optionWithoutNamespace);
+            }
+            {
+                QualifiedName optionWithNamespaceQName
+                        = new QualifiedName(
+                                "org.apache.torque.gf.parentOptionWithNamespace");
+                Option optionWithNamespace
+                        = globalScope.get(optionWithNamespaceQName);
+                assertEquals(
+                        new OptionImpl(
+                                optionWithNamespaceQName,
+                                "parentOptionWithNamespaceParentValue"),
+                        optionWithNamespace);
+            }
+        }
+        {
+            List<Output> outputFiles = unitConfiguration.getOutputFiles();
+            assertEquals(4, outputFiles.size());
+
+            {
+                Output outputFile = outputFiles.get(0);
+                assertEquals(
+                        outputFile.getName(),
+                        new QualifiedName("parentOutput"));
+                {
+                    GeneratorReference generatorConfiguration
+                            = outputFile.getContentGenerator();
+                    assertEquals(
+                            new QualifiedName(
+                                "org.apache.torque.gf.test.readConfiguration.testParentGenerator"),
+                            generatorConfiguration.getName());
+                }
+
+
+                assertNull(outputFile.getFilename());
+
+                {
+                    JavaGenerator filenameGenerator
+                            = (JavaGenerator) outputFile.getFilenameGenerator();
+                    assertEquals("ParentFoo", filenameGenerator.getFoo());
+                    assertEquals("ParentBar", filenameGenerator.getBar());
+                    assertEquals(
+                            new QualifiedName(
+                                    "org.apache.torque.gf.configuration.filenameGenerator"),
+                            filenameGenerator.getName());
+                }
+
+                {
+                    FileSourcesImpl sources = new FileSourcesImpl(
+                            new XmlSourceType(),
+                            "parentSource",
+                            null,
+                            null,
+                            new ArrayList<TransformerDefinition>(),
+                            configurationHandlers,
+                            projectPaths.getDefaultSourcePath());
+                    assertSourcesEquals(
+                            sources,
+                            (FileSourcesImpl) outputFile.getSources());
+                }
+            }
+            {
+                Output outputFile = outputFiles.get(1);
+                assertEquals(
+                        outputFile.getName(),
+                        new QualifiedName("org.apache.torque.gf.firstOutput"));
+
+                {
+                    GeneratorReference generatorConfiguration
+                            = outputFile.getContentGenerator();
+                    assertEquals(
+                            new QualifiedName(
+                                "org.apache.torque.gf.test.readConfiguration.javaGenerator"),
+                            generatorConfiguration.getName());
+                }
+
+
+                assertNull(outputFile.getFilename());
+
+                {
+                    JavaGenerator filenameGenerator
+                            = (JavaGenerator) outputFile.getFilenameGenerator();
+                    assertEquals("Foo", filenameGenerator.getFoo());
+                    assertEquals("Bar", filenameGenerator.getBar());
+                    assertEquals(
+                            new QualifiedName(
+                                    "org.apache.torque.gf.configuration.filenameGenerator"),
+                            filenameGenerator.getName());
+                }
+
+                {
+                    FileSourcesImpl sources = new FileSourcesImpl(
+                            new XmlSourceType(),
+                            "source",
+                            null,
+                            null,
+                            new ArrayList<TransformerDefinition>(),
+                            configurationHandlers,
+                            projectPaths.getDefaultSourcePath());
+                    assertSourcesEquals(
+                            sources,
+                            (FileSourcesImpl) outputFile.getSources());
+                    // TODO: add source Transformers to config file & check here they are added
+                }
+            }
+
+            {
+                Output outputFile = outputFiles.get(2);
+                assertEquals(
+                        outputFile.getName(),
+                        new QualifiedName("secondOutput"));
+
+                {
+                    GeneratorReference generatorConfiguration
+                            = outputFile.getContentGenerator();
+                    assertEquals(
+                            new QualifiedName(
+                                "org.apache.torque.gf.test.readConfiguration.anotherGenerator"),
+                            generatorConfiguration.getName());
+                }
+
+
+                assertNull(outputFile.getFilename());
+
+                {
+                    VelocityGenerator filenameGenerator
+                            = (VelocityGenerator) outputFile.getFilenameGenerator();
+                    String templateContent
+                            = filenameGenerator.getContent(controllerState);
+                    // remove License from template by comparing only
+                    // the last line
+                    String templateContentLicenseRemoved
+                            = StringUtils.substringAfterLast(templateContent, "\r\n");
+                    assertEquals(
+                            "test template output",
+                            templateContentLicenseRemoved);
+                    assertEquals(
+                            new QualifiedName(
+                                    "org.apache.torque.gf.configuration.filenameGenerator"),
+                            filenameGenerator.getName());
+                }
+
+                {
+                    FileSourcesImpl sources = new FileSourcesImpl(
+                            new PropertiesSourceType(),
+                            "secondSourcePath",
+                            "properties/entry",
+                            null,
+                            new ArrayList<TransformerDefinition>(),
+                            configurationHandlers,
+                            projectPaths.getDefaultSourcePath());
+                    assertSourcesEquals(
+                            sources,
+                            (FileSourcesImpl) outputFile.getSources());
+                }
+            }
+            {
+                Output outputFile = outputFiles.get(3);
+                assertEquals(
+                        outputFile.getName(),
+                        new QualifiedName("thirdOutput"));
+
+                {
+                    GeneratorReference generatorConfiguration
+                            = outputFile.getContentGenerator();
+                    assertEquals(
+                            new QualifiedName(
+                                "org.apache.torque.gf.test.readConfiguration.thirdGenerator"),
+                            generatorConfiguration.getName());
+                }
+
+                assertEquals("outputFileName", outputFile.getFilename());
+                assertNull(outputFile.getFilenameGenerator());
+                {
+                    FileSourcesImpl sources = new FileSourcesImpl(
+                            null,
+                            "third.source.path.properties",
+                            null,
+                            null,
+                            new ArrayList<TransformerDefinition>(),
+                            configurationHandlers,
+                            projectPaths.getDefaultSourcePath());
+                    assertSourcesEquals(
+                            sources,
+                            (FileSourcesImpl) outputFile.getSources());
+                }
+            }
+        }
+
+        {
+            GeneratorConfiguration generatorConfiguration
+                    = unitConfiguration.getGeneratorConfiguration();
+            Map <QualifiedName, Generator> generatorMap
+                    = generatorConfiguration.getGenerators();
+            assertEquals(3, generatorMap.size());
+            {
+                JavaGenerator generator
+                        = (JavaGenerator) generatorMap.get(new QualifiedName(
+                                "org.apache.torque.gf.test.readConfiguration.javaGenerator"));
+                assertEquals("Foo2", generator.getFoo());
+                assertEquals("Bar2", generator.getBar());
+                Map<String,MergepointMapping> mergepointMappings
+                        = generator.getMergepointMappings();
+                assertEquals(3, mergepointMappings.size());
+                {
+                    MergepointMapping mergepointMapping 
+                            = mergepointMappings.get("properties");
+                    assertEquals(1, mergepointMapping.getActions().size());
+                    MergepointAction action 
+                            = mergepointMapping.getActions().get(0);
+                    assertEquals(
+                            new TraverseAllAction(
+                                    "entry",
+                                    "org.apache.torque.gf.velocity.propertyCopy",
+                                    true),
+                            action);
+                    assertEquals("inputElement", generator.getInputElementName());                    
+                }
+                {
+                    // mergepoint from the separate mapping in child
+                    MergepointMapping mergepointMapping 
+                            = mergepointMappings.get("mergepointName");
+                    assertEquals(1, mergepointMapping.getActions().size());
+                    MergepointAction action 
+                            = mergepointMapping.getActions().get(0);
+                    assertEquals(
+                            new ApplyAction(
+                                    null,
+                                    "someGeneratorAction",
+                                    false),
+                            action);
+                    assertEquals("inputElement", generator.getInputElementName());
+                }
+                {
+                    // other mergepoint from the separate mapping in child
+                    MergepointMapping mergepointMapping 
+                            = mergepointMappings.get("mergepointFromParent");
+                    assertEquals(1, mergepointMapping.getActions().size());
+                    MergepointAction action 
+                            = mergepointMapping.getActions().get(0);
+                    assertEquals(
+                            new ApplyAction(
+                                    null,
+                                    "newGeneratorAction",
+                                    true),
+                            action);
+                    assertEquals("inputElement", generator.getInputElementName());
+                }
+            }
+
+            {
+                VelocityGenerator generator
+                        = (VelocityGenerator) generatorMap.get(new QualifiedName(
+                                "org.apache.torque.gf.test.readConfiguration.anotherGenerator"));
+                String templateContent
+                        = generator.getContent(controllerState);
+                // remove License from template by comparing only
+                // the last line
+                String templateContentLicenseRemoved
+                        = StringUtils.substringAfterLast(templateContent, "\r\n");
+                assertEquals(
+                        "test template output",
+                        templateContentLicenseRemoved);
+                assertEquals(0, generator.getMergepointMappings().size());
+            }
+            {
+                VelocityGenerator generator
+                        = (VelocityGenerator) generatorMap.get(new QualifiedName(
+                                "org.apache.torque.gf.test.readConfiguration.parentGenerator"));
+                String templateContent
+                        = generator.getContent(controllerState);
+                // remove License from template by comparing only
+                // the last line
+                String templateContentLicenseRemoved
+                = StringUtils.substringAfterLast(templateContent, "\r\n");
+                assertEquals(
+                        "parent test template output",
+                        templateContentLicenseRemoved);
+                assertEquals(0, generator.getMergepointMappings().size());
+            }
+        }
+    }
+
+    private static void assertSourcesEquals(
+            FileSourcesImpl expected,
+            FileSourcesImpl actual)
+    {
+        if (expected.getSourceFilter() != null)
+        {
+            assertEquals(
+                    expected.getSourceFilter().getClass(),
+                    actual.getSourceFilter().getClass());
+        }
+        else
+        {
+            assertNull(actual.getSourceFilter());
+        }
+        assertEquals(
+                expected.getStartElementsPath(),
+                actual.getStartElementsPath());
+        assertEquals(
+                expected.getTransformerDefinitions(),
+                actual.getTransformerDefinitions());
+        assertEquals(
+                expected.getType(),
+                actual.getType());
+        assertEquals(
+                expected.getPath(),
+                actual.getPath());
+        assertEquals(
+                expected.getPaths(),
+                actual.getPaths());
+    }
+}

Added: db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/control/DeeplyNestedMergepointsTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/control/DeeplyNestedMergepointsTest.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/control/DeeplyNestedMergepointsTest.java (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/control/DeeplyNestedMergepointsTest.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,73 @@
+package org.apache.torque.gf.control;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.FileReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.torque.gf.BaseTest;
+import org.apache.torque.gf.configuration.UnitDescriptor;
+import org.apache.torque.gf.configuration.paths.DefaultTorqueGfPaths;
+import org.apache.torque.gf.configuration.paths.Maven2DirectoryProjectPaths;
+import org.junit.Test;
+
+/**
+ * Tests nested mergepoints in a depth of 10 calls, and checks that the
+ * outcome is correct.
+ */
+public class DeeplyNestedMergepointsTest extends BaseTest
+{
+    @Test
+    public void testDeeplyNestedMergepointsGeneration() throws Exception
+    {
+        File targetDir = new File("src/test/deeplyNestedMergepoints/target");
+        FileUtils.deleteDirectory(targetDir);
+        Controller controller = new Controller();
+        List<UnitDescriptor> unitDescriptors = new ArrayList<UnitDescriptor>();
+        unitDescriptors.add(new UnitDescriptor(
+                UnitDescriptor.Packaging.DIRECTORY,
+                new Maven2DirectoryProjectPaths(new File("src/test/deeplyNestedMergepoints")),
+                new DefaultTorqueGfPaths()));
+        controller.run(unitDescriptors);
+
+        assertTrue(targetDir.exists());
+        File targetFile= new File(targetDir, "generated-sources/output.txt");
+        assertTrue(targetFile.exists());
+
+        FileReader fileReader = new FileReader(targetFile);
+        StringBuilder content = new StringBuilder();
+        int readChars;
+        char[] buffer = new char[50];
+        do {
+            readChars = fileReader.read(buffer);
+            if (readChars != -1) {
+                content.append(buffer, 0, readChars);
+            }
+        }
+        while (readChars != -1);
+        assertEquals("content", content.toString());
+    }
+}

Added: db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/control/PropertyToJavaGenerationTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/control/PropertyToJavaGenerationTest.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/control/PropertyToJavaGenerationTest.java (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/control/PropertyToJavaGenerationTest.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,53 @@
+package org.apache.torque.gf.control;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.torque.gf.BaseTest;
+import org.apache.torque.gf.configuration.UnitDescriptor;
+import org.apache.torque.gf.configuration.paths.DefaultTorqueGfPaths;
+import org.apache.torque.gf.configuration.paths.Maven2DirectoryProjectPaths;
+import org.junit.Test;
+
+public class PropertyToJavaGenerationTest extends BaseTest
+{
+    @Test
+    public void testPropertyToJavaGeneration() throws Exception
+    {
+        File target = new File("src/test/propertyToJava/target");
+        FileUtils.deleteDirectory(target);
+        Controller controller = new Controller();
+        List<UnitDescriptor> unitDescriptors = new ArrayList<UnitDescriptor>();
+        unitDescriptors.add(new UnitDescriptor(
+                UnitDescriptor.Packaging.DIRECTORY,
+                new Maven2DirectoryProjectPaths(new File("src/test/propertyToJava")),
+                new DefaultTorqueGfPaths()));
+        controller.run(unitDescriptors);
+        // TODO: check outcome against reference file
+        assertTrue(target.exists());
+        // TODO: check generated-sources dir
+    }
+}

Added: db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/control/PropertyToJavaJarGenerationTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/control/PropertyToJavaJarGenerationTest.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/control/PropertyToJavaJarGenerationTest.java (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/control/PropertyToJavaJarGenerationTest.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,54 @@
+package org.apache.torque.gf.control;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.torque.gf.BaseTest;
+import org.apache.torque.gf.configuration.UnitDescriptor;
+import org.apache.torque.gf.configuration.paths.DefaultTorqueGfPaths;
+import org.apache.torque.gf.configuration.paths.Maven2JarProjectPaths;
+import org.junit.Test;
+
+
+public class PropertyToJavaJarGenerationTest extends BaseTest
+{
+    @Test
+    public void testPropertyToJavaJarGeneration() throws Exception
+    {
+        File target = new File("target/test/propertyToJavaJar/target");
+        FileUtils.deleteDirectory(target);
+        Controller controller = new Controller();
+        List<UnitDescriptor> unitDescriptors = new ArrayList<UnitDescriptor>();
+        unitDescriptors.add(new UnitDescriptor(
+                UnitDescriptor.Packaging.JAR,
+                new Maven2JarProjectPaths(
+                        new File("target/test/propertyToJavaJar"),
+                        "propertyToJava.jar"),
+                new DefaultTorqueGfPaths()));
+        controller.run(unitDescriptors);
+        assertTrue(target.exists());
+    }
+}

Added: db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/control/TokenReplacerTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/control/TokenReplacerTest.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/control/TokenReplacerTest.java (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/control/TokenReplacerTest.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,142 @@
+package org.apache.torque.gf.control;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.torque.gf.BaseTest;
+import org.apache.torque.gf.configuration.UnitConfiguration;
+import org.apache.torque.gf.option.Option;
+import org.apache.torque.gf.option.OptionImpl;
+import org.apache.torque.gf.option.Options;
+import org.junit.Before;
+import org.junit.Test;
+
+public class TokenReplacerTest extends BaseTest
+{
+    private TokenReplacer tokenReplacer;
+
+    @Before
+    public void setUp()
+    {
+        Options options = new Options();
+        {
+            Option optionWithoutNamespace = new OptionImpl(
+                    "optionWithoutNamespace",
+                    "ValueWithoutNamespace");
+            options.setGlobalOption(optionWithoutNamespace);
+        }
+        {
+            Option optionWithNamespace = new OptionImpl(
+                    "org.apache.torque.gf.optionWithNamespace",
+                    "ValueWithNamespace");
+            options.setGlobalOption(optionWithNamespace);
+        }
+        {
+            Option optionWithSpecialChars = new OptionImpl(
+                    "opt${}i\\on",
+                    "ValueWith${}Special\\Chars");
+            options.setGlobalOption(optionWithSpecialChars);
+        }
+
+        UnitConfiguration unitConfiguration = new UnitConfiguration();
+        unitConfiguration.setOptions(options);
+        ControllerState controllerState = new ControllerState();
+        controllerState.setUnitConfiguration(unitConfiguration);
+        tokenReplacer = new TokenReplacer(controllerState);
+    }
+
+    @Test
+    public void testNoToken() throws Exception
+    {
+        String input = "No Token in this String";
+        String output = tokenReplacer.process(input);
+        assertEquals(input, output);
+    }
+
+    @Test
+    public void testTokenWithoutNamespace() throws Exception
+    {
+        String input = "Prefix${option:optionWithoutNamespace}Postfix";
+        String output = tokenReplacer.process(input);
+        assertEquals("PrefixValueWithoutNamespacePostfix", output);
+    }
+
+    @Test
+    public void testTokenWithNamespace() throws Exception
+    {
+        String input
+            = "Prefix${option:org.apache.torque.gf.optionWithNamespace}Postfix";
+        String output = tokenReplacer.process(input);
+        assertEquals("PrefixValueWithNamespacePostfix", output);
+    }
+
+    @Test
+    public void testEscapingOutsideToken() throws Exception
+    {
+        String input = "Pre\\fixXXXPostfix";
+        String output = tokenReplacer.process(input);
+        assertEquals("PrefixXXXPostfix", output);
+    }
+
+    @Test
+    public void testEscapingInToken() throws Exception
+    {
+        String input
+                = "Prefix${option:option\\W\\ithoutNamespace}Postfix";
+        String output = tokenReplacer.process(input);
+        assertEquals("PrefixValueWithoutNamespacePostfix", output);
+    }
+
+    @Test
+    public void testDoubleEscapingOutsideToken() throws Exception
+    {
+        String input = "Prefix\\\\Postfix";
+        String output = tokenReplacer.process(input);
+        assertEquals("Prefix\\Postfix", output);
+    }
+
+    @Test
+    public void testTokenWithSpecialChars() throws Exception
+    {
+        String input
+                = "Prefix${option:opt${\\}i\\\\on}Postfix";
+        String output = tokenReplacer.process(input);
+        assertEquals("PrefixValueWith${}Special\\CharsPostfix", output);
+    }
+
+    @Test
+    public void testEscapingTokenStart1() throws Exception
+    {
+        String input
+                = "Prefix\\${XXX}Postfix";
+        String output = tokenReplacer.process(input);
+        assertEquals("Prefix${XXX}Postfix", output);
+    }
+
+    @Test
+    public void testEscapingTokenStart2() throws Exception
+    {
+        String input
+                = "Prefix$\\{XXX}Postfix";
+        String output = tokenReplacer.process(input);
+        assertEquals("Prefix${XXX}Postfix", output);
+    }
+}

Added: db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/example/gettingstarted/GettingStarted.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/example/gettingstarted/GettingStarted.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/example/gettingstarted/GettingStarted.java (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/example/gettingstarted/GettingStarted.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,47 @@
+package org.apache.torque.gf.example.gettingstarted;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.torque.gf.configuration.UnitDescriptor;
+import org.apache.torque.gf.configuration.paths.DefaultTorqueGfPaths;
+import org.apache.torque.gf.configuration.paths.Maven2DirectoryProjectPaths;
+import org.apache.torque.gf.control.Controller;
+
+public class GettingStarted
+{
+    public static void main(String[] argv) throws Exception
+    {
+        File target = new File("target");
+        FileUtils.deleteDirectory(target);
+        Controller controller = new Controller();
+        List<UnitDescriptor> unitDescriptors = new ArrayList<UnitDescriptor>();
+        unitDescriptors.add(new UnitDescriptor(
+                UnitDescriptor.Packaging.DIRECTORY,
+                new Maven2DirectoryProjectPaths(
+                        new File(".")),
+                new DefaultTorqueGfPaths()));
+        controller.run(unitDescriptors);
+    }
+}

Added: db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/example/gettingstarted/GettingStartedTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/example/gettingstarted/GettingStartedTest.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/example/gettingstarted/GettingStartedTest.java (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/example/gettingstarted/GettingStartedTest.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,62 @@
+package org.apache.torque.gf.example.gettingstarted;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.torque.gf.BaseTest;
+import org.apache.torque.gf.configuration.UnitDescriptor;
+import org.apache.torque.gf.configuration.paths.DefaultTorqueGfPaths;
+import org.apache.torque.gf.configuration.paths.Maven2DirectoryProjectPaths;
+import org.apache.torque.gf.control.Controller;
+import org.junit.Test;
+
+public class GettingStartedTest extends BaseTest
+{
+    @Test
+    public void testGettingStarted() throws Exception
+    {
+        File target = new File("src/test/site/gettingStarted/target");
+        FileUtils.deleteDirectory(target);
+        Controller controller = new Controller();
+        List<UnitDescriptor> unitDescriptors = new ArrayList<UnitDescriptor>();
+        unitDescriptors.add(new UnitDescriptor(
+                UnitDescriptor.Packaging.DIRECTORY,
+                new Maven2DirectoryProjectPaths(
+                        new File("src/test/site/gettingStarted")),
+                new DefaultTorqueGfPaths()));
+        controller.run(unitDescriptors);
+        assertTrue(target.exists());
+        File generatedJavaFile = new File(
+                target,
+                "generated-sources/org/apache/torque/gf/example/gettingstarted/PropertyKeys.java");
+        assertTrue(generatedJavaFile.exists());
+        File expectedJavaFile = new File(
+                "src/test/resources/org/apache/torque/gf/example/gettingstarted/PropertyKeys.java");
+        junitx.framework.FileAssert.assertEquals(
+                expectedJavaFile,
+                generatedJavaFile);
+    }
+}

Added: db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/generator/java/ModifySourcenameGeneratorTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/generator/java/ModifySourcenameGeneratorTest.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/generator/java/ModifySourcenameGeneratorTest.java (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/generator/java/ModifySourcenameGeneratorTest.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,98 @@
+package org.apache.torque.gf.generator.java;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+
+import org.apache.torque.gf.control.ControllerState;
+import org.apache.torque.gf.generator.GeneratorException;
+import org.apache.torque.gf.qname.QualifiedName;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ModifySourcenameGeneratorTest
+{
+    private ModifySourcenameGenerator generator;
+
+    private ControllerState controllerState;
+
+    @Before
+    public void setUp()
+    {
+        this.generator = new ModifySourcenameGenerator(new QualifiedName(
+                "org.apache.torque.gf.modifySourcenameGenerator"));
+        controllerState = new ControllerState();
+        controllerState.setSourceFile(
+                new File("src/test/some-test-file-name.someTestExtension"));
+    }
+
+    @Test
+    public void testDefault() throws GeneratorException
+    {
+        String result = generator.execute(controllerState);
+        assertEquals("some-test-file-name.someTestExtension", result);
+    }
+
+    @Test
+    public void testAll() throws GeneratorException
+    {
+        generator.setDiscardFrom("Ext");
+        generator.setDiscardTo("me-");
+        generator.setPrefix("prefix-");
+        generator.setSuffix("-suffix");
+        String result = generator.execute(controllerState);
+        assertEquals("prefix-test-file-name.someTest-suffix", result);
+    }
+
+    @Test
+    public void testDiscardFrom() throws GeneratorException
+    {
+        generator.setDiscardFrom("-");
+        String result = generator.execute(controllerState);
+        assertEquals("some", result);
+    }
+
+    @Test
+    public void testDiscardTo() throws GeneratorException
+    {
+        generator.setDiscardTo("-");
+        String result = generator.execute(controllerState);
+        assertEquals("name.someTestExtension", result);
+    }
+
+    @Test
+    public void testOverlappingFromAndTo() throws GeneratorException
+    {
+        generator.setDiscardFrom("-");
+        generator.setDiscardTo("-");
+        String result = generator.execute(controllerState);
+        assertEquals("", result);
+    }
+
+    @Test
+    public void testSourceFilenameNull() throws GeneratorException
+    {
+        controllerState.setSourceFile(null);
+        String result = generator.execute(controllerState);
+        assertEquals("", result);
+    }
+}

Added: db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/generator/java/NewlineGeneratorTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/generator/java/NewlineGeneratorTest.java?rev=910600&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/generator/java/NewlineGeneratorTest.java (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/gf/generator/java/NewlineGeneratorTest.java Tue Feb 16 17:15:43 2010
@@ -0,0 +1,73 @@
+package org.apache.torque.gf.generator.java;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.torque.gf.generator.GeneratorException;
+import org.apache.torque.gf.qname.QualifiedName;
+import org.junit.Before;
+import org.junit.Test;
+
+public class NewlineGeneratorTest
+{
+    private NewlineGenerator newlineGenerator;
+
+    @Before
+    public void setUp()
+    {
+        this.newlineGenerator = new NewlineGenerator(new QualifiedName(
+                "org.apache.torque.gf.newlineGenerator"));
+    }
+
+    @Test
+    public void testDefault() throws GeneratorException {
+        String result = newlineGenerator.execute(null);
+        assertEquals("\n", result);
+    }
+
+    @Test
+    public void testWindowsStyle() throws GeneratorException {
+        newlineGenerator.setWindowsStyle(true);
+        String result = newlineGenerator.execute(null);
+        assertEquals("\r\n", result);
+    }
+
+    @Test()
+    public void testCountZero() throws GeneratorException {
+        newlineGenerator.setCount(0);
+        String result = newlineGenerator.execute(null);
+        assertEquals("", result);
+    }
+
+    @Test(expected = GeneratorException.class)
+    public void testCountLessThanZero() throws GeneratorException {
+        newlineGenerator.setCount(-1);
+        String result = newlineGenerator.execute(null);
+        assertEquals("\n", result);
+    }
+
+    @Test()
+    public void testCountFive() throws GeneratorException {
+        newlineGenerator.setCount(5);
+        String result = newlineGenerator.execute(null);
+        assertEquals("\n\n\n\n\n", result);
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org