From 1dd6c64246c48694f93e2fbc50f36f1742845f99 Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Tue, 20 Oct 2009 15:29:58 +0200
Subject: [PATCH] More tests for template-ids.

---
 tests/auto/cplusplus/ast/tst_ast.cpp | 42 ++++++++++++++++++++++++----
 1 file changed, 36 insertions(+), 6 deletions(-)

diff --git a/tests/auto/cplusplus/ast/tst_ast.cpp b/tests/auto/cplusplus/ast/tst_ast.cpp
index 958017a42cd..24fbe7865fa 100644
--- a/tests/auto/cplusplus/ast/tst_ast.cpp
+++ b/tests/auto/cplusplus/ast/tst_ast.cpp
@@ -44,15 +44,17 @@ private slots:
     void gcc_attributes_1();
 
     // expressions
-    void simple_name();
-    void template_id();
+    void simple_name_1();
+    void template_id_1();
     void new_expression_1();
     void new_expression_2();
     void condition_1();
     void init_1();
 
     // statements
-    void if_statement();
+    void if_statement_1();
+    void if_statement_2();
+    void if_statement_3();
     void if_else_statement();
     void while_statement();
     void while_condition_statement();
@@ -99,7 +101,7 @@ void tst_AST::simple_declaration_1()
     QVERIFY(declStmt);
 }
 
-void tst_AST::simple_name()
+void tst_AST::simple_name_1()
 {
     QSharedPointer<TranslationUnit> unit(parseExpression("a"));
     AST *ast = unit->ast();
@@ -109,7 +111,7 @@ void tst_AST::simple_name()
     QCOMPARE(ast->asSimpleName()->identifier_token, 1U);
 }
 
-void tst_AST::template_id()
+void tst_AST::template_id_1()
 {
     QSharedPointer<TranslationUnit> unit(parseExpression("list<10>"));
     AST *ast = unit->ast();
@@ -255,7 +257,7 @@ void tst_AST::assignment_2()
     QVERIFY(ast->asExpressionStatement());
 }
 
-void tst_AST::if_statement()
+void tst_AST::if_statement_1()
 {
     QSharedPointer<TranslationUnit> unit(parseStatement("if (a) b;"));
 
@@ -283,6 +285,34 @@ void tst_AST::if_statement()
     QCOMPARE(id_expr->identifier_token, 5U);
 }
 
+void tst_AST::if_statement_2()
+{
+    QSharedPointer<TranslationUnit> unit(parseStatement("if (x<0 && y>a);"));
+
+    AST *ast = unit->ast();
+    QVERIFY(ast != 0);
+
+    IfStatementAST *stmt = ast->asIfStatement();
+    QVERIFY(stmt != 0);
+
+    QVERIFY(stmt->condition);
+    QVERIFY(stmt->condition->asBinaryExpression());
+    QCOMPARE(unit->tokenKind(stmt->condition->asBinaryExpression()->binary_op_token), int(T_AMPER_AMPER));
+}
+
+void tst_AST::if_statement_3()
+{
+    QSharedPointer<TranslationUnit> unit(parseStatement("if (x<0 && x<0 && x<0 && x<0 && x<0 && x<0 && x<0);"));
+
+    AST *ast = unit->ast();
+    QVERIFY(ast != 0);
+
+    IfStatementAST *stmt = ast->asIfStatement();
+    QVERIFY(stmt != 0);
+
+    QVERIFY(stmt->condition);
+}
+
 void tst_AST::if_else_statement()
 {
     QSharedPointer<TranslationUnit> unit(parseStatement("if (a) b; else c;"));
-- 
GitLab