diff options
author | Andre Hartmann <aha_1980@gmx.de> | 2013-09-09 21:11:58 +0200 |
---|---|---|
committer | André Hartmann <aha_1980@gmx.de> | 2013-09-12 10:31:41 +0200 |
commit | 0ff2ed64602e530b05f9aace965727f968e99beb (patch) | |
tree | b48bd7186894298f273b2bed816902c1401e41bd /tests | |
parent | acff1adf01f05f1d8abf83fbd3e05b654a1ee072 (diff) | |
download | qt-creator-0ff2ed64602e530b05f9aace965727f968e99beb.tar.gz |
AnsiEscapeCodeHandler: Added auto tests.
First simple tests to check:
* pass-trough text without ANSI escape sequences
* text-color change in line
* text-bold change in line
Change-Id: I054a3fb218e95dfd5e160f1ae71dc0638bc5f239
Reviewed-by: Petar Perisin <petar.perisin@gmail.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/utils/ansiescapecodehandler/ansiescapecodehandler.pro | 10 | ||||
-rw-r--r-- | tests/auto/utils/ansiescapecodehandler/ansiescapecodehandler.qbs | 9 | ||||
-rw-r--r-- | tests/auto/utils/ansiescapecodehandler/tst_ansiescapecodehandler.cpp | 129 | ||||
-rw-r--r-- | tests/auto/utils/utils.pro | 2 | ||||
-rw-r--r-- | tests/auto/utils/utils.qbs | 5 |
5 files changed, 153 insertions, 2 deletions
diff --git a/tests/auto/utils/ansiescapecodehandler/ansiescapecodehandler.pro b/tests/auto/utils/ansiescapecodehandler/ansiescapecodehandler.pro new file mode 100644 index 0000000000..b891412fa4 --- /dev/null +++ b/tests/auto/utils/ansiescapecodehandler/ansiescapecodehandler.pro @@ -0,0 +1,10 @@ +QTC_LIB_DEPENDS += utils +include(../../qttest.pri) + +UTILSDIR = $$IDE_SOURCE_TREE/src/libs/ + +DEFINES += QTCREATOR_UTILS_LIB + +SOURCES += \ + $$UTILSDIR/utils/ansiescapecodehandler.cpp \ + tst_ansiescapecodehandler.cpp diff --git a/tests/auto/utils/ansiescapecodehandler/ansiescapecodehandler.qbs b/tests/auto/utils/ansiescapecodehandler/ansiescapecodehandler.qbs new file mode 100644 index 0000000000..3192c76e38 --- /dev/null +++ b/tests/auto/utils/ansiescapecodehandler/ansiescapecodehandler.qbs @@ -0,0 +1,9 @@ +import qbs +import "../../autotest.qbs" as Autotest + +Autotest { + name: "ANSI autotest" + Depends { name: "Utils" } + Depends { name: "Qt.widgets" } // TODO: Remove when qbs bug is fixed + files: "tst_ansiescapecodehandler.cpp" +} diff --git a/tests/auto/utils/ansiescapecodehandler/tst_ansiescapecodehandler.cpp b/tests/auto/utils/ansiescapecodehandler/tst_ansiescapecodehandler.cpp new file mode 100644 index 0000000000..aea46de0f8 --- /dev/null +++ b/tests/auto/utils/ansiescapecodehandler/tst_ansiescapecodehandler.cpp @@ -0,0 +1,129 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Andre Hartmann <aha_1980@gmx.de> +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include <utils/ansiescapecodehandler.h> + +#include <QString> +#include <QtTest> + +using namespace Utils; + +typedef QList<StringFormatPair> ResultList; + +Q_DECLARE_METATYPE(QTextCharFormat); +Q_DECLARE_METATYPE(StringFormatPair); +Q_DECLARE_METATYPE(ResultList); + +class tst_AnsiEscapeCodeHandler : public QObject +{ + Q_OBJECT + +public: + tst_AnsiEscapeCodeHandler(); + +private Q_SLOTS: + void testCase1(); + void testCase1_data(); + +private: + static const QString red; + static const QString bold; + static const QString normal; + static const QString normal1; +}; + +const QString tst_AnsiEscapeCodeHandler::red = QChar::fromLatin1(27) + "[31m"; +const QString tst_AnsiEscapeCodeHandler::bold = QChar::fromLatin1(27) + "[1m"; +const QString tst_AnsiEscapeCodeHandler::normal = QChar::fromLatin1(27) + "[0m"; +const QString tst_AnsiEscapeCodeHandler::normal1 = QChar::fromLatin1(27) + "[m"; + +tst_AnsiEscapeCodeHandler::tst_AnsiEscapeCodeHandler() +{ +} + +void tst_AnsiEscapeCodeHandler::testCase1() +{ + QFETCH(QString, text); + QFETCH(QTextCharFormat, format); + QFETCH(ResultList, expected); + + AnsiEscapeCodeHandler handler; + ResultList result = handler.parseText(text, format); + handler.endFormatScope(); + + QVERIFY(result.size() == expected.size()); + for (int i = 0; i < result.size(); ++i) { + QVERIFY(result[i].first == expected[i].first); + QVERIFY(result[i].second == expected[i].second); + } +} + +void tst_AnsiEscapeCodeHandler::testCase1_data() +{ + QTest::addColumn<QString>("text"); + QTest::addColumn<QTextCharFormat>("format"); + QTest::addColumn<ResultList>("expected"); + + // Test pass-through + QTextCharFormat defaultFormat; + QTest::newRow("Pass-through") << "Hello World" << defaultFormat + << (ResultList() << StringFormatPair("Hello World", defaultFormat)); + + // Test text-color change + QTextCharFormat redFormat; + redFormat.setForeground(QColor(170, 0, 0)); + const QString text2 = "This is " + red + "red" + normal + " text"; + QTest::newRow("Text-color change") << text2 << QTextCharFormat() + << (ResultList() + << StringFormatPair("This is ", defaultFormat) + << StringFormatPair("red", redFormat) + << StringFormatPair(" text", defaultFormat)); + + // Test text format change to bold + QTextCharFormat boldFormat; + boldFormat.setFontWeight(QFont::Bold); + const QString text3 = "A line of " + bold + "bold" + normal + " text"; + QTest::newRow("Text-format change") << text3 << QTextCharFormat() + << (ResultList() + << StringFormatPair("A line of ", defaultFormat) + << StringFormatPair("bold", boldFormat) + << StringFormatPair(" text", defaultFormat)); + + // Test resetting format to normal with other reset pattern + const QString text4 = "A line of " + bold + "bold" + normal1 + " text"; + QTest::newRow("Alternative reset pattern (QTCREATORBUG-10132)") << text4 << QTextCharFormat() + << (ResultList() + << StringFormatPair("A line of ", defaultFormat) + << StringFormatPair("bold", boldFormat) + << StringFormatPair(" text", defaultFormat)); +} + +QTEST_APPLESS_MAIN(tst_AnsiEscapeCodeHandler) + +#include "tst_ansiescapecodehandler.moc" diff --git a/tests/auto/utils/utils.pro b/tests/auto/utils/utils.pro index 21d4bac88b..a742245ea2 100644 --- a/tests/auto/utils/utils.pro +++ b/tests/auto/utils/utils.pro @@ -3,4 +3,4 @@ CONFIG += ordered SUBDIRS = \ fileutils \ - + ansiescapecodehandler diff --git a/tests/auto/utils/utils.qbs b/tests/auto/utils/utils.qbs index 724084e59c..f4a0959b81 100644 --- a/tests/auto/utils/utils.qbs +++ b/tests/auto/utils/utils.qbs @@ -2,5 +2,8 @@ import qbs Project { name: "Utils autotests" - references: ["fileutils/fileutils.qbs"] + references: [ + "fileutils/fileutils.qbs", + "ansiescapecodehandler/ansiescapecodehandler.qbs" + ] } |