blob: 0666da5435f5a94a80d5b65cac41ac71d9cd0994 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2008 Tasktop Technologies 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:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.tasks.tests.ui;
import junit.framework.TestCase;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.Region;
import org.eclipse.jface.text.TextViewer;
import org.eclipse.jface.text.hyperlink.IHyperlink;
import org.eclipse.mylyn.internal.tasks.ui.editors.TaskHyperlinkDetector;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.tests.TaskTestUtil;
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryConnectorUi;
import org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi;
import org.eclipse.mylyn.tasks.ui.AbstractTaskHyperlinkDetector;
/**
* @author Steffen Pingel
*/
public class TaskHyperlinkDetectorTest extends TestCase {
protected MockRepositoryConnectorUi connectorUi;
protected TaskRepository repository;
@Override
protected void setUp() throws Exception {
repository = TaskTestUtil.createMockRepository();
connectorUi = new MockRepositoryConnectorUi();
}
protected IHyperlink[] detect(final String text, int start, int length) {
AbstractTaskHyperlinkDetector detector = createHyperlinkDetector();
return detector.detectHyperlinks(new TextViewer() {
@Override
public IDocument getDocument() {
return new Document(text);
}
}, new Region(start, length), true);
}
protected AbstractTaskHyperlinkDetector createHyperlinkDetector() {
TaskHyperlinkDetector detector = new TaskHyperlinkDetector() {
@Override
protected TaskRepository getTaskRepository(ITextViewer textViewer) {
return repository;
}
@Override
protected AbstractRepositoryConnectorUi getConnectorUi(TaskRepository repository) {
return connectorUi;
}
};
return detector;
}
public void testMultiple() {
IHyperlink[] links = detect("123 456 789", 4, 5);
assertNotNull(links);
assertEquals(2, links.length);
assertEquals(new Region(4, 3), links[0].getHyperlinkRegion());
assertEquals(new Region(8, 1), links[1].getHyperlinkRegion());
}
public void testMultipleFullRegion() {
IHyperlink[] links = detect("123 456 789", 0, 11);
assertEquals(3, links.length);
assertEquals(new Region(0, 3), links[0].getHyperlinkRegion());
assertEquals(new Region(4, 3), links[1].getHyperlinkRegion());
assertEquals(new Region(8, 3), links[2].getHyperlinkRegion());
}
public void testSingleZeroLenghtRegion() {
IHyperlink[] links = detect("123 456 789", 5, 0);
assertEquals(1, links.length);
}
public void testSpaceZeroLengthRegion() {
IHyperlink[] links = detect("1234 789", 5, 0);
assertNull(links);
}
}