From: <jsa...@us...> - 2008-10-28 13:52:48
|
Revision: 47 http://flexotask.svn.sourceforge.net/flexotask/?rev=47&view=rev Author: jsauerbach Date: 2008-10-28 13:52:46 +0000 (Tue, 28 Oct 2008) Log Message: ----------- Add test case for highfreqread rewriting. Modified Paths: -------------- trunk/flexotask-devtest/src/base/RewriterTestCase.java trunk/flexotask-devtest/src/testall/AllRewriterTests.java Added Paths: ----------- trunk/flexotask-devtest/tst/rewriter/test2/ trunk/flexotask-devtest/tst/rewriter/test2/CheckFunctionTests.java Modified: trunk/flexotask-devtest/src/base/RewriterTestCase.java =================================================================== --- trunk/flexotask-devtest/src/base/RewriterTestCase.java 2008-10-28 13:51:53 UTC (rev 46) +++ trunk/flexotask-devtest/src/base/RewriterTestCase.java 2008-10-28 13:52:46 UTC (rev 47) @@ -15,16 +15,19 @@ import java.io.File; import java.io.FileOutputStream; +import java.io.IOException; import java.util.Iterator; import org.eclipse.core.runtime.NullProgressMonitor; +import com.ibm.realtime.flexotask.development.builder.BuildException; import com.ibm.realtime.flexotask.development.rewriting.CodeRewriteResult; import com.ibm.realtime.flexotask.development.rewriting.RewrittenClass; import com.ibm.realtime.flexotask.development.rewriting.TestCodeRewriter; import com.ibm.realtime.flexotask.development.validation.CodeAnalysisResult; import com.ibm.realtime.flexotask.template.FlexotaskStableMode; import com.ibm.realtime.flexotask.template.FlexotaskTemplate; +import com.ibm.realtime.flexotask.template.FlexotaskValidationException; /** * Base class for doing testing of the code rewriter. @@ -33,31 +36,23 @@ /** The code rewriter used for the test */ protected TestCodeRewriter rewriter; - protected void setUp() { - super.setUp(); - File genFolder = new File("generated"); - //if (genFolder.exists() && !delDirectory(genFolder)) { - // fail("Could not empty output folder for generated files."); - //} - } - /** - * Deletes the contents of the directory provided, except the CVS directory - * @param dir - * @param delete - * @return + * Validate and perform rewriting for a template + * @param template the template + * @return the CodeRewriteResult + * @throws ClassNotFoundException + * @throws FlexotaskValidationException + * @throws BuildException + * @throws IOException */ - private boolean delDirectory(File dir) { - if (dir.exists() && dir.isDirectory()) { - String[] children = dir.list(); - for (int i=0; i < children.length; i++) { - boolean success = delDirectory(new File(dir, children[i])); - if (!success) { - return false; - } - } - } - return dir.delete(); + protected final CodeRewriteResult doRewriting(FlexotaskTemplate template) + throws ClassNotFoundException, FlexotaskValidationException, BuildException, IOException + { + CodeAnalysisResult result = doValidation(template); + rewriter = new TestCodeRewriter(context, result); + CodeRewriteResult res = rewriter.rewrite(new NullProgressMonitor()); + persistClasses(res); + return res; } /** @@ -65,56 +60,105 @@ * names are provided in the string array. * * @param classNames - * @return - * @throws Exception + * the class names + * @param mode + * the stable mode + * @return the CodeRewriteResult + * @throws FlexotaskValidationException + * @throws ClassNotFoundException + * @throws BuildException + * @throws IOException */ - protected final CodeRewriteResult doRewriting(String[] classNames, FlexotaskStableMode mode) - throws Exception { + protected final CodeRewriteResult doRewriting(String[] classNames, FlexotaskStableMode mode) + throws ClassNotFoundException, FlexotaskValidationException, BuildException, IOException + { CodeAnalysisResult result = doValidation(classNames, mode); rewriter = new TestCodeRewriter(context, result); - return rewriter.rewrite(new NullProgressMonitor()); + CodeRewriteResult res = rewriter.rewrite(new NullProgressMonitor()); + persistClasses(res); + return res; } - - protected final CodeRewriteResult doRewriting(FlexotaskTemplate template) - throws Exception { - CodeAnalysisResult result = doValidation(template); + + /** + * Do rewriting given a set of classes and a set of stable classes (manual stable mode implied) + * @param testClasses the test classes + * @param stableClasses the stable classes + * @return the CodeRewriteResult + * @throws ClassNotFoundException + * @throws FlexotaskValidationException + * @throws BuildException + * @throws IOException + */ + protected CodeRewriteResult doRewriting(String[] testClasses, String[] stableClasses) + throws ClassNotFoundException, FlexotaskValidationException, BuildException, IOException + { + CodeAnalysisResult result = doValidation(testClasses, stableClasses); rewriter = new TestCodeRewriter(context, result); CodeRewriteResult res = rewriter.rewrite(new NullProgressMonitor()); persistClasses(res); return res; } - + /** * Persist the rewritten classes into the 'generated' output directory - * @param result - * @throws Exception + * + * @param toPersist the CodeRewriteResult to persist + * @throws IOException if something goes wrong */ - protected void persistClasses(CodeRewriteResult result) throws Exception { + protected void persistClasses(CodeRewriteResult toPersist) throws IOException { File genFolder = new File("generated"); if (!genFolder.exists() && !genFolder.mkdir()) - throw new Exception("Output directory for generated files does not exist and could not be created."); + throw new IOException( + "Output directory for generated files does not exist and could not be created."); // loop through the rewritten classes and persist them - for (Iterator j = result.getRewrittenClasses().iterator(); j.hasNext(); ) { + for (Iterator j = toPersist.getRewrittenClasses().iterator(); j.hasNext();) { RewrittenClass rc = (RewrittenClass) j.next(); // create output path for rewritten class String packageName = rc.getJavaClassName(); - packageName = packageName.substring(0, packageName.lastIndexOf('.') > 0 ? packageName.lastIndexOf('.') : 0); - - File packagePath = new File(genFolder, packageName.replace('.', File.separatorChar)); + packageName = packageName.substring(0, + packageName.lastIndexOf('.') > 0 ? packageName.lastIndexOf('.') : 0); + File packagePath = new File(genFolder, packageName.replace('.', + File.separatorChar)); if (!packagePath.exists()) packagePath.mkdirs(); - String filename = rc.getJavaClassName() + ".class"; - int pathNameLength = (int) packageName.length() + (packageName.length() > 0 ? 1 : 0); + int pathNameLength = (int) packageName.length() + + (packageName.length() > 0 ? 1 : 0); filename = filename.substring(pathNameLength, filename.length()); - File f = new File(packagePath, filename); if (f.exists()) f.delete(); FileOutputStream baos = new FileOutputStream(f); - rc.writeToStream(baos); baos.flush(); } } + + protected void setUp() { + super.setUp(); + File genFolder = new File("generated"); + if (genFolder.exists() && !delDirectory(genFolder)) { + fail("Could not empty output folder for generated files."); + } + } + + /** + * Deletes the contents of the directory provided, except the CVS directory + * + * @param dir + * @param delete + * @return + */ + private boolean delDirectory(File dir) { + if (dir.exists() && dir.isDirectory()) { + String[] children = dir.list(); + for (int i = 0; i < children.length; i++) { + boolean success = delDirectory(new File(dir, children[i])); + if (!success) { + return false; + } + } + } + return dir.delete(); + } } Modified: trunk/flexotask-devtest/src/testall/AllRewriterTests.java =================================================================== --- trunk/flexotask-devtest/src/testall/AllRewriterTests.java 2008-10-28 13:51:53 UTC (rev 46) +++ trunk/flexotask-devtest/src/testall/AllRewriterTests.java 2008-10-28 13:52:46 UTC (rev 47) @@ -20,6 +20,7 @@ public static Test suite() { TestSuite suite = new TestSuite("All Rewriter Tests"); suite.addTestSuite(rewriter.test1.TestMyFlexotask.class); + suite.addTestSuite(rewriter.test2.CheckFunctionTests.class); return suite; } } Added: trunk/flexotask-devtest/tst/rewriter/test2/CheckFunctionTests.java =================================================================== --- trunk/flexotask-devtest/tst/rewriter/test2/CheckFunctionTests.java (rev 0) +++ trunk/flexotask-devtest/tst/rewriter/test2/CheckFunctionTests.java 2008-10-28 13:52:46 UTC (rev 47) @@ -0,0 +1,35 @@ +/* + * This file is part of Flexible Task Graphs + * (http://sourceforge.net/projects/flexotasks) + * + * Copyright (c) 2006 - 2008 IBM Corporation. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + */ +package rewriter.test2; + +import highfreqread.Channel; +import highfreqread.HighFreqReader; +import highfreqread.State; +import base.RewriterTestCase; + +/** + * Development time checking of those tests in flexotask-functiontest that involve rewriting + */ +public class CheckFunctionTests extends RewriterTestCase { + private static String[] highfreqread = new String[] { HighFreqReader.class.getName() }; + private static String[] highfreqstable = new String[] { HighFreqReader.class.getName(), Channel.class.getName(), + Channel[].class.getName(), State.class.getName() }; + public void testHighFreqRead() { + try { + doRewriting(highfreqread, highfreqstable); + } catch (Exception e) { + fail(e.toString()); + } + } +} Property changes on: trunk/flexotask-devtest/tst/rewriter/test2/CheckFunctionTests.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |