blob: 18abf4a9fa7a727ef09d08a1636a1f55311a84a8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2010 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.text.tests.performance;
import java.io.IOException;
import java.io.InputStreamReader;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
import org.eclipse.ui.internal.texteditor.quickdiff.DocumentLineDiffer;
import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.ui.texteditor.quickdiff.IQuickDiffReferenceProvider;
public abstract class AbstractDocumentLineDifferTest extends TextPerformanceTestCase {
private static final class TestReferenceProvider implements IQuickDiffReferenceProvider {
private final IDocument fDocument;
public TestReferenceProvider(IDocument reference) {
fDocument= reference;
}
@Override
public IDocument getReference(IProgressMonitor monitor) throws CoreException {
return fDocument;
}
@Override
public void dispose() {
}
@Override
public String getId() {
return "testProvider";
}
@Override
public void setActiveEditor(ITextEditor editor) {
}
@Override
public boolean isEnabled() {
return true;
}
@Override
public void setId(String id) {
}
}
protected static final String FAUST1;
protected static final String FAUST_FEW_CHANGES;
protected static final String SMALL_FAUST1;
protected static final String SMALL_FAUST_MANY_CHANGES;
protected static final String SMALL_FAUST_MANY_CHANGES_SAME_SIZE;
static {
String faust;
try {
faust= FileTool.read(new InputStreamReader(AbstractDocumentLineDifferTest.class.getResourceAsStream("faust1.txt"))).toString();
} catch (IOException x) {
faust= "";
x.printStackTrace();
}
FAUST1= faust;
FAUST_FEW_CHANGES= FAUST1.replaceAll("MARGARETE", "GRETCHEN");
SMALL_FAUST1= FAUST1.substring(0, 20000);
SMALL_FAUST_MANY_CHANGES= SMALL_FAUST1.replaceAll("\n", "\n_");
SMALL_FAUST_MANY_CHANGES_SAME_SIZE= SMALL_FAUST1.replaceAll(".\n", "_\n");
}
protected static final long MAX_WAIT= 10000; // wait 10 seconds at most
private Exception fFirstException;
private TestReferenceProvider fReferenceProvider;
protected void setUpFast() throws Exception {
setWarmUpRuns(10);
setMeasuredRuns(10);
IDocument reference= new Document(FAUST1);
fReferenceProvider= new TestReferenceProvider(reference);
}
protected void setUpSlow() throws Exception {
setWarmUpRuns(2);
setMeasuredRuns(3);
IDocument reference= new Document(SMALL_FAUST1);
fReferenceProvider= new TestReferenceProvider(reference);
}
@Override
protected void tearDown() throws Exception {
if (fFirstException != null)
throw fFirstException;
super.tearDown();
}
protected final void setUpDiffer(DocumentLineDiffer differ) {
differ.setReferenceProvider(fReferenceProvider);
}
}