blob: c2de5bec1197da7be35bb61ecf19e8f46dbbc525 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 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
* Doug Satchwell <doug.satchwell@ymail.com> - provided Java only test code on which #measureIgnoreCase(...) is built
*******************************************************************************/
package org.eclipse.jdt.text.tests.performance;
import junit.framework.Test;
import org.eclipse.test.performance.PerformanceMeter;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.rules.IRule;
import org.eclipse.jface.text.rules.IWordDetector;
import org.eclipse.jface.text.rules.RuleBasedScanner;
import org.eclipse.jface.text.rules.Token;
import org.eclipse.jface.text.rules.WordRule;
/**
* Performance tests for {@link WordRule}.
*
* @since 3.6
*/
public class WordRulePerformanceTest extends TextPerformanceTestCase2 {
private static final String RULE_WORD_PREFIX= "aTeSt";
private static final int WORDS_PER_RULE= 200;
private static final String WORD_IN_DOCUMENT= "AtEsT199";
private static final int WORDS_IN_DOCUMENT= 100000;
public static Test suite() {
return new PerfTestSuite(WordRulePerformanceTest.class);
}
private final class MyWordDetector implements IWordDetector {
@Override
public boolean isWordPart(char c) {
return Character.isLetterOrDigit(c);
}
@Override
public boolean isWordStart(char c) {
return Character.isLetterOrDigit(c);
}
}
private Document fDocument;
private WordRule fWordRule;
@Override
protected void setUp() throws Exception {
super.setUp();
StringBuffer sb= new StringBuffer();
for (int i= 0; i < WORDS_IN_DOCUMENT; i++)
sb.append(WORD_IN_DOCUMENT).append("\n");
fDocument= new Document(sb.toString());
fWordRule= new WordRule(new MyWordDetector(), Token.UNDEFINED, true);
for (int i= 0; i < WORDS_PER_RULE; i++)
fWordRule.addWord(RULE_WORD_PREFIX + i, new Token("myToken_" + i));
}
public void measureIgnoreCase(PerformanceMeter meter) {
RuleBasedScanner scanner= new RuleBasedScanner();
scanner.setRules(new IRule[] { fWordRule });
scanner.setRange(fDocument, 0, fDocument.getLength());
meter.start();
while (scanner.nextToken() != Token.EOF) {
}
meter.stop();
}
}