diff options
author | aclement <aclement> | 2005-12-21 09:20:01 +0000 |
---|---|---|
committer | aclement <aclement> | 2005-12-21 09:20:01 +0000 |
commit | 930c1d3b842f3bccbc6d434907608bdc5d04a63f (patch) | |
tree | e1d00ccd0cfdc121e17c75bdde322d3265bd30ca /ajdoc/testsrc | |
parent | d21b27a4ec70fe7dbb4b38a42ff6015ec4cde16f (diff) | |
download | aspectj-930c1d3b842f3bccbc6d434907608bdc5d04a63f.tar.gz aspectj-930c1d3b842f3bccbc6d434907608bdc5d04a63f.zip |
ajdoc: fixes from Helen for 119453
Diffstat (limited to 'ajdoc/testsrc')
-rw-r--r-- | ajdoc/testsrc/org/aspectj/tools/ajdoc/AjdocTests.java | 1 | ||||
-rw-r--r-- | ajdoc/testsrc/org/aspectj/tools/ajdoc/ITDTest.java | 237 |
2 files changed, 238 insertions, 0 deletions
diff --git a/ajdoc/testsrc/org/aspectj/tools/ajdoc/AjdocTests.java b/ajdoc/testsrc/org/aspectj/tools/ajdoc/AjdocTests.java index 5ec25317d..8a3442264 100644 --- a/ajdoc/testsrc/org/aspectj/tools/ajdoc/AjdocTests.java +++ b/ajdoc/testsrc/org/aspectj/tools/ajdoc/AjdocTests.java @@ -40,6 +40,7 @@ public class AjdocTests extends TestCase { suite.addTestSuite(SpacewarTestCase.class); suite.addTestSuite(PatternsTestCase.class); suite.addTestSuite(CoverageTestCase.class); + suite.addTestSuite(ITDTest.class); suite.addTestSuite(ExecutionTestCase.class);// !!! must be last because it exists //$JUnit-END$ return suite; diff --git a/ajdoc/testsrc/org/aspectj/tools/ajdoc/ITDTest.java b/ajdoc/testsrc/org/aspectj/tools/ajdoc/ITDTest.java new file mode 100644 index 000000000..f2c3cd0ad --- /dev/null +++ b/ajdoc/testsrc/org/aspectj/tools/ajdoc/ITDTest.java @@ -0,0 +1,237 @@ +/******************************************************************** + * Copyright (c) 2005 Contributors. 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://eclipse.org/legal/epl-v10.html + * + * Contributors: IBM Corporation - initial API and implementation + * Helen Hawkins - iniital version + *******************************************************************/ +package org.aspectj.tools.ajdoc; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import junit.framework.TestCase; + +import org.aspectj.util.FileUtil; + +public class ITDTest extends TestCase { + + private File outdir; + private File c, a; + + protected void setUp() throws Exception { + super.setUp(); + outdir = new File("../ajdoc/testdata/pr119453/doc"); + c = new File("../ajdoc/testdata/pr119453/src/pack/C.java"); + a = new File("../ajdoc/testdata/pr119453/src/pack/A.aj"); + } + + protected void tearDown() throws Exception { + super.tearDown(); + + FileUtil.deleteContents(new File("ajdocworkingdir")); + (new File("ajdocworkingdir")).delete(); + + FileUtil.deleteContents(new File("testdata/pr119453/doc")); + (new File("testdata/pr119453/doc")).delete(); + } + + /** + * Test for pr119453 + */ + public void testITDShownInDoc() throws Exception { + outdir.delete(); + String[] args = { + "-XajdocDebug", + "-private", + "-d", + outdir.getAbsolutePath(), + c.getAbsolutePath(), + a.getAbsolutePath() + }; + org.aspectj.tools.ajdoc.Main.main(args); + + checkContentsOfC(); + checkContentsOfA(); + + } + + // check whether the "INTER-TYPE METHOD SUMMARY" AND + // "INTER-TYPE FIELD SUMMARY" have been added to the generated + // html file for the class which is affected by these itds. + // Also check that the correct mofifiers are showing ie. public + // isn't there, but all others are (this mirrors javadoc behaviour) + private void checkContentsOfC() throws Exception { + File htmlC = new File("../ajdoc/testdata/pr119453/doc/pack/C.html"); + if (htmlC == null) { + fail("couldn't find ../ajdoc/testdata/pr119453/doc/pack/C.html - were there compilation errors?"); + } + BufferedReader readerC = new BufferedReader(new FileReader(htmlC)); + boolean containsITDF = false; + boolean containsITDM = false; + boolean containsITDC = false; + String lineC = readerC.readLine(); + while( lineC != null && (!containsITDF || !containsITDM || !containsITDC)) { + if (lineC.indexOf("INTER-TYPE METHOD SUMMARY") != -1) { + containsITDM = true; + boolean containsPublic = false; + boolean containsString = false; + boolean containsPackA = false; + // walk through the information in this section + String nextLine = readerC.readLine(); + while(nextLine != null && (nextLine.indexOf("========") == -1)) { + if (nextLine.indexOf("public") != -1) { + containsPublic = true; + } + if (nextLine.indexOf("String") != -1) { + containsString = true; + } + if (nextLine.indexOf("pack.A") != -1) { + containsPackA = true; + } + nextLine = readerC.readLine(); + } + assertFalse("inter-type method summary should not contain the 'public' modifier", containsPublic); + assertTrue("inter-type method summary should contain the 'String' return type",containsString); + assertTrue("inter-type method summary should contain declared by 'pack.A'", containsPackA); + + // we may have hit the "inter-type field summary" so set this to + // be the next line we look at. + lineC = nextLine; + } else if (lineC.indexOf("INTER-TYPE FIELD SUMMARY") != -1) { + containsITDF = true; + boolean containsPrivate = false; + // walk through the information in this section + String nextLine = readerC.readLine(); + while(nextLine != null + && (nextLine.indexOf("========") == -1) + && !containsPrivate) { + if (nextLine.indexOf("private") != -1) { + containsPrivate = true; + } + nextLine = readerC.readLine(); + } + assertTrue("inter-type field summary should contain the 'private' modifier",containsPrivate); + + // we may have hit the "inter-type field summary" so set this to + // be the next line we look at. + lineC = nextLine; + } else if (lineC.indexOf("NTER-TYPE CONSTRUCTOR SUMMARY") != -1) { + // don't do any more checking here because have + // checked in the itd method summary + containsITDC = true; + } else { + lineC = readerC.readLine(); + } + } + readerC.close(); + + assertTrue("should have put ITD Method information into " + + "../ajdoc/testdata/pr119453/doc/pack/C.html", containsITDM); + assertTrue("should have put ITD Field information into " + + "../ajdoc/testdata/pr119453/doc/pack/C.html", containsITDF); + assertTrue("should have put ITD Constructor information into " + + "../ajdoc/testdata/pr119453/doc/pack/C.html", containsITDC); + + } + + + // check whether the correct modifiers have been added to the + // declare summary and declare detail in the doc for the aspect + private void checkContentsOfA() throws Exception { + File htmlA = new File("../ajdoc/testdata/pr119453/doc/pack/A.html"); + if (htmlA == null) { + fail("couldn't find ../ajdoc/testdata/pr119453/doc/pack/A.html - were there compilation errors?"); + } + BufferedReader readerA = new BufferedReader(new FileReader(htmlA)); + boolean containsDeclareDetail = false; + boolean containsDeclareSummary = false; + String lineA = readerA.readLine(); + while( lineA != null && (!containsDeclareDetail || !containsDeclareSummary )) { + if (lineA.indexOf("DECLARE DETAIL SUMMARY") != -1) { + containsDeclareDetail = true; + boolean containsPrivateInt = false; + boolean containsPublicString = false; + boolean containsITDFAsHeader = false; + boolean containsCorrectConstInfo = false; + // walk through the information in this section + String nextLine = readerA.readLine(); + while(nextLine != null + && (nextLine.indexOf("========") == -1) + && (!containsPrivateInt || !containsPublicString + || !containsITDFAsHeader || !containsCorrectConstInfo)) { + if (nextLine.indexOf("private int") != -1) { + containsPrivateInt = true; + } + if (nextLine.indexOf("public java.lang.String") != -1) { + containsPublicString = true; + } + if (nextLine.indexOf("<H3>C.y</H3>") != -1) { + containsITDFAsHeader = true; + } + if (nextLine.indexOf("public </TT><B>C.C") != -1 ) { + containsCorrectConstInfo = true; + } + nextLine = readerA.readLine(); + } + assertTrue("Declare detail summary should contain the 'private int' " + + "modifiers", containsPrivateInt); + assertTrue("Declare detail summary should contain the 'public java." + + "lang.String' return type",containsPublicString); + assertTrue("Declare detail summary should have 'C.y' as one header", + containsITDFAsHeader); + assertTrue("Declare detail summary should have 'public C.C' for the " + + "ITD constructor", containsCorrectConstInfo); + + // we may have hit the "inter-type field summary" so set this to + // be the next line we look at. + lineA = nextLine; + } else if (lineA.indexOf("DECLARE SUMMARY") != -1) { + containsDeclareSummary = true; + boolean containsPrivate = false; + boolean containsInt = false; + boolean containsString = false; + boolean containsPublic = false; + // walk through the information in this section + String nextLine = readerA.readLine(); + while(nextLine != null && (nextLine.indexOf("========") == -1)) { + if (nextLine.indexOf("private") != -1) { + containsPrivate = true; + } + if (nextLine.indexOf("int") != -1) { + containsInt = true; + } + if (nextLine.indexOf("public") != -1) { + containsPublic = true; + } + if (nextLine.indexOf("String") != -1) { + containsString = true; + } + nextLine = readerA.readLine(); + } + assertTrue("Declare summary should contain the 'private' modifier",containsPrivate); + assertTrue("Declare summary should contain the 'int' return type",containsInt); + assertFalse("Declare summary should not contain the 'public' modifier",containsPublic); + assertTrue("Declare summary should contain the 'String' return type",containsString); + + // we may have hit the "Declare Details" so set this to + // be the next line we look at. + lineA = nextLine; + } else { + lineA = readerA.readLine(); + } + } + readerA.close(); + + assertTrue("should have put Declare Detail information into " + + "../ajdoc/testdata/pr119453/doc/pack/A.html", containsDeclareDetail); + assertTrue("should have put Declare Summary information into " + + "../ajdoc/testdata/pr119453/doc/pack/A.html", containsDeclareSummary); + + } + +} |