123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557 |
- /* *******************************************************************
- * Copyright (c) 2003 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://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Mik Kersten initial implementation
- * ******************************************************************/
-
- package org.aspectj.tools.ajdoc;
-
- import java.io.File;
- import java.util.List;
-
- /**
- * @author Mik Kersten
- */
- public class DeclareFormsTest extends AjdocTestCase {
-
- private String declareError = "declare error: quot;Illegal construct..quot";
- private String declareWarningQuotes = "declare warning: quot;Illegal call.quot;";
- private String declareWarning = "declare warning: \"Illegal call.\"";
- private String declareParentsImpl = "declare parents: implements Serializable";
- private String declareSoft = "declare soft: foo.SizeException2";
- private String declarePrecedence = "declare precedence: foo.DeclareCoverage2, foo.InterTypeDecCoverage2";
-
- private String doItHref = "HREF=\"../foo/Main2.html#doIt()\"";
- private String pointHref = "HREF=\"../foo/Point2.html\"";
- private String cHref = "HREF=\"../foo/C.html\"";
-
- private String doIt = "doIt()";
-
-
- public void testCoverage() {
- initialiseProject("declareForms");
- File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareCoverage.java")};
- runAjdoc("private","1.4",files);
- }
-
- /**
- * Test that the declare statements appear in the Declare Detail
- * and Declare Summary sections of the ajdoc
- */
- public void testDeclareStatments() throws Exception {
- initialiseProject("declareForms");
- File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareCoverage2.aj")};
- runAjdoc("private","1.4",files);
-
- File htmlFile = new File(getAbsolutePathOutdir() + "/foo/DeclareCoverage2.html");
- if (!htmlFile.exists()) {
- fail("couldn't find " + htmlFile.getAbsolutePath()
- + " - were there compilation errors?");
- }
- // check the contents of the declare detail summary
- String[] strings = {
- declareError,
- declareWarning,
- declareParentsImpl,
- declareSoft,
- declarePrecedence};
-
- List missing = AjdocOutputChecker.getMissingStringsInSection(
- htmlFile,strings,"DECLARE DETAIL SUMMARY");
- assertTrue(htmlFile.getName() + " should contain all declare statements in " +
- "the Declare Detail section",missing.isEmpty());
-
- // check the contents of the declare summary - should contain
- // the same strings
- missing = AjdocOutputChecker.getMissingStringsInSection(
- htmlFile,strings,"DECLARE SUMMARY");
- assertTrue(htmlFile.getName() + " should contain all declare statements in " +
- "the Declare Summary section",missing.isEmpty());
- }
-
- /**
- * Declare warning's should have the 'matched by' relationship
- * in the ajdoc for the declaring aspect
- */
- public void testDeclareWarning() throws Exception {
- initialiseProject("declareForms");
- File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareCoverage2.aj")};
- runAjdoc("private","1.4",files);
-
- File htmlFile = new File(getAbsolutePathOutdir() + "/foo/DeclareCoverage2.html");
- if (!htmlFile.exists()) {
- fail("couldn't find " + htmlFile.getAbsolutePath()
- + " - were there compilation errors?");
- }
-
- boolean b = AjdocOutputChecker.detailSectionContainsRel(
- htmlFile,"DECLARE DETAIL SUMMARY",
- declareWarningQuotes,
- HtmlDecorator.HtmlRelationshipKind.MATCHED_BY,
- doItHref);
- assertTrue("Should have '" + declareWarningQuotes + " matched by " + doItHref +
- "' in the Declare Detail section", b);
- b = AjdocOutputChecker.summarySectionContainsRel(
- htmlFile,"DECLARE SUMMARY",
- declareWarningQuotes,
- HtmlDecorator.HtmlRelationshipKind.MATCHED_BY,
- doItHref);
- assertTrue("Should have '" + declareWarningQuotes + " matched by " + doItHref +
- "' in the Declare Summary section", b);
- }
-
- /**
- * The target of a declare warning should have the 'matches
- * declare' relationship in the ajdoc - test the case when
- * the declare warning matches a call join point
- */
- public void testMatchesDeclareCall() throws Exception {
- initialiseProject("declareForms");
- File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareCoverage2.aj")};
- runAjdoc("private","1.4",files);
-
- File htmlFile = new File(getAbsolutePathOutdir() + "/foo/Main2.html");
- if (!htmlFile.exists()) {
- fail("couldn't find " + htmlFile.getAbsolutePath()
- + " - were there compilation errors?");
- }
-
- boolean b = AjdocOutputChecker.detailSectionContainsRel(
- htmlFile,"=== METHOD DETAIL",
- doIt,
- HtmlDecorator.HtmlRelationshipKind.MATCHES_DECLARE,
- declareWarningQuotes);
- assertTrue("Should have '" + doIt + " matches declare " +
- declareWarningQuotes + "' in the Declare Detail section", b);
- b = AjdocOutputChecker.summarySectionContainsRel(
- htmlFile,"=== METHOD SUMMARY",
- doIt,
- HtmlDecorator.HtmlRelationshipKind.MATCHES_DECLARE,
- declareWarningQuotes);
- assertTrue("Should have '" + doIt + " matches declare " +
- declareWarningQuotes + "' in the Declare Summary section", b);
- }
-
- /**
- * The target of a declare warning should have the 'matches
- * declare' relationship in the ajdoc - test the case when
- * the declare warning matches an execution join point
- */
- public void testMatchesDeclareExecution() throws Exception {
- initialiseProject("declareForms");
- File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareCoverage2.aj")};
- runAjdoc("private","1.4",files);
-
- File htmlFile = new File(getAbsolutePathOutdir() + "/foo/Point2.html");
- if (!htmlFile.exists()) {
- fail("couldn't find " + htmlFile.getAbsolutePath()
- + " - were there compilation errors?");
- }
-
- boolean b = AjdocOutputChecker.detailSectionContainsRel(
- htmlFile,"=== METHOD DETAIL",
- "setX(int)",
- HtmlDecorator.HtmlRelationshipKind.MATCHES_DECLARE,
- "declare warning: quot;blahquot;");
- assertTrue("Should have 'setX(int) matches declare declare warning: quot;blahquot;" +
- "' in the Method Detail section", b);
- b = AjdocOutputChecker.summarySectionContainsRel(
- htmlFile,"=== METHOD SUMMARY",
- "setX(int)",
- HtmlDecorator.HtmlRelationshipKind.MATCHES_DECLARE,
- "declare warning: quot;blahquot;");
- assertTrue("Should have 'setX(int) matches declare declare warning: quot;blahquot;" +
- "' in the Method Summary section", b);
- }
-
- /**
- * Declare parents's should have the 'declared on' relationship
- * in the ajdoc for the declaring aspect
- */
- public void testDeclareParents() throws Exception {
- initialiseProject("declareForms");
- File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareCoverage2.aj")};
- runAjdoc("private","1.4",files);
-
- File htmlFile = new File(getAbsolutePathOutdir() + "/foo/DeclareCoverage2.html");
- if (!htmlFile.exists()) {
- fail("couldn't find " + htmlFile.getAbsolutePath()
- + " - were there compilation errors?");
- }
-
- boolean b = AjdocOutputChecker.detailSectionContainsRel(
- htmlFile,"DECLARE DETAIL SUMMARY",
- declareParentsImpl,
- HtmlDecorator.HtmlRelationshipKind.DECLARED_ON,
- pointHref);
- assertTrue("Should have ' " + declareParentsImpl + " declared on " +
- pointHref + "' in the Declare Detail section", b);
- b = AjdocOutputChecker.summarySectionContainsRel(
- htmlFile,"DECLARE SUMMARY",
- declareParentsImpl,
- HtmlDecorator.HtmlRelationshipKind.DECLARED_ON,
- pointHref);
- assertTrue("Should have ' " + declareParentsImpl + " declared on " +
- pointHref + "' in the Declare Summary section", b);
- }
-
- /**
- * The target of a declare parent should have the 'aspect
- * declarations' relationship in the ajdoc
- */
- public void testAspectDeclarations() throws Exception {
- initialiseProject("declareForms");
- File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareCoverage2.aj")};
- runAjdoc("private","1.4",files);
-
- File htmlFile = new File(getAbsolutePathOutdir() + "/foo/Point2.html");
- if (!htmlFile.exists()) {
- fail("couldn't find " + htmlFile.getAbsolutePath()
- + " - were there compilation errors?");
- }
- boolean b = AjdocOutputChecker.classDataSectionContainsRel(
- htmlFile,
- HtmlDecorator.HtmlRelationshipKind.ASPECT_DECLARATIONS,
- "declare parents: implements Serializable");
- assertTrue("The class data section should have 'aspect declarations" +
- " declare parents: implements Serializable'",b);
-
- }
-
- /**
- * Declare soft's should have the 'softens' relationship
- * in the ajdoc for the declaring aspect
- */
- public void testDeclareSoft() throws Exception {
- initialiseProject("declareForms");
- File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareCoverage2.aj")};
- runAjdoc("private","1.4",files);
-
- File htmlFile = new File(getAbsolutePathOutdir() + "/foo/DeclareCoverage2.html");
- if (!htmlFile.exists()) {
- fail("couldn't find " + htmlFile.getAbsolutePath()
- + " - were there compilation errors?");
- }
-
- boolean b = AjdocOutputChecker.detailSectionContainsRel(
- htmlFile,"DECLARE DETAIL SUMMARY",
- declareSoft,
- HtmlDecorator.HtmlRelationshipKind.SOFTENS,
- doItHref);
- assertTrue("Should have '" + declareSoft + " softens " + doItHref +
- "' in the Declare Detail section", b);
- b = AjdocOutputChecker.summarySectionContainsRel(
- htmlFile,"DECLARE SUMMARY",
- declareSoft,
- HtmlDecorator.HtmlRelationshipKind.SOFTENS,
- doItHref);
- assertTrue("Should have '" + declareSoft + " softens " + doItHref +
- "' in the Declare Summary section", b);
- }
-
- /**
- * The target of a declare soft should have the 'softened
- * by' relationship in the ajdoc
- */
- public void testSoftenedBy() throws Exception {
- initialiseProject("declareForms");
- File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareCoverage2.aj")};
- runAjdoc("private","1.4",files);
-
- File htmlFile = new File(getAbsolutePathOutdir() + "/foo/Main2.html");
- if (!htmlFile.exists()) {
- fail("couldn't find " + htmlFile.getAbsolutePath()
- + " - were there compilation errors?");
- }
-
- boolean b = AjdocOutputChecker.detailSectionContainsRel(
- htmlFile,"=== METHOD DETAIL",
- doIt,
- HtmlDecorator.HtmlRelationshipKind.SOFTENED_BY,
- declareSoft);
- assertTrue("Should have '" + doIt + " softened by " + declareSoft +
- "' in the Method Detail section", b);
- b = AjdocOutputChecker.summarySectionContainsRel(
- htmlFile,"=== METHOD SUMMARY",
- doIt,
- HtmlDecorator.HtmlRelationshipKind.SOFTENED_BY,
- declareSoft);
- assertTrue("Should have '" + doIt + " softened by " + declareSoft +
- "' in the Method Summary section", b);
- }
-
- /**
- * Declare annotation should have the 'annotates' relationship
- * in the ajdoc for the declaring aspect
- */
- public void testDeclareAnnotation() throws Exception {
- initialiseProject("declareForms");
- File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareAtType.aj")};
- runAjdoc("private","1.5",files);
-
- // Aspect AnnotationTest should contain within it's declare
- // detail and summary the declare annotation statement.
- // Check for this....
- File htmlFile = new File(getAbsolutePathOutdir() + "/foo/DeclareAtType.html");
- if (!htmlFile.exists()) {
- fail("couldn't find " + htmlFile.getAbsolutePath()
- + " - were there compilation errors?");
- }
-
- // check there's no return type for the declare annotation
- // statement in the declare summary section
- String[] returnType = {"[]"};
- List missing = AjdocOutputChecker.getMissingStringsInSection(
- htmlFile,returnType,"DECLARE SUMMARY");
- assertEquals("there should be no return type for declare annotation" +
- " in the ajdoc",1,missing.size());
- assertEquals("there shouldn't be the '[]' return type for declare annotation" +
- " in the ajdoc","[]",missing.get(0));
-
- // check that the 'annotates' relationship is there
- boolean b = AjdocOutputChecker.detailSectionContainsRel(
- htmlFile,"DECLARE DETAIL SUMMARY",
- "declare @type: foo.C : @MyAnnotation",
- HtmlDecorator.HtmlRelationshipKind.ANNOTATES,
- cHref);
- assertTrue("Should have 'declare @type: foo.C : @MyAnnotation annotates "
- + cHref + "' in the Declare Detail section", b);
- b = AjdocOutputChecker.summarySectionContainsRel(
- htmlFile,"DECLARE SUMMARY",
- "declare @type: foo.C : @MyAnnotation",
- HtmlDecorator.HtmlRelationshipKind.ANNOTATES,
- cHref);
- assertTrue("Should have 'declare @type: foo.C : @MyAnnotation annotates "
- + cHref + "' in the Declare Summary section", b);
- }
-
- /**
- * The target of a declare method annotation should have the
- * 'annotated by' relationship in the ajdoc within the method
- * information
- */
- public void testMethodAnnotatedBy() throws Exception {
- initialiseProject("declareForms");
- File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareAtMethod.aj")};
- runAjdoc("private","1.5",files);
-
- File htmlFile = new File(getAbsolutePathOutdir() + "/foo/C.html");
- if (!htmlFile.exists()) {
- fail("couldn't find " + htmlFile.getAbsolutePath() + " - were there compilation errors?");
- }
-
- boolean b = AjdocOutputChecker.detailSectionContainsRel(
- htmlFile,"=== METHOD DETAIL",
- "amethod()",
- HtmlDecorator.HtmlRelationshipKind.ANNOTATED_BY,
- "declare @method: public * foo.C.*(..) : @MyAnnotation");
- assertTrue("Should have 'amethod() annotated by " +
- "declare @method: public * foo.C.*(..) : @MyAnnotation" +
- "' in the Method Detail section", b);
- b = AjdocOutputChecker.summarySectionContainsRel(
- htmlFile,"=== METHOD SUMMARY",
- "amethod()",
- HtmlDecorator.HtmlRelationshipKind.ANNOTATED_BY,
- "declare @method: public * foo.C.*(..) : @MyAnnotation");
- assertTrue("Should have 'amethod() annotated by " +
- "declare @method: public * foo.C.*(..) : @MyAnnotation" +
- "' in the Method Summary section", b);
- }
-
- /**
- * The target of a declare method annotation should have the
- * 'annotated by' relationship in the ajdoc within the method
- * information
- */
- public void testConstructorAnnotatedBy() throws Exception {
- initialiseProject("declareForms");
- File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareAtConstructor.aj")};
- runAjdoc("private","1.5",files);
-
- File htmlFile = new File(getAbsolutePathOutdir() + "/foo/C.html");
- if (!htmlFile.exists()) {
- fail("couldn't find " + htmlFile.getAbsolutePath()
- + " - were there compilation errors?");
- }
-
- boolean b = AjdocOutputChecker.detailSectionContainsRel(
- htmlFile,"=== CONSTRUCTOR DETAIL",
- "C(java.lang.String)",
- HtmlDecorator.HtmlRelationshipKind.ANNOTATED_BY,
- "declare @constructor: foo.C.new(..) : @MyAnnotation");
- assertTrue("Should have '" + doIt + " annotated by " +
- "declare @constructor: foo.C.new(..) : @MyAnnotation" +
- "' in the Method Detail section", b);
- b = AjdocOutputChecker.summarySectionContainsRel(
- htmlFile,"=== CONSTRUCTOR SUMMARY",
- "C(java.lang.String)",
- HtmlDecorator.HtmlRelationshipKind.ANNOTATED_BY,
- "declare @constructor: foo.C.new(..) : @MyAnnotation");
- assertTrue("Should have '" + doIt + " annotated by " +
- "declare @constructor: foo.C.new(..) : @MyAnnotation" +
- "' in the Method Summary section", b);
- }
-
- /**
- * The target of a declare method annotation should have the
- * 'annotated by' relationship in the ajdoc within the method
- * information
- */
- public void testFieldAnnotatedBy() throws Exception {
- initialiseProject("declareForms");
- File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareAtField.aj")};
- runAjdoc("private","1.5",files);
-
- File htmlFile = new File(getAbsolutePathOutdir() + "/foo/C.html");
- if (!htmlFile.exists()) {
- fail("couldn't find " + htmlFile.getAbsolutePath()
- + " - were there compilation errors?");
- }
-
- boolean b = AjdocOutputChecker.detailSectionContainsRel(
- htmlFile,"=== FIELD DETAIL",
- "x",
- HtmlDecorator.HtmlRelationshipKind.ANNOTATED_BY,
- "declare @field: int foo.C.* : @MyAnnotation");
- assertTrue("Should have '" + doIt + " annotated by " +
- "declare @field: int foo.C.* : @MyAnnotation" +
- "' in the Field Detail section", b);
- b = AjdocOutputChecker.summarySectionContainsRel(
- htmlFile,"=== FIELD SUMMARY",
- "x",
- HtmlDecorator.HtmlRelationshipKind.ANNOTATED_BY,
- "declare @field: int foo.C.* : @MyAnnotation");
- assertTrue("Should have '" + doIt + " annotated by " +
- "declare @field: int foo.C.* : @MyAnnotation" +
- "' in the Field Summary section", b);
- }
-
- /**
- * The target of a declare method annotation should have the
- * 'annotated by' relationship in the ajdoc within the method
- * information
- */
- public void testTypeAnnotatedBy() throws Exception {
- initialiseProject("declareForms");
- File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareAtType.aj")};
- runAjdoc("private","1.5",files);
-
- File htmlFile = new File(getAbsolutePathOutdir() + "/foo/C.html");
- if (!htmlFile.exists()) {
- fail("couldn't find " + htmlFile.getAbsolutePath()
- + " - were there compilation errors?");
- }
- boolean b = AjdocOutputChecker.classDataSectionContainsRel(
- htmlFile,
- HtmlDecorator.HtmlRelationshipKind.ANNOTATED_BY,
- "declare @type: foo.C : @MyAnnotation");
- assertTrue("The class data section should have 'annotated by" +
- " declare @type: foo.C : @MyAnnotation'",b);
- }
-
- /**
- * Test that info for both "matches declare" and "advised by"
- * appear in the ajdoc for a method when the method is affected
- * by both.
- */
- public void testMatchesDeclareAndAdvisedBy() throws Exception {
- initialiseProject("declareForms");
- File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "A.aj")};
- runAjdoc("private","1.4",files);
-
- File htmlFile = new File(getAbsolutePathOutdir() + "/foo/C.html");
- if (!htmlFile.exists()) {
- fail("couldn't find " + htmlFile.getAbsolutePath()
- + " - were there compilation errors?");
- }
-
- boolean b = AjdocOutputChecker.detailSectionContainsRel(
- htmlFile,"=== METHOD DETAIL",
- "amethod()",
- HtmlDecorator.HtmlRelationshipKind.MATCHES_DECLARE,
- "declare warning: quot;warningquot;");
- assertTrue("Should have 'amethod() matches declare declare warning: " +
- "quot;warningquot;' in the Method Detail section", b);
- b = AjdocOutputChecker.summarySectionContainsRel(
- htmlFile,"=== METHOD SUMMARY",
- "amethod()",
- HtmlDecorator.HtmlRelationshipKind.MATCHES_DECLARE,
- "declare warning: quot;warningquot;");
- assertTrue("Should have 'amethod() matches declare declare warning: " +
- "quot;warningquot;' in the Method Summary section", b);
-
- b = AjdocOutputChecker.detailSectionContainsRel(
- htmlFile,"=== METHOD DETAIL",
- "amethod()",
- HtmlDecorator.HtmlRelationshipKind.ADVISED_BY,
- "before(): p..");
- assertTrue("the Method Detail should have amethod() advised by before(): p..",b);
-
- b = AjdocOutputChecker.summarySectionContainsRel(
- htmlFile,"=== METHOD SUMMARY",
- "amethod()",
- HtmlDecorator.HtmlRelationshipKind.ADVISED_BY,
- "before(): p..");
- assertTrue("the Method Summary should have amethod() advised by before(): p..",b);
- }
-
- /**
- * Test that if there are two declare parents statements within
- * an aspect, one which extends and one which implements, that the
- * ajdoc shows the correct information
- */
- public void testTwoDeclareParents() throws Exception {
- initialiseProject("declareForms");
- File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareParents.aj")};
- runAjdoc("private","1.4",files);
-
- File htmlFile = new File(getAbsolutePathOutdir() + "/foo/DeclareParents.html");
- if (!htmlFile.exists()) {
- fail("couldn't find " + htmlFile.getAbsolutePath()
- + " - were there compilation errors?");
- }
-
- String[] strings = {
- "declare parents: implements Serializable",
- "HREF=\"../foo/Class1.html\"",
- "declare parents: extends Observable",
- "HREF=\"../foo/Class2.html\""};
-
- // check that the correct declare statements are there
- for (int i = 0; i < strings.length - 1; i = i+2) {
- boolean b = AjdocOutputChecker.detailSectionContainsRel(
- htmlFile,"DECLARE DETAIL SUMMARY",strings[i],
- HtmlDecorator.HtmlRelationshipKind.DECLARED_ON,
- strings[i+1]);
- assertTrue("Should have ' " + strings[i] + " declared on " + strings[i+1] +
- "' in the Declare Detail section", b);
- }
-
- for (int i = 0; i < strings.length - 1; i = i+2) {
- boolean b = AjdocOutputChecker.summarySectionContainsRel(
- htmlFile,"DECLARE SUMMARY",
- strings[i],
- HtmlDecorator.HtmlRelationshipKind.DECLARED_ON,
- strings[i+1]);
- assertTrue("Should have ' " + strings[i] + " declared on " + strings[i+1] +
- "' in the Declare Summary section", b);
- }
-
- // check that we don't have declare statements for those that don't
- // exist in the code
- boolean b = AjdocOutputChecker.detailSectionContainsRel(
- htmlFile,"DECLARE DETAIL SUMMARY",strings[0],
- HtmlDecorator.HtmlRelationshipKind.DECLARED_ON,
- strings[3]);
- assertFalse("Should not have ' " + strings[0] + " declared on " + strings[3] +
- "' in the Declare Detail section", b);
-
- }
-
- }
|