diff --git a/tests/manual/cplusplus/main.cpp b/tests/manual/cplusplus/main.cpp
index b4b9b8456d8bbc0a14df918fad613f514723afd0..019683f0615f2e301046256a8f75d5afdcd4108e 100644
--- a/tests/manual/cplusplus/main.cpp
+++ b/tests/manual/cplusplus/main.cpp
@@ -37,13 +37,18 @@
 #include <Scope.h>
 #include <Semantic.h>
 #include <TranslationUnit.h>
+#include <PrettyPrinter.h>
 
-#include <QtCore/QFile>
-#include <QtCore/QList>
+#include <QFile>
+#include <QList>
+#include <QCoreApplication>
+#include <QStringList>
+#include <QFileInfo>
 #include <QtDebug>
 
 #include <cstdio>
 #include <cstdlib>
+#include <iostream>
 
 class Rewrite
 {
@@ -191,8 +196,35 @@ protected:
     }
 };
 
-int main(int, char *[])
+int main(int argc, char *argv[])
 {
+    QCoreApplication app(argc, argv);
+
+    QStringList args = app.arguments();
+    const QString appName = args.first();
+    args.removeFirst();
+
+    bool test_rewriter = false;
+    bool test_pretty_printer = false;
+
+    foreach (QString arg, args) {
+        if (arg == QLatin1String("--test-rewriter"))
+            test_rewriter = true;
+        else if (arg == QLatin1String("--test-pretty-printer"))
+            test_pretty_printer = true;
+        else if (arg == QLatin1String("--help")) {
+            const QFileInfo appInfo(appName);
+            const QByteArray appFileName = QFile::encodeName(appInfo.fileName());
+
+            printf("Usage: %s [options]\n"
+                   "  --help                    Display ths information\n"
+                   "  --test-rewriter           Test the tree rewriter\n"
+                   "  --test-pretty-printer     Test the pretty printer\n",
+                   appFileName.constData());
+            return EXIT_SUCCESS;
+        }
+    }
+
     QFile in;
     if (! in.open(stdin, QFile::ReadOnly))
         return EXIT_FAILURE;
@@ -217,10 +249,14 @@ int main(int, char *[])
     }
 
     // test the rewriter
-    QByteArray out;
-    SimpleRefactor refactor(&control);
-    refactor(&unit, source, &out);
-    printf("%s\n", out.constData());
-
+    if (test_rewriter) {
+        QByteArray out;
+        SimpleRefactor refactor(&control);
+        refactor(&unit, source, &out);
+        printf("%s\n", out.constData());
+    } else if (test_pretty_printer) {
+        PrettyPrinter pp(&control, std::cout);
+        pp(unit.ast());
+    }
     return EXIT_SUCCESS;
 }