diff --git a/tests/auto/cplusplus/ast/tst_ast.cpp b/tests/auto/cplusplus/ast/tst_ast.cpp index 7c55e42ea40d0f526a84dd6d405b0c53fc993bd4..969f1ac5ae16453edd8be26484adf4e4aaaf0768 100644 --- a/tests/auto/cplusplus/ast/tst_ast.cpp +++ b/tests/auto/cplusplus/ast/tst_ast.cpp @@ -25,10 +25,18 @@ public: return unit; } + TranslationUnit *parseExpression(const QByteArray &source) + { return parse(source, TranslationUnit::ParseExpression); } + TranslationUnit *parseStatement(const QByteArray &source) { return parse(source, TranslationUnit::ParseStatement); } private slots: + // expressions + void simple_name(); + void template_id(); + + // statements void if_statement(); void if_else_statement(); void while_statement(); @@ -37,6 +45,33 @@ private slots: void cpp_initializer_or_function_declaration(); }; +void tst_AST::simple_name() +{ + QSharedPointer<TranslationUnit> unit(parseExpression("a")); + AST *ast = unit->ast(); + + QVERIFY(ast != 0); + QVERIFY(ast->asSimpleName() != 0); + QCOMPARE(ast->asSimpleName()->identifier_token, 1U); +} + +void tst_AST::template_id() +{ + QSharedPointer<TranslationUnit> unit(parseExpression("list<10>")); + AST *ast = unit->ast(); + + QVERIFY(ast != 0); + QVERIFY(ast->asTemplateId() != 0); + QCOMPARE(ast->asTemplateId()->identifier_token, 1U); + QCOMPARE(ast->asTemplateId()->less_token, 2U); + QVERIFY(ast->asTemplateId()->template_arguments != 0); + QVERIFY(ast->asTemplateId()->template_arguments->template_argument != 0); + QVERIFY(ast->asTemplateId()->template_arguments->template_argument->asNumericLiteral() != 0); + QCOMPARE(ast->asTemplateId()->template_arguments->template_argument->asNumericLiteral()->token, 3U); + QVERIFY(ast->asTemplateId()->template_arguments->next == 0); + QCOMPARE(ast->asTemplateId()->greater_token, 4U); +} + void tst_AST::if_statement() { QSharedPointer<TranslationUnit> unit(parseStatement("if (a) b;"));