diff options
author | Christian Kamm <christian.d.kamm@nokia.com> | 2010-09-10 14:12:14 +0200 |
---|---|---|
committer | Christian Kamm <christian.d.kamm@nokia.com> | 2010-09-13 12:38:34 +0200 |
commit | 642b6fb0d3511f5d125c7079f8a3db77fc3c5da4 (patch) | |
tree | cca9c3be236dd19f9193e656585f2b5a3fc901d2 /tests | |
parent | eed852d8be2a36e5a5d6bd1b30f72faed0c7a336 (diff) |
C++ indenter: Separate indent into logical indent and padding.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp | 212 |
1 files changed, 124 insertions, 88 deletions
diff --git a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp index 9e6b88a1ea9..50b3e73a4f6 100644 --- a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp +++ b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp @@ -52,22 +52,44 @@ private Q_SLOTS: struct Line { Line(QString l) : line(l) + , expectedIndent(-1) + , expectedPadding(0) { for (int i = 0; i < l.size(); ++i) { if (!l.at(i).isSpace()) { expectedIndent = i; - return; + break; + } + } + if (expectedIndent == -1) + expectedIndent = l.size(); + if (expectedIndent < l.size() && l.at(expectedIndent) == '~') { + line[expectedIndent] = ' '; + for (int i = expectedIndent + 1; i < l.size(); ++i) { + if (!l.at(i).isSpace()) { + expectedPadding = i - expectedIndent; + break; + } } } - expectedIndent = l.size(); } - Line(QString l, int expect) - : line(l), expectedIndent(expect) - {} + Line(QString l, int expectIndent, int expectPadding = 0) + : line(l), expectedIndent(expectIndent), expectedPadding(expectPadding) + { + for (int i = 0; i < line.size(); ++i) { + if (line.at(i) == '~') { + line[i] = ' '; + break; + } + if (!line.at(i).isSpace()) + break; + } + } QString line; int expectedIndent; + int expectedPadding; }; QString concatLines(QList<Line> lines) @@ -98,10 +120,15 @@ void checkIndent(QList<Line> data, int style = 0) foreach (const Line &l, data) { QTextBlock b = document.findBlockByLineNumber(i); if (l.expectedIndent != -1) { - int actualIndent = formatter.indentFor(b); - if (actualIndent != l.expectedIndent) { + int indent, padding; + formatter.indentFor(b, &indent, &padding); + if (indent != l.expectedIndent) { QFAIL(QString("Wrong indent in line %1 with text '%2', expected indent %3, got %4").arg( - QString::number(i+1), l.line, QString::number(l.expectedIndent), QString::number(actualIndent)).toLatin1().constData()); + QString::number(i+1), l.line, QString::number(l.expectedIndent), QString::number(indent)).toLatin1().constData()); + } + if (padding != l.expectedPadding) { + QFAIL(QString("Wrong padding in line %1 with text '%2', expected padding %3, got %4").arg( + QString::number(i+1), l.line, QString::number(l.expectedPadding), QString::number(padding)).toLatin1().constData()); } } formatter.updateLineStateChange(b); @@ -265,11 +292,11 @@ void tst_CodeFormatter::ifStatementLongCondition() data << Line("void foo()") << Line("{") << Line(" if (foo &&") - << Line(" bar") - << Line(" || (a + b > 4") - << Line(" && foo(bar)") - << Line(" )") - << Line(" ) {") + << Line(" ~ bar") + << Line(" ~ || (a + b > 4") + << Line(" ~ && foo(bar)") + << Line(" ~ )") + << Line(" ~ ) {") << Line(" foo;") << Line(" }") << Line("}"); @@ -486,31 +513,31 @@ void tst_CodeFormatter::expressionContinuation() QList<Line> data; data << Line("void foo() {") << Line(" return (a <= b &&") - << Line(" c <= d);") + << Line(" ~ c <= d);") << Line(" return (qMax <= qMin() &&") - << Line(" qMax(r1.top(), r2.top()) <= qMin(r1.bottom(), r2.bottom()));") + << Line(" ~ qMax(r1.top(), r2.top()) <= qMin(r1.bottom(), r2.bottom()));") << Line(" return a") - << Line(" == b && c == d;") + << Line(" ~ == b && c == d;") << Line(" return a ==") - << Line(" b && c == d;") + << Line(" ~ b && c == d;") << Line(" return a == b") - << Line(" && c == d;") + << Line(" ~ && c == d;") << Line(" return a == b &&") - << Line(" c == d;") + << Line(" ~ c == d;") << Line(" return a == b && c") - << Line(" == d;") + << Line(" ~ == d;") << Line(" return a == b && c ==") - << Line(" d;") + << Line(" ~ d;") << Line(" return a == b && c == d;") << Line(" qDebug() << foo") - << Line(" << bar << moose") - << Line(" << bar +") - << Line(" foo - blah(1)") - << Line(" << '?'") - << Line(" << \"\\n\";") + << Line(" ~ << bar << moose") + << Line(" ~ << bar +") + << Line(" ~ foo - blah(1)") + << Line(" ~ << '?'") + << Line(" ~ << \"\\n\";") << Line(" i += foo(") - << Line(" bar,") - << Line(" 2);") + << Line(" ~ bar,") + << Line(" ~ 2);") << Line("}") ; checkIndent(data); @@ -545,15 +572,15 @@ void tst_CodeFormatter::ternary() data << Line("void foo() {") << Line(" int i = a ? b : c;") << Line(" foo += a_bigger_condition ?") - << Line(" b") - << Line(" : c;") + << Line(" ~ b") + << Line(" ~ : c;") << Line(" int i = a ?") - << Line(" b : c;") + << Line(" ~ b : c;") << Line(" int i = a ? b") - << Line(" : c +") - << Line(" 2;") + << Line(" ~ : c +") + << Line(" ~ 2;") << Line(" int i = (a ? b : c) + (foo") - << Line(" bar);") + << Line(" ~ bar);") << Line("}") ; checkIndent(data); @@ -582,21 +609,21 @@ void tst_CodeFormatter::bug2() QList<Line> data; data << Line("void foo() {") << Line(" const int sourceY = foo(") - << Line(" bar(") - << Line(" car(a,") - << Line(" b),") - << Line(" b),") - << Line(" foo);") + << Line(" ~ bar(") + << Line(" ~ car(a,") + << Line(" ~ b),") + << Line(" ~ b),") + << Line(" ~ foo);") << Line(" const int sourceY =") - << Line(" foo(") - << Line(" bar(a,") - << Line(" b),") - << Line(" b);") + << Line(" ~ foo(") + << Line(" ~ bar(a,") + << Line(" ~ b),") + << Line(" ~ b);") << Line(" int j;") << Line(" const int sourceY =") - << Line(" (direction == DirectionEast || direction == DirectionWest) ?") - << Line(" (sourceRect.top() + (sourceRect.bottom() - sourceRect.top()) / 2)") - << Line(" : (direction == DirectionSouth ? sourceRect.bottom() : sourceRect.top());") + << Line(" ~ (direction == DirectionEast || direction == DirectionWest) ?") + << Line(" ~ (sourceRect.top() + (sourceRect.bottom() - sourceRect.top()) / 2)") + << Line(" ~ : (direction == DirectionSouth ? sourceRect.bottom() : sourceRect.top());") << Line("}") ; checkIndent(data); @@ -610,15 +637,15 @@ void tst_CodeFormatter::braceList() << Line(" b,") << Line("};") << Line("enum Foo { a = 2,") - << Line(" a = 3,") - << Line(" b = 4") - << Line(" };") + << Line(" ~ a = 3,") + << Line(" ~ b = 4") + << Line("~ };") << Line("void foo () {") << Line(" int a[] = { foo, bar, ") - << Line(" car };") + << Line(" ~ car };") << Line(" int a[] = {") - << Line(" a, b,") - << Line(" c") + << Line(" ~ a, b,") + << Line(" ~ c") << Line(" };") << Line(" int k;") ; @@ -669,23 +696,23 @@ void tst_CodeFormatter::memberInitializer() { QList<Line> data; data << Line("void foo()") - << Line(" : baR()") - << Line(" , m_member(23)") + << Line("~ : baR()") + << Line("~ , m_member(23)") << Line("{") << Line("}") << Line("class Foo {") << Line(" Foo()") - << Line(" : baR(),") - << Line(" moodoo(barR + ") - << Line(" 42),") - << Line(" xyz()") + << Line(" ~ : baR(),") + << Line(" ~ moodoo(barR + ") + << Line(" ~ 42),") + << Line(" ~ xyz()") << Line(" {}") << Line("};") << Line("class Foo {") << Line(" Foo() :") - << Line(" baR(),") - << Line(" moo(barR)") - << Line(" , moo(barR)") + << Line(" ~ baR(),") + << Line(" ~ moo(barR)") + << Line(" ~ , moo(barR)") << Line(" {}") << Line("}") ; @@ -700,11 +727,20 @@ void tst_CodeFormatter::templates() << Line("private:") << Line("};") << Line("template <class T,") - << Line(" typename F, int i") - << Line(" >") + << Line("~ typename F, int i") + << Line("~ >") << Line("class Foo {") << Line("private:") << Line("};") + << Line("template <template <class F,") + << Line("~ class D>,") + << Line("~ typename F>") + << Line("class Foo { };") + << Line("template <") + << Line("~ template <") + << Line("~ class F, class D>,") + << Line("~ typename F>") + << Line("class Foo { };") ; checkIndent(data); } @@ -806,17 +842,17 @@ void tst_CodeFormatter::streamOp() data << Line("void foo () {") << Line(" qDebug() << foo") - << Line(" << bar << moose") - << Line(" << bar +") - << Line(" foo - blah(1)") - << Line(" << '?'") - << Line(" << \"\\n\";") + << Line(" ~ << bar << moose") + << Line(" ~ << bar +") + << Line(" ~ foo - blah(1)") + << Line(" ~ << '?'") + << Line(" ~ << \"\\n\";") << Line(" qDebug() << foo") - << Line(" << bar << moose", 13) - << Line(" << bar +") - << Line(" foo - blah(1)") - << Line(" << '?'") - << Line(" << \"\\n\";") + << Line(" << bar << moose", 4, 9) + << Line(" ~ << bar +") + << Line(" ~ foo - blah(1)") + << Line(" ~ << '?'") + << Line(" ~ << \"\\n\";") ; checkIndent(data); } @@ -843,26 +879,26 @@ void tst_CodeFormatter::nestedInitializer() QList<Line> data; data << Line("SomeStruct v[] = {") - << Line(" {2}, {3},") - << Line(" {4}, {5},") + << Line("~ {2}, {3},") + << Line("~ {4}, {5},") << Line("};") << Line("S v[] = {{1}, {2},") - << Line(" {3}, {4},") - << Line(" };") + << Line("~ {3}, {4},") + << Line("~ };") << Line("SomeStruct v[] = {") - << Line(" {") - << Line(" {2, 3,") - << Line(" 4, 5},") - << Line(" {1},") - << Line(" }") + << Line("~ {") + << Line("~ {2, 3,") + << Line("~ 4, 5},") + << Line("~ {1},") + << Line("~ }") << Line("};") << Line("SomeStruct v[] = {{{2, 3},") - << Line(" {4, 5}") - << Line(" },") - << Line(" {{2, 3},") - << Line(" {4, 5},") - << Line(" }") - << Line(" };") + << Line("~ {4, 5}") + << Line("~ },") + << Line("~ {{2, 3},") + << Line("~ {4, 5},") + << Line("~ }") + << Line("~ };") << Line("int i;") ; checkIndent(data); |