| /******************************************************************************* |
| * Copyright (c) 2004, 2013 Tasktop Technologies and others. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * https://www.eclipse.org/legal/epl-2.0 |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Tasktop Technologies - initial API and implementation |
| * Frank Becker - improvements |
| *******************************************************************************/ |
| |
| package org.eclipse.mylyn.bugzilla.tests.ui; |
| |
| import junit.framework.TestCase; |
| |
| import org.eclipse.core.runtime.IAdaptable; |
| import org.eclipse.jface.text.Document; |
| import org.eclipse.jface.text.Region; |
| import org.eclipse.jface.text.TextViewer; |
| import org.eclipse.jface.text.hyperlink.IHyperlink; |
| import org.eclipse.mylyn.commons.ui.PlatformUiUtil; |
| import org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin; |
| import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager; |
| import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; |
| import org.eclipse.mylyn.internal.tasks.ui.editors.TaskHyperlinkDetector; |
| import org.eclipse.mylyn.tasks.core.ITask; |
| import org.eclipse.mylyn.tasks.core.TaskRepository; |
| import org.eclipse.mylyn.tasks.core.data.TaskAttribute; |
| import org.eclipse.mylyn.tasks.ui.TaskHyperlink; |
| import org.eclipse.mylyn.tasks.ui.TasksUi; |
| import org.eclipse.mylyn.tests.util.TasksUiTestUtil; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.widgets.Shell; |
| |
| /** |
| * @author Rob Elves |
| * @author Terry Hon |
| * @author Frank Becker |
| */ |
| public class BugzillaTaskHyperlinkDetectorTest extends TestCase { |
| |
| private static final String DUPLICATE_NUMBER = "112233"; |
| |
| private static final String DUPLICATE = "duplicate of " + DUPLICATE_NUMBER; |
| |
| private static final String ATTACHMENT_NUMBER = "445566"; |
| |
| private static final String ATTACHMENT_OLD = "Created an attachment (id=" + ATTACHMENT_NUMBER + ")"; |
| |
| private static final String ATTACHMENT_NEW = "Created attachment" + ATTACHMENT_NUMBER; |
| |
| private final String TASK_FORMAT_1 = "task#123"; |
| |
| private final String TASK_FORMAT_2 = "task# 123"; |
| |
| private final String TASK_FORMAT_3 = "task123"; |
| |
| private final String TASK_FORMAT_4 = "task #123"; |
| |
| private final String BUG_FORMAT_1 = "bug# 123"; |
| |
| private final String BUG_FORMAT_2 = "bug # 123"; |
| |
| private final String BUG_FORMAT_3 = "bug123"; |
| |
| private final String BUG_FORMAT_4 = "bug #123"; |
| |
| private final String BUG_FORMAT_1_2 = "bug# 2"; |
| |
| private final String TASK_FORMAT_1_COMMENT_2 = "task#123 comment #44556677"; |
| |
| private final String TASK_FORMAT_2_COMMENT_2 = "task# 123 comment #44556677"; |
| |
| private final String TASK_FORMAT_3_COMMENT_2 = "task123 comment #44556677"; |
| |
| private final String TASK_FORMAT_4_COMMENT_2 = "task #123 comment #44556677"; |
| |
| private final String BUG_FORMAT_1_COMMENT_2 = "bug# 123 comment #44556677"; |
| |
| private final String BUG_FORMAT_2_COMMENT_2 = "bug # 123 comment #44556677"; |
| |
| private final String BUG_FORMAT_3_COMMENT_2 = "bug123 comment #44556677"; |
| |
| private final String BUG_FORMAT_4_COMMENT_2 = "bug #123 comment #44556677"; |
| |
| private final String TASK_FORMAT_1_COMMENT_3 = "task#123 comment#44556677"; |
| |
| private final String TASK_FORMAT_2_COMMENT_3 = "task# 123 comment#44556677"; |
| |
| private final String TASK_FORMAT_3_COMMENT_3 = "task123 comment#44556677"; |
| |
| private final String TASK_FORMAT_4_COMMENT_3 = "task #123 comment#44556677"; |
| |
| private final String BUG_FORMAT_1_COMMENT_3 = "bug# 123 comment#44556677"; |
| |
| private final String BUG_FORMAT_2_COMMENT_3 = "bug # 123 comment#44556677"; |
| |
| private final String BUG_FORMAT_3_COMMENT_3 = "bug123 comment#44556677"; |
| |
| private final String BUG_FORMAT_4_COMMENT_3 = "bug #123 comment#44556677"; |
| |
| private final String TASK_FORMAT_1_COMMENT_4 = "task#123 comment # 44556677"; |
| |
| private final String TASK_FORMAT_2_COMMENT_4 = "task# 123 comment # 44556677"; |
| |
| private final String TASK_FORMAT_3_COMMENT_4 = "task123 comment # 44556677"; |
| |
| private final String TASK_FORMAT_4_COMMENT_4 = "task #123 comment # 44556677"; |
| |
| private final String BUG_FORMAT_1_COMMENT_4 = "bug# 123 comment # 44556677"; |
| |
| private final String BUG_FORMAT_2_COMMENT_4 = "bug # 123 comment # 44556677"; |
| |
| private final String BUG_FORMAT_3_COMMENT_4 = "bug123 comment # 44556677"; |
| |
| private final String BUG_FORMAT_4_COMMENT_4 = "bug #123 comment # 44556677"; |
| |
| private final String COMMENT_1 = "comment#44556677"; |
| |
| private final String COMMENT_2 = "comment #44556677"; |
| |
| private final String COMMENT_3 = "comment # 44556677"; |
| |
| private final String COMMENT_4 = "comment# 44556677"; |
| |
| private final String COMMENT_5 = "comment 44556677"; |
| |
| private TaskHyperlinkDetector detector; |
| |
| private TaskRepository repository1; |
| |
| private TaskRepository repository2; |
| |
| private TextViewer viewer; |
| |
| private String[] commentFormats; |
| |
| private String[] bugFormats; |
| |
| private String[] bugCommentFormats; |
| |
| private TaskRepositoryManager repositoryManager; |
| |
| private Shell shell; |
| |
| protected TaskRepository activeRepository; |
| |
| protected ITask task; |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| |
| detector = new TaskHyperlinkDetector(); |
| TasksUiTestUtil.ensureTasksUiInitialization(); |
| |
| repository1 = new TaskRepository(BugzillaCorePlugin.CONNECTOR_KIND, "repository_url1"); |
| repository2 = new TaskRepository(BugzillaCorePlugin.CONNECTOR_KIND, "repository_url2"); |
| task = TasksUi.getRepositoryModel().createTask(repository1, "123"); |
| detector.setContext(new IAdaptable() { |
| @SuppressWarnings("rawtypes") |
| public Object getAdapter(Class adapter) { |
| if (adapter == TaskRepository.class) { |
| return activeRepository; |
| } else if (adapter == ITask.class) { |
| return task; |
| } |
| return null; |
| } |
| }); |
| setRepository(repository1); |
| |
| shell = new Shell(); |
| viewer = new TextViewer(shell, SWT.NONE); |
| |
| repositoryManager = TasksUiPlugin.getRepositoryManager(); |
| repositoryManager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath()); |
| |
| commentFormats = new String[] { COMMENT_1, COMMENT_2, COMMENT_3, COMMENT_4, COMMENT_5 }; |
| bugFormats = new String[] { TASK_FORMAT_1, TASK_FORMAT_2, TASK_FORMAT_3, TASK_FORMAT_4, BUG_FORMAT_1, |
| BUG_FORMAT_2, BUG_FORMAT_3, BUG_FORMAT_4 }; |
| bugCommentFormats = new String[] { TASK_FORMAT_1_COMMENT_2, TASK_FORMAT_2_COMMENT_2, TASK_FORMAT_3_COMMENT_2, |
| TASK_FORMAT_4_COMMENT_2, BUG_FORMAT_1_COMMENT_2, BUG_FORMAT_2_COMMENT_2, BUG_FORMAT_3_COMMENT_2, |
| BUG_FORMAT_4_COMMENT_2, TASK_FORMAT_1_COMMENT_3, TASK_FORMAT_2_COMMENT_3, TASK_FORMAT_3_COMMENT_3, |
| TASK_FORMAT_4_COMMENT_3, BUG_FORMAT_1_COMMENT_3, BUG_FORMAT_2_COMMENT_3, BUG_FORMAT_3_COMMENT_3, |
| BUG_FORMAT_4_COMMENT_3, TASK_FORMAT_1_COMMENT_4, TASK_FORMAT_2_COMMENT_4, TASK_FORMAT_3_COMMENT_4, |
| TASK_FORMAT_4_COMMENT_4, BUG_FORMAT_1_COMMENT_4, BUG_FORMAT_2_COMMENT_4, BUG_FORMAT_3_COMMENT_4, |
| BUG_FORMAT_4_COMMENT_4 }; |
| } |
| |
| private void setRepository(final TaskRepository repository) { |
| this.activeRepository = repository; |
| } |
| |
| @Override |
| protected void tearDown() throws Exception { |
| super.tearDown(); |
| |
| detector.dispose(); |
| repositoryManager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath()); |
| |
| shell.dispose(); |
| } |
| |
| public void testBeginningWithSpecialChars() { |
| for (String format : bugFormats) { |
| String testString = "First line\n:" + format + " is at the beginning"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNull(comment); |
| } |
| for (String format : bugCommentFormats) { |
| String testString = "First line\n:" + format + " is at the beginning"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNotNull(comment); |
| assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); |
| } |
| for (String format : commentFormats) { |
| String testString = "First line\n:" + format + " is at the beginning"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNotNull(comment); |
| assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); |
| } |
| } |
| |
| public void testBeginningOfSecondLine() { |
| for (String format : bugFormats) { |
| String testString = "First line\n" + format + " is at the beginning"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNull(comment); |
| } |
| for (String format : bugCommentFormats) { |
| String testString = "First line\n" + format + " is at the beginning"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNotNull(comment); |
| assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); |
| } |
| for (String format : commentFormats) { |
| String testString = "First line\n" + format + " is at the beginning"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNotNull(comment); |
| assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); |
| } |
| } |
| |
| public void testBeginningOfSecondLineWithisWhitespace() { |
| for (String format : bugFormats) { |
| String testString = "First line\n \t " + format + " is at the beginning"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNull(comment); |
| } |
| for (String format : bugCommentFormats) { |
| String testString = "First line\n \t " + format + " is at the beginning"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNotNull(format, comment); |
| assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); |
| } |
| for (String format : commentFormats) { |
| String testString = "First line\n \t " + format + " is at the beginning"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNotNull(comment); |
| assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); |
| } |
| } |
| |
| public void testBeginning() { |
| for (String format : bugFormats) { |
| String testString = format + " is at the beginning"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNull(comment); |
| } |
| for (String format : bugCommentFormats) { |
| String testString = format + " is at the beginning"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNotNull(comment); |
| assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); |
| } |
| for (String format : commentFormats) { |
| String testString = format + " is at the beginning"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNotNull(comment); |
| assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); |
| } |
| } |
| |
| public void testEnd() { |
| for (String format : bugFormats) { |
| String testString = "is ends with " + format; |
| viewer.setDocument(new Document(testString)); |
| int i = testString.indexOf(format); |
| Region region = new Region(i, testString.length() - i); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNull(comment); |
| } |
| for (String format : bugCommentFormats) { |
| String testString = "is ends with " + format; |
| viewer.setDocument(new Document(testString)); |
| int i = testString.indexOf(format); |
| Region region = new Region(i, testString.length() - i); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNotNull(comment); |
| assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); |
| } |
| for (String format : commentFormats) { |
| String testString = "is ends with " + format; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNotNull(comment); |
| assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); |
| } |
| } |
| |
| public void testMiddle() { |
| for (String format : bugFormats) { |
| String testString = "is a " + format + " in the middle"; |
| viewer.setDocument(new Document(testString)); |
| int i = testString.indexOf(format); |
| Region region = new Region(i, testString.length() - i); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNull(comment); |
| } |
| for (String format : bugCommentFormats) { |
| String testString = "is a " + format + " in the middle"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNotNull(comment); |
| assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); |
| } |
| for (String format : commentFormats) { |
| String testString = "is a " + format + " in the middle"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| TaskHyperlink taskLink = (TaskHyperlink) links[0]; |
| assertEquals("123", taskLink.getTaskId()); |
| assertEquals(testString.indexOf(format), taskLink.getHyperlinkRegion().getOffset()); |
| Object comment = taskLink.getSelection(); |
| assertNotNull(comment); |
| assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment); |
| } |
| } |
| |
| public void testTwoOnSingleLine() { |
| String testString = "is a " + BUG_FORMAT_1 + " in the middle and at the end " + BUG_FORMAT_1_2; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(2, links.length); |
| assertEquals(testString.indexOf(BUG_FORMAT_1), links[0].getHyperlinkRegion().getOffset()); |
| assertEquals(testString.indexOf(BUG_FORMAT_1_2), links[1].getHyperlinkRegion().getOffset()); |
| } |
| |
| public void testMultiLine() { |
| String testString = "is a the first line\n this is the second which ends with a bug, " + BUG_FORMAT_1_2; |
| viewer.setDocument(new Document(testString)); |
| int i = testString.indexOf(BUG_FORMAT_1_2); |
| Region region = new Region(i, testString.length() - i); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertEquals(i, links[0].getHyperlinkRegion().getOffset()); |
| } |
| |
| public void testDuplicate() { |
| String testString = "*** This bug has been marked as a " + DUPLICATE + " ***"; |
| viewer.setDocument(new Document(testString)); |
| int i = testString.indexOf(DUPLICATE); |
| Region region = new Region(i, testString.length() - i); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertEquals(testString.indexOf(DUPLICATE), links[0].getHyperlinkRegion().getOffset()); |
| } |
| |
| public void testNoRepositoryInViewNoRepositoryInManager() { |
| String testString = "bug 123"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| setRepository(null); |
| |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, true); |
| assertNull(links); |
| } |
| |
| public void testRepositoryInViewNoRepositoryInManager() { |
| String testString = "bug 123"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| setRepository(repository1); |
| |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, true); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| assertEquals(((TaskHyperlink) links[0]).getRepository(), repository1); |
| } |
| |
| public void testNoRepositoryInViewOneRepositoryInManager() { |
| String testString = "bug 123"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| setRepository(null); |
| |
| repositoryManager.addRepository(repository1); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, true); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| assertEquals(((TaskHyperlink) links[0]).getRepository(), repository1); |
| } |
| |
| public void testRepositoryInViewOneRepositoryInManager() { |
| String testString = "bug 123"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| setRepository(repository1); |
| repositoryManager.addRepository(repository1); |
| |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, true); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| assertEquals(((TaskHyperlink) links[0]).getRepository(), repository1); |
| } |
| |
| public void testNoRepositoryInViewTwoRepositoryInManager() { |
| String testString = "bug 123"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| setRepository(null); |
| repositoryManager.addRepository(repository1); |
| repositoryManager.addRepository(repository2); |
| |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, true); |
| assertNotNull(links); |
| assertEquals(2, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| assertTrue(links[1] instanceof TaskHyperlink); |
| |
| // order of repository is not defined so we must test the two cases |
| if (((TaskHyperlink) links[0]).getRepository() == repository1) { |
| assertEquals(((TaskHyperlink) links[1]).getRepository(), repository2); |
| } else { |
| assertEquals(((TaskHyperlink) links[0]).getRepository(), repository2); |
| } |
| } |
| |
| public void testRepositoryInViewTwoRepositoryInManager() { |
| String testString = "bug 123"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| setRepository(repository1); |
| repositoryManager.addRepository(repository1); |
| repositoryManager.addRepository(repository2); |
| |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, true); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| assertEquals(((TaskHyperlink) links[0]).getRepository(), repository1); |
| } |
| |
| public void testMatchMultipleEmptyRegion() { |
| String testString = "bug 123 bug 345"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(10, 0); |
| setRepository(repository1); |
| repositoryManager.addRepository(repository1); |
| |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, true); |
| assertNotNull(links); |
| assertEquals(1, links.length); |
| assertTrue(links[0] instanceof TaskHyperlink); |
| assertEquals("345", ((TaskHyperlink) links[0]).getTaskId()); |
| } |
| |
| public void testAttachmentOld() { |
| String testString = ATTACHMENT_OLD; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| if (PlatformUiUtil.supportsMultipleHyperlinkPresenter()) { |
| assertEquals(2, links.length); |
| assertEquals(testString.indexOf(ATTACHMENT_OLD), links[0].getHyperlinkRegion().getOffset()); |
| assertEquals(testString.indexOf(ATTACHMENT_OLD), links[1].getHyperlinkRegion().getOffset()); |
| } else { |
| assertEquals(1, links.length); |
| assertEquals(testString.indexOf(ATTACHMENT_OLD), links[0].getHyperlinkRegion().getOffset()); |
| } |
| } |
| |
| public void testAttachmentNew() { |
| String testString = ATTACHMENT_NEW; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| if (PlatformUiUtil.supportsMultipleHyperlinkPresenter()) { |
| assertEquals(2, links.length); |
| assertEquals(testString.indexOf(ATTACHMENT_NEW), links[0].getHyperlinkRegion().getOffset()); |
| assertEquals(testString.indexOf(ATTACHMENT_NEW), links[1].getHyperlinkRegion().getOffset()); |
| } else { |
| assertEquals(1, links.length); |
| assertEquals(testString.indexOf(ATTACHMENT_NEW), links[0].getHyperlinkRegion().getOffset()); |
| } |
| } |
| |
| public void testCommentLotsOfWhitespace() { |
| String testString = "bug 123 d bug 245 comment 1"; |
| viewer.setDocument(new Document(testString)); |
| Region region = new Region(0, testString.length()); |
| IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); |
| assertNotNull(links); |
| assertEquals(2, links.length); |
| assertEquals(testString.indexOf("bug 123"), links[0].getHyperlinkRegion().getOffset()); |
| assertEquals(testString.indexOf("bug 245 comment 1"), links[1].getHyperlinkRegion().getOffset()); |
| } |
| |
| } |