Editor: Highlight background for whitespaces in strings and comments

The whitespaces are now highlighted with the same backgroundcolor as the characters.
Also added a test for the Lexer.

Task-number: QTCREATORBUG-5802

Change-Id: Ic1bcd8cfe30d6b8a0281b7963eaab310f972b9d2
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
This commit is contained in:
David Schulz
2012-01-24 12:46:17 +01:00
committed by Roberto Raggi
parent 8c2bcd14da
commit e46a5579d3
3 changed files with 127 additions and 9 deletions
+112
View File
@@ -34,6 +34,8 @@
#include <QtTest>
#include <QtDebug>
#include <SimpleLexer.h>
#include <Token.h>
#include <findcdbbreakpoint.h>
@@ -50,6 +52,14 @@ private slots:
void findBreakpoints();
void findBreakpoints2();
void testLexerComment();
void testLexerComment2();
void testLexerComment3();
void testLexerMultiLineComment();
void testLexerMultiLineComment2();
void testLexerMultiLineComment3();
void testLexerMultiLineComment4();
};
void tst_Misc::diagnosticClient_error()
@@ -177,5 +187,107 @@ void tst_Misc::findBreakpoints2()
QCOMPARE(findBreakpoint(7), 7U);
}
void tst_Misc::testLexerComment() {
const QByteArray src("// int a = 42 ");
SimpleLexer tokenize;
tokenize.setQtMocRunEnabled(false);
tokenize.setObjCEnabled(false);
tokenize.setCxx0xEnabled(true);
const QList<Token> tokens = tokenize(src);
QCOMPARE(tokenize.state(), 0);
QCOMPARE(tokens.size(), 1);
QCOMPARE(tokens[0].f.kind, 2U);
QCOMPARE(tokens[0].f.length, 17U);
}
void tst_Misc::testLexerComment2() {
const QByteArray src(" // int a = 42 ");
SimpleLexer tokenize;
tokenize.setQtMocRunEnabled(false);
tokenize.setObjCEnabled(false);
tokenize.setCxx0xEnabled(true);
const QList<Token> tokens = tokenize(src);
QCOMPARE(tokenize.state(), 0);
QCOMPARE(tokens.size(), 1);
QCOMPARE(tokens[0].f.kind, 2U);
QCOMPARE(tokens[0].f.length, 17U);
}
void tst_Misc::testLexerComment3() {
const QByteArray src(" int main( int argc, char** argv) { // Foo m_foo = 42 /n");
SimpleLexer tokenize;
tokenize.setQtMocRunEnabled(false);
tokenize.setObjCEnabled(false);
tokenize.setCxx0xEnabled(true);
const QList<Token> tokens = tokenize(src);
QCOMPARE(tokenize.state(), 0);
QCOMPARE(tokens.size(), 13);
QCOMPARE(tokens.last().f.kind, 2U);
QCOMPARE(tokens.last().f.length, 21U);
}
void tst_Misc::testLexerMultiLineComment() {
const QByteArray src("/* multi /n"
" * line /n");
SimpleLexer tokenize;
tokenize.setQtMocRunEnabled(false);
tokenize.setObjCEnabled(false);
tokenize.setCxx0xEnabled(true);
const QList<Token> tokens = tokenize(src);
QCOMPARE(tokenize.state(), 1);
QCOMPARE(tokens.size(), 1);
QCOMPARE(tokens[0].f.kind, 4U);
QCOMPARE(tokens.last().f.length, 22U);
}
void tst_Misc::testLexerMultiLineComment2() {
const QByteArray src("");
SimpleLexer tokenize;
tokenize.setQtMocRunEnabled(false);
tokenize.setObjCEnabled(false);
tokenize.setCxx0xEnabled(true);
QList<Token> tokens = tokenize(src,1);
QCOMPARE(tokenize.state(), 1);
QCOMPARE(tokens.size(), 1);
QCOMPARE(tokens[0].f.kind, 4U);
QCOMPARE(tokens[0].f.length, 1U);
}
void tst_Misc::testLexerMultiLineComment3() {
const QByteArray src(" ");
SimpleLexer tokenize;
tokenize.setQtMocRunEnabled(false);
tokenize.setObjCEnabled(false);
tokenize.setCxx0xEnabled(true);
const QList<Token> tokens = tokenize(src,1);
QCOMPARE(tokenize.state(), 1);
QCOMPARE(tokens.size(), 1);
QCOMPARE(tokens[0].f.kind, 4U);
QCOMPARE(tokens[0].f.length, 5U);
}
void tst_Misc::testLexerMultiLineComment4() {
const QByteArray src("int /* integer */ i");
SimpleLexer tokenize;
tokenize.setQtMocRunEnabled(false);
tokenize.setObjCEnabled(false);
tokenize.setCxx0xEnabled(true);
const QList<Token> tokens = tokenize(src,0);
QCOMPARE(tokenize.state(), 0);
QCOMPARE(tokens.size(), 3);
QCOMPARE(tokens[1].f.kind, 4U);
QCOMPARE(tokens[1].f.length, 13U);
}
QTEST_MAIN(tst_Misc)
#include "tst_misc.moc"