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:
parent
8462736684
commit
d63d948594
1 changed files with 27 additions and 96 deletions
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue