1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-09-09 11:33:20 +02:00

Remove obsolete partition scanner conformance tests

This commit is contained in:
Anton Leherbauer 2010-11-17 15:10:32 +00:00
parent 8462736684
commit d63d948594

View file

@ -29,7 +29,7 @@ import org.eclipse.jface.text.rules.IPartitionTokenScanner;
import org.eclipse.jface.text.rules.IToken; import org.eclipse.jface.text.rules.IToken;
/** /**
* Compares two <code>IParitionTokenScanner</code>s for conformance and performance. * Compares two <code>IParitionTokenScanner</code>s for performance.
*/ */
public class PartitionTokenScannerTest extends TestCase { public class PartitionTokenScannerTest extends TestCase {
private static boolean PRINT_TIMING = false; private static boolean PRINT_TIMING = false;
@ -37,7 +37,7 @@ public class PartitionTokenScannerTest extends TestCase {
private IPartitionTokenScanner fTestee; private IPartitionTokenScanner fTestee;
public PartitionTokenScannerTest(String name) { public PartitionTokenScannerTest(String name) {
super(name); super(name);
} }
@Override @Override
@ -51,7 +51,7 @@ public class PartitionTokenScannerTest extends TestCase {
try { try {
InputStream stream= getClass().getResourceAsStream(name); InputStream stream= getClass().getResourceAsStream(name);
BufferedReader reader= new BufferedReader(new InputStreamReader(stream)); BufferedReader reader= new BufferedReader(new InputStreamReader(stream));
StringBuilder buffer= new StringBuilder(); StringBuilder buffer= new StringBuilder();
String line= reader.readLine(); String line= reader.readLine();
while (line != null) { while (line != null) {
@ -60,21 +60,21 @@ public class PartitionTokenScannerTest extends TestCase {
line= reader.readLine(); line= reader.readLine();
} }
return new Document(buffer.toString()); return new Document(buffer.toString());
} catch (IOException e) { } catch (IOException e) {
} }
return null; return null;
} }
private static IDocument getRandomDocument(int size) { private static IDocument getRandomDocument(int size) {
final char[] characters= {'/', '*', '\'', '"', '\r', '\n', '\\'}; final char[] characters= {'/', '*', '\'', '"', '\r', '\n', '\\'};
final StringBuilder buffer= new StringBuilder(); final StringBuilder buffer= new StringBuilder();
for (int i= 0; i < size; i++) { for (int i= 0; i < size; i++) {
final int randomIndex= (int) (Math.random() * characters.length); final int randomIndex= (int) (Math.random() * characters.length);
buffer.append(characters[randomIndex]); buffer.append(characters[randomIndex]);
} }
return new Document(buffer.toString()); return new Document(buffer.toString());
} }
@ -82,35 +82,6 @@ public class PartitionTokenScannerTest extends TestCase {
return new TestSuite(PartitionTokenScannerTest.class); return new TestSuite(PartitionTokenScannerTest.class);
} }
public void testTestCaseLF() {
testConformance(getDocument("TestCase.txt", "\n"));
}
public void testTestCaseCRLF() {
testConformance(getDocument("TestCase.txt", "\r\n"));
}
public void testTestCaseCR() {
testConformance(getDocument("TestCase.txt", "\r"));
}
public void testTestCase2LF() {
testConformance(getDocument("TestCase2.txt", "\n"));
}
public void testTestCase2CRLF() {
testConformance(getDocument("TestCase2.txt", "\r\n"));
}
public void testTestCase2CR() {
testConformance(getDocument("TestCase2.txt", "\r"));
}
// XXX not fully passing because of "\<LF> and '\<LF>
// public void testRandom() {
// testConformance(getRandomDocument(2048));
// }
/** /**
* Tests performance of the testee against the reference IPartitionTokenScanner. * Tests performance of the testee against the reference IPartitionTokenScanner.
*/ */
@ -126,11 +97,11 @@ public class PartitionTokenScannerTest extends TestCase {
System.out.println("testee time = " + testeeTime / 1000.0f); System.out.println("testee time = " + testeeTime / 1000.0f);
System.out.println("factor = " + (float) referenceTime / testeeTime); System.out.println("factor = " + (float) referenceTime / testeeTime);
} }
// dangerous: assert no regression in performance // dangerous: assert no regression in performance
// assertTrue(testeeTime <= referenceTime); // assertTrue(testeeTime <= referenceTime);
} }
private long getTime(IPartitionTokenScanner scanner, IDocument document, int count) { private long getTime(IPartitionTokenScanner scanner, IDocument document, int count) {
final long start= System.currentTimeMillis(); final long start= System.currentTimeMillis();
@ -138,92 +109,52 @@ public class PartitionTokenScannerTest extends TestCase {
testPerformance(scanner, document); testPerformance(scanner, document);
final long end= System.currentTimeMillis(); final long end= System.currentTimeMillis();
return end - start; return end - start;
} }
private void testConformance(final IDocument document) {
final StringBuilder message= new StringBuilder();
fReference.setRange(document, 0, document.getLength());
fTestee.setRange(document, 0, document.getLength());
while (true) {
message.setLength(0);
final IToken referenceToken= fReference.nextToken();
final IToken testeeToken= fTestee.nextToken();
assertTokenEquals(referenceToken, testeeToken);
final int referenceOffset= fReference.getTokenOffset();
final int testeeOffset= fTestee.getTokenOffset();
message.append(", offset = " + referenceOffset);
message.append(", " + extractString(document, referenceOffset));
assertEquals(message.toString(), referenceOffset, testeeOffset);
int referenceLength= fReference.getTokenLength();
final int testeeLength= fTestee.getTokenLength();
if(referenceLength != testeeLength) {
// Special case where the dum scanner creates a token for every character...
IToken t;
while(referenceLength < testeeLength) {
t = fReference.nextToken();
referenceLength += fReference.getTokenLength();
if(referenceToken != t)
assertEquals(message.toString(), referenceToken, t);
}
}
message.append(", length = " + referenceLength);
assertEquals(message.toString(), referenceLength, testeeLength);
if (referenceToken.isEOF())
break;
}
}
private static void testPerformance(final IPartitionTokenScanner scanner, final IDocument document) { private static void testPerformance(final IPartitionTokenScanner scanner, final IDocument document) {
scanner.setRange(document, 0, document.getLength()); scanner.setRange(document, 0, document.getLength());
IToken token; IToken token;
do { do {
token= scanner.nextToken(); token= scanner.nextToken();
scanner.getTokenOffset(); scanner.getTokenOffset();
scanner.getTokenLength(); scanner.getTokenLength();
} while (!token.isEOF()); } while (!token.isEOF());
} }
private void assertTokenEquals(IToken expected, IToken actual) { private void assertTokenEquals(IToken expected, IToken actual) {
assertEquals(expected.isEOF(), actual.isEOF()); assertEquals(expected.isEOF(), actual.isEOF());
assertEquals(expected.isOther(), actual.isOther()); assertEquals(expected.isOther(), actual.isOther());
assertEquals(expected.isUndefined(), actual.isUndefined()); assertEquals(expected.isUndefined(), actual.isUndefined());
assertEquals(expected.isWhitespace(), actual.isWhitespace()); assertEquals(expected.isWhitespace(), actual.isWhitespace());
} }
private static String extractString(IDocument document, int offset) { private static String extractString(IDocument document, int offset) {
final StringBuilder buffer= new StringBuilder(); final StringBuilder buffer= new StringBuilder();
try { try {
IRegion region= document.getLineInformationOfOffset(offset); IRegion region= document.getLineInformationOfOffset(offset);
String line= document.get(region.getOffset(), region.getLength()); String line= document.get(region.getOffset(), region.getLength());
int offsetIndex= offset - region.getOffset(); int offsetIndex= offset - region.getOffset();
// XXX kludge // XXX kludge
if (offsetIndex > line.length()) if (offsetIndex > line.length())
offsetIndex= line.length(); offsetIndex= line.length();
buffer.append("line = " + document.getLineOfOffset(offset) + ": ["); buffer.append("line = " + document.getLineOfOffset(offset) + ": [");
buffer.append(line.substring(0, offsetIndex)); buffer.append(line.substring(0, offsetIndex));
buffer.append("<POS>"); buffer.append("<POS>");
buffer.append(line.substring(offsetIndex)); buffer.append(line.substring(offsetIndex));
buffer.append(']'); buffer.append(']');
} catch (BadLocationException e) { } catch (BadLocationException e) {
} }
return buffer.toString(); return buffer.toString();
} }
/** /**
@ -231,7 +162,7 @@ public class PartitionTokenScannerTest extends TestCase {
*/ */
private static String escape(String string) { private static String escape(String string) {
final StringBuilder buffer= new StringBuilder(); final StringBuilder buffer= new StringBuilder();
final int length= string.length(); final int length= string.length();
for (int i= 0; i < length; i++) { for (int i= 0; i < length; i++) {
final char character= string.charAt(i); final char character= string.charAt(i);
@ -243,17 +174,17 @@ public class PartitionTokenScannerTest extends TestCase {
case '\r': case '\r':
buffer.append("\\r"); buffer.append("\\r");
break; break;
case '\n': case '\n':
buffer.append("\\n"); buffer.append("\\n");
break; break;
default: default:
buffer.append(character); buffer.append(character);
break; break;
} }
} }
return buffer.toString(); return buffer.toString();
} }
} }