From f4e875b9bbc03d8e151afb389253c25683dbc6e0 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Mon, 2 Mar 2009 11:30:43 +0100 Subject: [PATCH] Initial testing of the preprocessor. --- src/libs/cplusplus/pp-engine.cpp | 15 ++++++++++ src/libs/cplusplus/pp-engine.h | 5 ++++ tests/auto/cplusplus/cplusplus.pro | 2 +- .../cplusplus/preprocessor/preprocessor.pro | 9 ++++++ .../preprocessor/tst_preprocessor.cpp | 28 +++++++++++++++++++ 5 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 tests/auto/cplusplus/preprocessor/preprocessor.pro create mode 100644 tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp index dc31e204f0d..fe738287578 100644 --- a/src/libs/cplusplus/pp-engine.cpp +++ b/src/libs/cplusplus/pp-engine.cpp @@ -481,6 +481,21 @@ void Preprocessor::popState() _savedStates.removeLast(); } +QByteArray Preprocessor::operator()(const QByteArray &filename, + const QByteArray &source) +{ + QByteArray preprocessed; + operator()(filename, source, &preprocessed); + return preprocessed; +} + +QByteArray Preprocessor::operator()(const QByteArray &source) +{ + QByteArray preprocessed; + operator()(source, &preprocessed); + return preprocessed; +} + void Preprocessor::operator () (const QByteArray &filename, const QByteArray &source, QByteArray *result) diff --git a/src/libs/cplusplus/pp-engine.h b/src/libs/cplusplus/pp-engine.h index 3ac1a42c6a6..4fbbe1008d4 100644 --- a/src/libs/cplusplus/pp-engine.h +++ b/src/libs/cplusplus/pp-engine.h @@ -181,6 +181,11 @@ namespace CPlusPlus { public: Preprocessor(Client *client, Environment &env); + QByteArray operator()(const QByteArray &filename, + const QByteArray &source); + + QByteArray operator()(const QByteArray &source); + void operator()(const QByteArray &filename, const QByteArray &source, QByteArray *result); diff --git a/tests/auto/cplusplus/cplusplus.pro b/tests/auto/cplusplus/cplusplus.pro index af3bc066700..c7aa5342853 100644 --- a/tests/auto/cplusplus/cplusplus.pro +++ b/tests/auto/cplusplus/cplusplus.pro @@ -1,3 +1,3 @@ TEMPLATE = subdirs -SUBDIRS = shared ast semantic lookup +SUBDIRS = shared ast semantic lookup preprocessor CONFIG += ordered diff --git a/tests/auto/cplusplus/preprocessor/preprocessor.pro b/tests/auto/cplusplus/preprocessor/preprocessor.pro new file mode 100644 index 00000000000..8ce434d112b --- /dev/null +++ b/tests/auto/cplusplus/preprocessor/preprocessor.pro @@ -0,0 +1,9 @@ +TEMPLATE = app +CONFIG += qt warn_on console depend_includepath +QT = core testlib +TARGET = tst_$$TARGET +DEFINES += CPLUSPLUS_WITH_NAMESPACE + +include(../../../../src/libs/cplusplus/cplusplus-lib.pri) + +SOURCES += tst_preprocessor.cpp diff --git a/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp b/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp new file mode 100644 index 00000000000..19bf6f29628 --- /dev/null +++ b/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp @@ -0,0 +1,28 @@ +#include <QtTest> +#include <pp.h> + +CPLUSPLUS_USE_NAMESPACE + +class tst_Preprocessor: public QObject +{ +Q_OBJECT + +private Q_SLOTS: + void pp_with_no_client(); +}; + +void tst_Preprocessor::pp_with_no_client() +{ + using namespace CPlusPlus; + + Client *client = 0; // no client. + Environment env; + + Preprocessor preprocess(client, env); + QByteArray preprocessed = preprocess("#define foo(a,b) a + b\nfoo(1, 2)\n"); + QByteArray expected = "1 + 2"; + QCOMPARE(preprocessed.trimmed(), expected); +} + +QTEST_APPLESS_MAIN(tst_Preprocessor) +#include "tst_preprocessor.moc" -- GitLab