Author: oberhack Date: Sat Aug 14 04:35:30 2004 New Revision: 36383 Added: avalon/trunk/central/laboratory/studio/eclipse/core/test/ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/core/ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/core/templateengine/ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/core/templateengine/test/ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/core/templateengine/test/AllCoreTests.java avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/core/templateengine/test/DirectoryTemplateManagerTest.java avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/core/templateengine/test/ProjectManagerBasicTest.java avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/core/templateengine/test/ResourceTemplateManagerTest.java avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/ui/ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/ui/wizard/ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/ui/wizard/test/ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/ui/wizard/test/AllTests.java avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/ui/wizard/test/CreateNewProjectWizardMock.java Log: initial testsuite for MetroStudioCore
Added: avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/core/templateengine/test/AllCoreTests.java ============================================================================== --- (empty file) +++ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/core/templateengine/test/AllCoreTests.java Sat Aug 14 04:35:30 2004 @@ -0,0 +1,43 @@ +/* + + 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.metro.studio.eclipse.core.templateengine.test; + +import junit.framework.Test; +import junit.framework.TestSuite; + +/** + * @author <a href="mailto:[EMAIL PROTECTED]">Metro Development Team</a> + * 12.08.2004 + * last change: + * + */ +public class AllCoreTests +{ + + public static Test suite() + { + TestSuite suite = new TestSuite( + "Test for org.apache.metro.studio.eclipse.core.templateengine"); + //$JUnit-BEGIN$ + suite.addTestSuite(ProjectManagerBasicTest.class); + suite.addTestSuite(DirectoryTemplateManagerTest.class); + suite.addTestSuite(ResourceTemplateManagerTest.class); + //$JUnit-END$ + return suite; + } +} Added: avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/core/templateengine/test/DirectoryTemplateManagerTest.java ============================================================================== --- (empty file) +++ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/core/templateengine/test/DirectoryTemplateManagerTest.java Sat Aug 14 04:35:30 2004 @@ -0,0 +1,290 @@ + +/* + + 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.metro.studio.eclipse.core.templateengine.test; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.Writer; +import java.util.Vector; + +import junit.framework.TestCase; + +import org.apache.metro.studio.eclipse.core.MetroStudioCore; +import org.apache.metro.studio.eclipse.core.templateengine.Directory; +import org.apache.metro.studio.eclipse.core.templateengine.DirectoryTemplate; +import org.apache.metro.studio.eclipse.core.templateengine.DirectoryTemplateManager; +import org.apache.metro.studio.eclipse.core.templateengine.ProjectManager; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.IPackageFragmentRoot; +import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jdt.core.JavaModelException; + +import com.thoughtworks.xstream.XStream; + +/** + * @author <a href="mailto:[EMAIL PROTECTED]">Metro Development Team</a> + * 11.08.2004 + * last change: + * + */ +public class DirectoryTemplateManagerTest extends TestCase +{ + + static IProject project; + final static String configFileLocation = MetroStudioCore.getDefault().getPluginLocation().toString() + "config/directories.test_cfg"; + + public static void main(String[] args) + { + } + + /** + * Create DirectoryTemplates and store/reload them to/from file. + * + */ + public final void testCreateLoadConfigFile() + { + XStream xstream = new XStream(); + DirectoryTemplateManager.initXStream(xstream); + DirectoryTemplateManager m = new DirectoryTemplateManager(); + + m.addDirectoryTemplate(createStandardBlock()); + m.addDirectoryTemplate(createImplApiBlock()); + + try + { + Writer out = new FileWriter(configFileLocation); + xstream.toXML(m, out); + } catch (IOException e) + { + fail("unable to write config file"); + } + + m = DirectoryTemplateManager.load(configFileLocation); + + assertNotNull("Could not reload xml file", m); + + } + + /** + * Create the directory structure in project. + * Add standard libraries + * + */ + public final void testCreateStandardBlockProject() + { + project = ProjectManager.createBlockProject("StandardBlockTest"); + DirectoryTemplateManager m = DirectoryTemplateManager.load(configFileLocation); + m.create("StandardBlock", project.getProject()); + + assertEquals("Project was not created", true, (new File(project.getLocation().toString()).exists())); + assertEquals("Sourcefolder not created", true, (new File(project.getLocation().toString()+"/src").exists())); + assertEquals("Subfolder was not created", true, (new File(project.getLocation().toString()+"/src/BLOCK-INF").exists())); + assertEquals("Test folder was not created", true, (new File(project.getLocation().toString()+"/test").exists())); + assertEquals("Docs folder was not created", true, (new File(project.getLocation().toString()+"/docs").exists())); + } + + /** + * Test, whether libraries are added + * + */ + public final void testStandardBlockClasspath() + { + int libCount=0; + int rootCount=0; + int sourceCount=0; + + DirectoryTemplateManager m = DirectoryTemplateManager.load(configFileLocation); + DirectoryTemplate template = m.getTemplate("StandardBlock"); + Vector libNames = m.collectLibraries(template, m.getRepositoryPath()); + Vector sourceNames = m.collectSourceFolders(template, project); + + try + { + IJavaProject javaProject = JavaCore.create(project); + IPackageFragmentRoot[] roots = javaProject.getPackageFragmentRoots(); + + for(int i=0; i<roots.length; i++) + { + rootCount++; + if(roots[i].isArchive()) + { + libCount++; + } else { + sourceCount++; + } + } + } catch (JavaModelException e) + { + fail("can't retrieve project libraries"); + } + + assertEquals("not all required libs are created", libNames.size(), libCount); + assertEquals("not all required sourcedirectories are created", sourceNames.size(), sourceCount); + + ProjectManager.delete(project); + } + + /** + * Create the directory structure in project. + * Add standard libraries + * + */ + public final void testCreateImplApiBlockProject() + { + project = ProjectManager.createBlockProject("ImplApiTest"); + DirectoryTemplateManager m = DirectoryTemplateManager.load(configFileLocation); + m.create("ImplApiBlock", project.getProject()); + + assertEquals("Project was not created", true, (new File(project.getLocation().toString()).exists())); + assertEquals("Implfolder not created", true, (new File(project.getLocation().toString()+"/impl").exists())); + assertEquals("Apifolder not created", true, (new File(project.getLocation().toString()+"/api").exists())); + assertEquals("Subfolder was not created", true, (new File(project.getLocation().toString()+"/impl/BLOCK-INF").exists())); + assertEquals("Test folder was not created", true, (new File(project.getLocation().toString()+"/test").exists())); + assertEquals("Docs folder was not created", true, (new File(project.getLocation().toString()+"/docs").exists())); + } + + /** + * Test, whether libraries are added + * + */ + public final void testImplApiBlockClasspath() + { + int libCount=0; + int rootCount=0; + int sourceCount=0; + + DirectoryTemplateManager m = DirectoryTemplateManager.load(configFileLocation); + DirectoryTemplate template = m.getTemplate("ImplApiBlock"); + Vector libNames = m.collectLibraries(template, m.getRepositoryPath()); + Vector sourceNames = m.collectSourceFolders(template, project); + + try + { + IJavaProject javaProject = JavaCore.create(project); + IPackageFragmentRoot[] roots = javaProject.getPackageFragmentRoots(); + + for(int i=0; i<roots.length; i++) + { + rootCount++; + if(roots[i].isArchive()) + { + libCount++; + } else { + sourceCount++; + } + } + } catch (JavaModelException e) + { + fail("can't retrieve project libraries"); + } + + assertEquals("not all required libs are created", libNames.size(), libCount); + assertEquals("not all required sourcedirectories are created", sourceNames.size(), sourceCount); + } + + /** + * Delete the project + * + */ + public final void testDeleteProject() + { + String path = project.getLocation().toString(); + try + { + + project.delete(true, true, null); + } catch (CoreException e) + { + fail("can't delete project"); + } + assertEquals("project not deleted", false, new File(path).exists()); + } + + /** + * + */ + private DirectoryTemplate createStandardBlock() + { + DirectoryTemplate dt = new DirectoryTemplate(); + dt.setId("StandardBlock"); + + + Directory d = new Directory(); + d.setName("src"); + d.setSource(true); + dt.addDirectory(d); + + d = new Directory(); + d.setName("src/BLOCK-INF"); + d.setSource(false); + dt.addDirectory(d); + + d = new Directory(); + d.setName("test"); + d.setSource(true); + dt.addDirectory(d); + + d = new Directory(); + d.setName("docs"); + d.setSource(false); + dt.addDirectory(d); + + return dt; + } + + /** + * + */ + private DirectoryTemplate createImplApiBlock() + { + DirectoryTemplate dt = new DirectoryTemplate(); + dt.setId("ImplApiBlock"); + + Directory d = new Directory(); + d.setName("impl"); + d.setSource(true); + dt.addDirectory(d); + + d = new Directory(); + d.setName("api"); + d.setSource(true); + dt.addDirectory(d); + + d = new Directory(); + d.setName("impl/BLOCK-INF"); + d.setSource(false); + dt.addDirectory(d); + + d = new Directory(); + d.setName("test"); + d.setSource(true); + dt.addDirectory(d); + + d = new Directory(); + d.setName("docs"); + d.setSource(false); + dt.addDirectory(d); + + return dt; + } + +} Added: avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/core/templateengine/test/ProjectManagerBasicTest.java ============================================================================== --- (empty file) +++ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/core/templateengine/test/ProjectManagerBasicTest.java Sat Aug 14 04:35:30 2004 @@ -0,0 +1,61 @@ +/* + + 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.metro.studio.eclipse.core.templateengine.test; + +import junit.framework.TestCase; + +import org.apache.metro.studio.eclipse.core.templateengine.ProjectManager; +import org.apache.metro.studio.eclipse.core.templateengine.ResourceTemplate; +import org.eclipse.core.resources.IProject; + +/** + * This test class only tests to create Metro projects with different + * natures. + * Those methods are than needed by other testcases: + * - DirectoryTemplateMangerTest + * - ResourceTemplateManagerTest + * - ProjectManagerTest + * The ProjectMangerTest class is testing higher level methods than. + * + * @author <a href="mailto:[EMAIL PROTECTED]">Metro Development Team</a> + * 11.08.2004 + * last change: + * + */ +public class ProjectManagerBasicTest extends TestCase +{ + + private static IProject project; + + public static void main(String[] args) + { + } + + public final void testCreateBlockProject() + { + ResourceTemplate template; + + project = ProjectManager.createBlockProject("EmptyBlock"); + } + + public final void testDelete() + { + ProjectManager.delete(project); + } + +} Added: avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/core/templateengine/test/ResourceTemplateManagerTest.java ============================================================================== --- (empty file) +++ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/core/templateengine/test/ResourceTemplateManagerTest.java Sat Aug 14 04:35:30 2004 @@ -0,0 +1,131 @@ +/* + + 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.metro.studio.eclipse.core.templateengine.test; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.Writer; + +import junit.framework.TestCase; + +import org.apache.metro.studio.eclipse.core.MetroStudioCore; +import org.apache.metro.studio.eclipse.core.templateengine.DirectoryTemplateManager; +import org.apache.metro.studio.eclipse.core.templateengine.ProjectManager; +import org.apache.metro.studio.eclipse.core.templateengine.Resource; +import org.apache.metro.studio.eclipse.core.templateengine.ResourceTemplate; +import org.apache.metro.studio.eclipse.core.templateengine.ResourceTemplateManager; +import org.apache.metro.studio.eclipse.core.tools.DynProjectParam; +import org.eclipse.core.resources.IProject; + +import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.io.xml.DomDriver; + +/** + * @author <a href="mailto:[EMAIL PROTECTED]">Metro Development Team </a> + * 12.08.2004 last change: + * + */ +public class ResourceTemplateManagerTest extends TestCase +{ + final static String directoryLocation = DirectoryTemplateManagerTest.configFileLocation; + + final static String baseDir = MetroStudioCore.getDefault() + .getPluginLocation().toString(); + + final static String resourcesLocation = baseDir + + "config/resources.test_cfg"; + + static IProject project; + + public static void main(String[] args) + { + } + + public final void testCreateResourceTemplate() + { + XStream xstream = new XStream(new DomDriver()); + ResourceTemplateManager.initXStream(xstream); + ResourceTemplateManager rm = new ResourceTemplateManager(); + + // import DirectoryTemplates, which are created in + // DirectoryTemplatemanagerTest + DirectoryTemplateManager dm = DirectoryTemplateManager + .load(directoryLocation); + dm.addXStreamAliases(xstream); + rm.importDirectoryTemplates(dm); + + rm.addResourceTemplate(createHelloWorldResources()); + + try + { + Writer out = new FileWriter(resourcesLocation); + xstream.toXML(rm, out); + } catch (IOException e) + { + fail("unable to write config file"); + } + + rm = ResourceTemplateManager.load(resourcesLocation); + + assertNotNull("Could not reload xml file", rm); + + } + + public final void testCreateHelloWorldProject() + { + project = ProjectManager.createBlockProject("HelloWorld Tutorial"); + ResourceTemplateManager rm = ResourceTemplateManager + .load(resourcesLocation); + rm.create(project, "HelloWorld Tutorial", new DynProjectParam()); + + String testpath; + assertEquals("Project was not created", true, (new File(project.getLocation().toString()).exists())); + testpath = "/src/tutorial/HelloComponent.java"; + assertEquals("HelloComponent not created", true, (new File(project.getLocation().toString()+testpath).exists())); + testpath = "/src/BLOCK-INF/block.xml"; + assertEquals("block.xml not created", true, (new File(project.getLocation().toString()+testpath).exists())); + + ProjectManager.delete(project); + } + + /** + * @return + */ + private ResourceTemplate createHelloWorldResources() + { + ResourceTemplate rt = new ResourceTemplate(); + rt.setTemplateId("HelloWorld Tutorial"); + rt.setDirectoryType("StandardBlock"); + + Resource r = new Resource(); + r.setRootSegment("src"); + r.setSourceFilePathName(baseDir+"templates/hello/HelloComponent.java"); + r.setPackageName("tutorial"); + rt.addResource(r); + + r = new Resource(); + r.setRootSegment("src/BLOCK-INF"); + r.setSourceFilePathName(baseDir+"templates/hello/block.xml"); + r.setPackageName(""); + rt.addResource(r); + + return rt; + } + +} \ No newline at end of file Added: avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/ui/wizard/test/AllTests.java ============================================================================== --- (empty file) +++ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/ui/wizard/test/AllTests.java Sat Aug 14 04:35:30 2004 @@ -0,0 +1,41 @@ +/* + + 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.metro.studio.eclipse.ui.wizard.test; + +import junit.framework.Test; +import junit.framework.TestSuite; + +/** + * @author <a href="mailto:[EMAIL PROTECTED]">Metro Development Team</a> + * 14.08.2004 + * last change: + * + */ +public class AllTests +{ + + public static Test suite() + { + TestSuite suite = new TestSuite( + "Test for org.apache.metro.studio.eclipse.ui.wizard.test"); + //$JUnit-BEGIN$ + suite.addTestSuite(CreateNewProjectWizardMock.class); + //$JUnit-END$ + return suite; + } +} Added: avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/ui/wizard/test/CreateNewProjectWizardMock.java ============================================================================== --- (empty file) +++ avalon/trunk/central/laboratory/studio/eclipse/core/test/org/apache/metro/studio/eclipse/ui/wizard/test/CreateNewProjectWizardMock.java Sat Aug 14 04:35:30 2004 @@ -0,0 +1,80 @@ +/* + + 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.metro.studio.eclipse.ui.wizard.test; + +import java.util.Hashtable; + +import junit.framework.TestCase; + +import org.apache.metro.facility.presentationservice.api.ViewEventService; +import org.apache.metro.facility.presentationservice.impl.PresentationEvent; +import org.apache.metro.facility.presentationservice.impl.PresentationServiceFactory; +import org.apache.metro.studio.eclipse.core.templateengine.ResourceTemplate; +import org.apache.metro.studio.eclipse.ui.controller.CreateNewProjectWizardController; +import org.eclipse.core.resources.IProject; + +/** + * @author <a href="mailto:[EMAIL PROTECTED]">Metro Development Team</a> + * 11.08.2004 + * last change: + * + */ +public class CreateNewProjectWizardMock extends TestCase +{ + + private static IProject project; + private ViewEventService service; + public final String TOPIC = "CreateNewProjectWizard"; + + public static void main(String[] args) + { + } + + /** + * This test is done here to test the functionality of the presentation service + * All tests of template creation is done in MetroStudioCore in detail. + */ + public final void testCreateHelloWorldProject() + { + ResourceTemplate template; + new CreateNewProjectWizardController().initializeListeners(); + + try + { + service = PresentationServiceFactory.getViewEventService(); + Hashtable value = new Hashtable(); + + // mock the "wizard page created event" to get all ResourceTemplate names + + // mock the "template selected event" in TemplateSelectionWizardPage + value.put("selectedTemplate", "HelloWorld Tutorial"); + PresentationEvent event = new PresentationEvent(this, TOPIC + ".exampleProjectList", value); + event = service.clicked(event); + + // mock the "template apply event" in NewProjectWizard + value.put("projectName", "HelloWorld Tutorial"); + event = new PresentationEvent(this, TOPIC + ".applyButton", value); + event = service.clicked(event); + + } catch (Exception e) + { + fail("could not create HelloWorld Project"); + } + } + +} --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]