blob: d6a8ae3cab7b89339f54ffe9951fdffae7901622 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2009 IBM Corporation and others.
* 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 org.eclipse.jdt.core.tests.model;
import java.io.File;
import junit.framework.Test;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.tests.util.Util;
import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
/**
* Test class for completion in Javadoc comment of a package declaration.
*/
public class JavadocPackageCompletionModelTest extends AbstractJavadocCompletionModelTest {
public JavadocPackageCompletionModelTest(String name) {
super(name);
}
static {
// TESTS_RANGE = new int[] { 11, 12 };
// TESTS_NUMBERS = new int[] { 16 };
}
public static Test suite() {
return buildModelTestSuite(JavadocPackageCompletionModelTest.class);
}
/* (non-Javadoc)
* @see org.eclipse.jdt.core.tests.model.AbstractJavadocCompletionModelTest#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
setUpProjectOptions(CompilerOptions.VERSION_1_5);
}
/*
* Write files for self-hosting debug.
*/
protected void writeFiles(String[] sources) {
// Get write directory path
if (WRITE_DIR_FILE == null) return;
// Get test name
String testName = getName();
int idx = testName.indexOf(" - ");
if (idx > 0) {
testName = testName.substring(idx+3);
}
// testName = "Test"+testName.substring(4);
// Write sources to dir
int length = sources.length / 2;
for (int i=0; i<length; i++) {
// Get pathes
IPath filePath = new Path(sources[2*i]).removeFirstSegments(2); // remove project and source folder
IPath dirPath = filePath.removeLastSegments(1);
String fileDir = dirPath.toString();
String typeName = filePath.removeFileExtension().lastSegment();
if (i==0 && !typeName.equals("package-info")) {
System.err.println("Invalid type name: '"+typeName+"' for test "+testName);
continue;
}
// Create package dirs or delete dirs if already exist
File packageDir = new File(WRITE_DIR_FILE, fileDir);
if (!PACKAGE_FILES.contains(packageDir)) {
if (packageDir.exists()) {
PACKAGE_FILES.add(packageDir);
Util.flushDirectoryContent(packageDir);
} else if (packageDir.mkdirs()) {
PACKAGE_FILES.add(packageDir);
} else {
System.err.println(packageDir+" does not exist and CANNOT be created!!!");
continue;
}
}
// Create test dir
File testDir = new File(packageDir, testName);
if (!testDir.exists() && !testDir.mkdir()) {
System.err.println(testDir+" does not exist and CANNOT be created!!!");
continue;
}
// Store names info
String fullPathName = testDir.getAbsolutePath()+"\\"+typeName+".java";
System.out.println("Write file "+fullPathName);
String contents = null;
if (i==0) { // package-info
contents = sources[2*i+1].substring(0, sources[2*i+1].lastIndexOf(';'));
contents += "."+testName+";\n";
} else {
int index = sources[2*i+1].indexOf(';');
contents = sources[2*i+1].substring(0, index);
contents += "."+testName;
contents += sources[2*i+1].substring(index);
}
Util.writeToFile(contents, fullPathName);
}
}
/**
* @category Tests for tag names completion
*/
public void test001() throws JavaModelException {
String source =
"/**\n" +
" * Completion on empty tag name:\n" +
" * @\n" +
" */\n" +
"package javadoc;\n";
completeInJavadoc("/Completion/src/javadoc/package-info.java", source, true, "@");
assertResults(
"author[JAVADOC_BLOCK_TAG]{@author, null, null, author, null, "+this.positions+JAVADOC_RELEVANCE+"}\n" +
"see[JAVADOC_BLOCK_TAG]{@see, null, null, see, null, "+this.positions+JAVADOC_RELEVANCE+"}\n" +
"version[JAVADOC_BLOCK_TAG]{@version, null, null, version, null, "+this.positions+JAVADOC_RELEVANCE+"}\n" +
"category[JAVADOC_BLOCK_TAG]{@category, null, null, category, null, "+this.positions+JAVADOC_RELEVANCE+"}\n" +
"since[JAVADOC_BLOCK_TAG]{@since, null, null, since, null, "+this.positions+JAVADOC_RELEVANCE+"}\n" +
"serial[JAVADOC_BLOCK_TAG]{@serial, null, null, serial, null, "+this.positions+JAVADOC_RELEVANCE+"}\n" +
"link[JAVADOC_INLINE_TAG]{{@link}, null, null, link, null, "+this.positions+JAVADOC_RELEVANCE+"}\n" +
"docRoot[JAVADOC_INLINE_TAG]{{@docRoot}, null, null, docRoot, null, "+this.positions+JAVADOC_RELEVANCE+"}\n" +
"linkplain[JAVADOC_INLINE_TAG]{{@linkplain}, null, null, linkplain, null, "+this.positions+JAVADOC_RELEVANCE+"}\n" +
"value[JAVADOC_INLINE_TAG]{{@value}, null, null, value, null, "+this.positions+JAVADOC_RELEVANCE+"}"
);
}
public void test002() throws JavaModelException {
String source =
"/**\n" +
" * Completion on impossible tag name:\n" +
" * @deprec\n" +
" */\n" +
"package javadoc;\n";
completeInJavadoc("/Completion/src/javadoc/package-info.java", source, true, "@deprec");
assertResults("");
}
public void test003() throws JavaModelException {
String source =
"/**\n" +
" * Completion on one letter:\n" +
" * @a\n" +
" */\n" +
"package javadoc;\n";
completeInJavadoc("/Completion/src/javadoc/package-info.java", source, true, "@a");
assertResults(
"author[JAVADOC_BLOCK_TAG]{@author, null, null, author, null, "+this.positions+JAVADOC_RELEVANCE+"}"
);
}
public void test004() throws JavaModelException {
String source =
"/**\n" +
" * Completion with several letters:\n" +
" * @ser\n" +
" */\n" +
"package javadoc;\n";
completeInJavadoc("/Completion/src/javadoc/package-info.java", source, true, "@ser");
assertResults(
"serial[JAVADOC_BLOCK_TAG]{@serial, null, null, serial, null, "+this.positions+JAVADOC_RELEVANCE+"}"
);
}
public void test005() throws JavaModelException {
String source =
"/**\n" +
" * Completion on full tag name:\n" +
" * @since\n" +
" */\n" +
"package javadoc;\n";
completeInJavadoc("/Completion/src/javadoc/package-info.java", source, true, "@since");
assertResults(
"since[JAVADOC_BLOCK_TAG]{@since, null, null, since, null, "+this.positions+JAVADOC_RELEVANCE+"}"
);
}
public void test006() throws JavaModelException {
String source =
"/**\n" +
" * Completion on @ inside text\n" +
" */\n" +
"package javadoc;\n";
completeInJavadoc("/Completion/src/javadoc/package-info.java", source, true, "@");
assertResults(
"link[JAVADOC_INLINE_TAG]{{@link}, null, null, link, null, "+this.positions+JAVADOC_RELEVANCE+"}\n" +
"docRoot[JAVADOC_INLINE_TAG]{{@docRoot}, null, null, docRoot, null, "+this.positions+JAVADOC_RELEVANCE+"}\n" +
"linkplain[JAVADOC_INLINE_TAG]{{@linkplain}, null, null, linkplain, null, "+this.positions+JAVADOC_RELEVANCE+"}\n" +
"value[JAVADOC_INLINE_TAG]{{@value}, null, null, value, null, "+this.positions+JAVADOC_RELEVANCE+"}"
);
}
public void test007() throws JavaModelException {
String source =
"/**\n" +
" * Completion on @d inside text\n" +
" */\n" +
"package javadoc;\n";
completeInJavadoc("/Completion/src/javadoc/package-info.java", source, true, "@d");
assertResults(
"docRoot[JAVADOC_INLINE_TAG]{{@docRoot}, null, null, docRoot, null, "+this.positions+JAVADOC_RELEVANCE+"}"
);
}
/**
* @category Tests for types completion
*/
public void test010() throws JavaModelException {
String source =
"/**\n" +
" * Completion after:\n" +
" * @see Obj\n" +
" */\n" +
"package javadoc.tags;\n";
completeInJavadoc("/Completion/src/javadoc/tags/package-info.java", source, true, "Obj");
assertResults(
"Object[TYPE_REF]{Object, java.lang, Ljava.lang.Object;, null, null, "+this.positions+R_DRICUNR+"}"
);
}
public void test011() throws JavaModelException {
String source =
"/**\n" +
" * Completion after:\n" +
" * @see BasicTestRef\n" +
" */\n" +
"package javadoc.tags;\n";
completeInJavadoc("/Completion/src/javadoc/tags/package-info.java", source, true, "BasicTestRef");
assertResults(
"BasicTestReferences[TYPE_REF]{org.eclipse.jdt.core.tests.BasicTestReferences, org.eclipse.jdt.core.tests, Lorg.eclipse.jdt.core.tests.BasicTestReferences;, null, null, "+this.positions+R_DRICNR+"}"
);
}
public void test012() throws JavaModelException {
String source =
"/**\n" +
" * Completion after:\n" +
" * @see org.eclipse.jdt.core.tests.BasicTestRef\n" +
" * Note: JDT-UI failed on this one\n" +
" */\n" +
"package javadoc.tags;\n";
completeInJavadoc("/Completion/src/javadoc/tags/package-info.java", source, true, "org.eclipse.jdt.core.tests.BasicTestRef");
assertResults(
"BasicTestReferences[TYPE_REF]{org.eclipse.jdt.core.tests.BasicTestReferences, org.eclipse.jdt.core.tests, Lorg.eclipse.jdt.core.tests.BasicTestReferences;, null, null, "+this.positions+R_DRICQNR+"}"
);
}
public void test013() throws JavaModelException {
String source =
"/**\n" +
" * Completion after:\n" +
" * @see java.la\n" +
" * Note: JDT-UI fails on this one\n" +
" */\n" +
"package javadoc.tags;\n";
completeInJavadoc("/Completion/src/javadoc/tags/package-info.java", source, true, "java.la");
assertResults(
"java.lang.annotation[PACKAGE_REF]{java.lang.annotation, java.lang.annotation, null, null, null, "+this.positions+R_DRICQNR+"}\n" +
"java.lang[PACKAGE_REF]{java.lang, java.lang, null, null, null, "+this.positions+R_DRICQNR+"}"
);
}
public void test014() throws JavaModelException {
String source =
"/**\n" +
" * Completion after:\n" +
" * @see pack.Bin\n" +
" */\n" +
"package javadoc.tags;\n";
completeInJavadoc("/Completion/src/javadoc/tags/package-info.java", source, true, "pack.Bin");
assertSortedResults(
"Bin1[TYPE_REF]{pack.Bin1, pack, Lpack.Bin1;, null, null, "+this.positions+R_DRICQNR+"}\n" +
"Bin2[TYPE_REF]{pack.Bin2, pack, Lpack.Bin2;, null, null, "+this.positions+R_DRICQNR+"}\n" +
"Bin3[TYPE_REF]{pack.Bin3, pack, Lpack.Bin3;, null, null, "+this.positions+R_DRICQNR+"}\n" +
"Bin4[TYPE_REF]{pack.Bin4, pack, Lpack.Bin4;, null, null, "+this.positions+R_DRICQNR+"}\n" +
"Bin5[TYPE_REF]{pack.Bin5, pack, Lpack.Bin5;, null, null, "+this.positions+R_DRICQNR+"}"
);
}
public void test015() throws JavaModelException {
String source =
"/**\n" +
" * Completion after:\n" +
" * @see I\n" +
" * Note: completion list shoud not include base types.\n" +
" */\n" +
"package javadoc.tags;\n";
completeInJavadoc("/Completion/src/javadoc/tags/package-info.java", source, true, "I");
assertSortedResults(
"IllegalMonitorStateException[TYPE_REF]{IllegalMonitorStateException, java.lang, Ljava.lang.IllegalMonitorStateException;, null, null, "+this.positions+R_DRICUNR+"}\n" +
"InterruptedException[TYPE_REF]{InterruptedException, java.lang, Ljava.lang.InterruptedException;, null, null, "+this.positions+R_DRICUNR+"}\n" +
"Inherited[TYPE_REF]{java.lang.annotation.Inherited, java.lang.annotation, Ljava.lang.annotation.Inherited;, null, null, "+this.positions+R_DRICNR+"}\n" +
"Iterator[TYPE_REF]{java.util.Iterator, java.util, Ljava.util.Iterator;, null, null, "+this.positions+R_DRICNR+"}"
);
}
/**
* @category Tests for fields completion
*/
public void test020() throws JavaModelException {
String source =
"/**\n" +
" * Completion after:\n" +
" * @see BasicTestReferences#FIE\n" +
" */\n" +
"package javadoc.tags;\n";
completeInJavadoc("/Completion/src/javadoc/tags/package-info.java", source, true, "FIE");
assertResults("");
}
public void test021() throws JavaModelException {
String source =
"/**\n" +
" * Completion after:\n" +
" * @see org.eclipse.jdt.core.tests.BasicTestReferences#FIE\n" +
" */\n" +
"package javadoc.tags;\n";
completeInJavadoc("/Completion/src/javadoc/tags/package-info.java", source, true, "FIE");
assertResults(
"FIELD[FIELD_REF]{FIELD, Lorg.eclipse.jdt.core.tests.BasicTestReferences;, I, FIELD, null, "+this.positions+R_DRICNR+"}"
);
}
public void test022() throws JavaModelException {
String[] sources = {
"/Completion/src/javadoc/tags/package-info.java",
"/**\n" +
" * Completion after:\n" +
" * @see OtherTypes#bar\n" +
" */\n" +
"package javadoc.tags;\n",
"/Completion/src/javadoc/tags/OtherTypes.java",
"package javadoc.tags;\n" +
"public class OtherTypes {\n" +
" int bar;\n" +
"}"
};
completeInJavadoc(sources, true, "bar");
assertResults(
"bar[FIELD_REF]{bar, Ljavadoc.tags.OtherTypes;, I, bar, null, "+this.positions+R_DRICENNRNS+"}"
);
}
public void test023() throws JavaModelException {
String source =
"/**\n" +
" * Completion after:\n" +
" * @see BasicTestReferences#\n" +
" */\n" +
"package javadoc.tags;\n";
completeInJavadoc("/Completion/src/javadoc/tags/package-info.java", source, true, "#", 0); // empty token
assertResults("");
}
public void test024() throws JavaModelException {
String source =
"/**\n" +
" * Completion after:\n" +
" * @see org.eclipse.jdt.core.tests.BasicTestReferences#\n" +
" */\n" +
"package javadoc.tags;\n";
completeInJavadoc("/Completion/src/javadoc/tags/package-info.java", source, true, "#", 0); // empty token
assertResults(
"FIELD[FIELD_REF]{FIELD, Lorg.eclipse.jdt.core.tests.BasicTestReferences;, I, FIELD, null, "+this.positions+R_DRICNR+"}\n" +
"wait[METHOD_REF]{wait(long, int), Ljava.lang.Object;, (JI)V, wait, (millis, nanos), "+this.positions+R_DRICNRNS+"}\n" +
"wait[METHOD_REF]{wait(long), Ljava.lang.Object;, (J)V, wait, (millis), "+this.positions+R_DRICNRNS+"}\n" +
"wait[METHOD_REF]{wait(), Ljava.lang.Object;, ()V, wait, null, "+this.positions+R_DRICNRNS+"}\n" +
"toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, "+this.positions+R_DRICNRNS+"}\n" +
"notifyAll[METHOD_REF]{notifyAll(), Ljava.lang.Object;, ()V, notifyAll, null, "+this.positions+R_DRICNRNS+"}\n" +
"notify[METHOD_REF]{notify(), Ljava.lang.Object;, ()V, notify, null, "+this.positions+R_DRICNRNS+"}\n" +
"hashCode[METHOD_REF]{hashCode(), Ljava.lang.Object;, ()I, hashCode, null, "+this.positions+R_DRICNRNS+"}\n" +
"getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class<+Ljava.lang.Object;>;, getClass, null, "+this.positions+R_DRICNRNS+"}\n" +
"finalize[METHOD_REF]{finalize(), Ljava.lang.Object;, ()V, finalize, null, "+this.positions+R_DRICNRNS+"}\n" +
"equals[METHOD_REF]{equals(Object), Ljava.lang.Object;, (Ljava.lang.Object;)Z, equals, (obj), "+this.positions+R_DRICNRNS+"}\n" +
"clone[METHOD_REF]{clone(), Ljava.lang.Object;, ()Ljava.lang.Object;, clone, null, "+this.positions+R_DRICNRNS+"}\n" +
"BasicTestReferences[METHOD_REF<CONSTRUCTOR>]{BasicTestReferences(), Lorg.eclipse.jdt.core.tests.BasicTestReferences;, ()V, BasicTestReferences, null, "+this.positions+R_DRINR+"}"
);
}
public void test025() throws JavaModelException {
String[] sources = {
"/Completion/src/javadoc/tags/package-info.java",
"/**\n" +
" * Completion after:\n" +
" * @see OtherTypes#\n" +
" */\n" +
"package javadoc.tags;\n",
"/Completion/src/javadoc/tags/OtherTypes.java",
"package javadoc.tags;\n" +
"public class OtherTypes {\n" +
" int foo;\n" +
" Object obj;\n" +
"}"
};
completeInJavadoc(sources, true, "#", 0); // empty token
assertResults(
"obj[FIELD_REF]{obj, Ljavadoc.tags.OtherTypes;, Ljava.lang.Object;, obj, null, "+this.positions+R_DRICNRNS+"}\n" +
"foo[FIELD_REF]{foo, Ljavadoc.tags.OtherTypes;, I, foo, null, "+this.positions+R_DRICNRNS+"}\n" +
"wait[METHOD_REF]{wait(long, int), Ljava.lang.Object;, (JI)V, wait, (millis, nanos), "+this.positions+R_DRICNRNS+"}\n" +
"wait[METHOD_REF]{wait(long), Ljava.lang.Object;, (J)V, wait, (millis), "+this.positions+R_DRICNRNS+"}\n" +
"wait[METHOD_REF]{wait(), Ljava.lang.Object;, ()V, wait, null, "+this.positions+R_DRICNRNS+"}\n" +
"toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, "+this.positions+R_DRICNRNS+"}\n" +
"notifyAll[METHOD_REF]{notifyAll(), Ljava.lang.Object;, ()V, notifyAll, null, "+this.positions+R_DRICNRNS+"}\n" +
"notify[METHOD_REF]{notify(), Ljava.lang.Object;, ()V, notify, null, "+this.positions+R_DRICNRNS+"}\n" +
"hashCode[METHOD_REF]{hashCode(), Ljava.lang.Object;, ()I, hashCode, null, "+this.positions+R_DRICNRNS+"}\n" +
"getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class<+Ljava.lang.Object;>;, getClass, null, "+this.positions+R_DRICNRNS+"}\n" +
"finalize[METHOD_REF]{finalize(), Ljava.lang.Object;, ()V, finalize, null, "+this.positions+R_DRICNRNS+"}\n" +
"equals[METHOD_REF]{equals(Object), Ljava.lang.Object;, (Ljava.lang.Object;)Z, equals, (obj), "+this.positions+R_DRICNRNS+"}\n" +
"clone[METHOD_REF]{clone(), Ljava.lang.Object;, ()Ljava.lang.Object;, clone, null, "+this.positions+R_DRICNRNS+"}\n" +
"OtherTypes[METHOD_REF<CONSTRUCTOR>]{OtherTypes(), Ljavadoc.tags.OtherTypes;, ()V, OtherTypes, null, "+this.positions+R_DRINR+"}"
);
}
/**
* @category Tests for methods completion
*/
public void test030() throws JavaModelException {
String[] sources = {
"/Completion/src/javadoc/tags/package-info.java",
"/**\n" +
" * Completion after:\n" +
" * @see OtherTypes#meth\n" +
" */\n" +
"package javadoc.tags;",
"/Completion/src/javadoc/tags/OtherTypes.java",
"package javadoc.tags;\n" +
"public class OtherTypes {\n" +
" void method() {};\n" +
"}"
};
completeInJavadoc(sources, true, "meth");
assertResults(
"method[METHOD_REF]{method(), Ljavadoc.tags.OtherTypes;, ()V, method, null, "+this.positions+R_DRICNRNS+"}"
);
}
public void test031() throws JavaModelException {
String[] sources = {
"/Completion/src/javadoc/tags/package-info.java",
"/**\n" +
" * Completion after:\n" +
" * @see OtherTypes#\n" +
" */\n" +
"package javadoc.tags;",
"/Completion/src/javadoc/tags/OtherTypes.java",
"package javadoc.tags;\n" +
"public class OtherTypes {\n" +
" void method() {};\n" +
" void foo() {};\n" +
"}"
};
completeInJavadoc(sources, true, "#", 0); // empty token
assertResults(
"method[METHOD_REF]{method(), Ljavadoc.tags.OtherTypes;, ()V, method, null, "+this.positions+R_DRICNRNS+"}\n" +
"foo[METHOD_REF]{foo(), Ljavadoc.tags.OtherTypes;, ()V, foo, null, "+this.positions+R_DRICNRNS+"}\n" +
"wait[METHOD_REF]{wait(long, int), Ljava.lang.Object;, (JI)V, wait, (millis, nanos), "+this.positions+R_DRICNRNS+"}\n" +
"wait[METHOD_REF]{wait(long), Ljava.lang.Object;, (J)V, wait, (millis), "+this.positions+R_DRICNRNS+"}\n" +
"wait[METHOD_REF]{wait(), Ljava.lang.Object;, ()V, wait, null, "+this.positions+R_DRICNRNS+"}\n" +
"toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, "+this.positions+R_DRICNRNS+"}\n" +
"notifyAll[METHOD_REF]{notifyAll(), Ljava.lang.Object;, ()V, notifyAll, null, "+this.positions+R_DRICNRNS+"}\n" +
"notify[METHOD_REF]{notify(), Ljava.lang.Object;, ()V, notify, null, "+this.positions+R_DRICNRNS+"}\n" +
"hashCode[METHOD_REF]{hashCode(), Ljava.lang.Object;, ()I, hashCode, null, "+this.positions+R_DRICNRNS+"}\n" +
"getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class<+Ljava.lang.Object;>;, getClass, null, "+this.positions+R_DRICNRNS+"}\n" +
"finalize[METHOD_REF]{finalize(), Ljava.lang.Object;, ()V, finalize, null, "+this.positions+R_DRICNRNS+"}\n" +
"equals[METHOD_REF]{equals(Object), Ljava.lang.Object;, (Ljava.lang.Object;)Z, equals, (obj), "+this.positions+R_DRICNRNS+"}\n" +
"clone[METHOD_REF]{clone(), Ljava.lang.Object;, ()Ljava.lang.Object;, clone, null, "+this.positions+R_DRICNRNS+"}\n" +
"OtherTypes[METHOD_REF<CONSTRUCTOR>]{OtherTypes(), Ljavadoc.tags.OtherTypes;, ()V, OtherTypes, null, "+this.positions+R_DRINR+"}"
);
}
/**
* @category Tests for constructors completion
*/
public void test040() throws JavaModelException {
String[] sources = {
"/Completion/src/javadoc/tags/package-info.java",
"/**\n" +
" * Completion after:\n" +
" * @see OtherTypes#O\n" +
" */\n" +
"package javadoc.tags;\n",
"/Completion/src/javadoc/tags/OtherTypes.java",
"package javadoc.tags;\n" +
"public class OtherTypes {\n" +
" void method() {};\n" +
" void foo() {};\n" +
"}"
};
completeInJavadoc(sources, true, "O", 2); // 2nd occurence
assertResults(
"OtherTypes[METHOD_REF<CONSTRUCTOR>]{OtherTypes(), Ljavadoc.tags.OtherTypes;, ()V, OtherTypes, null, "+this.positions+R_DRINR+"}"
);
}
public void test041() throws JavaModelException {
String[] sources = {
"/Completion/src/javadoc/tags/package-info.java",
"/**\n" +
" * Completion after:\n" +
" * @see OtherTypes#O\n" +
" */\n" +
"package javadoc.tags;\n",
"/Completion/src/javadoc/tags/OtherTypes.java",
"package javadoc.tags;\n" +
"public class OtherTypes {\n" +
" OtherTypes(int x) {};\n" +
" OtherTypes(Object obj, String str) {};\n" +
"}"
};
completeInJavadoc(sources, true, "O", 2); // 2nd occurence
assertResults(
"OtherTypes[METHOD_REF<CONSTRUCTOR>]{OtherTypes(Object, String), Ljavadoc.tags.OtherTypes;, (Ljava.lang.Object;Ljava.lang.String;)V, OtherTypes, (obj, str), "+this.positions+R_DRINR+"}\n" +
"OtherTypes[METHOD_REF<CONSTRUCTOR>]{OtherTypes(int), Ljavadoc.tags.OtherTypes;, (I)V, OtherTypes, (x), "+this.positions+R_DRINR+"}"
);
}
}