File indexing completed on 2024-06-02 04:43:56
0001 /* 0002 SPDX-FileCopyrightText: 2007 Andreas Pakulat <apaku@gmx.de> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "scopetest.h" 0008 #include "ast.h" 0009 #include "qmakedriver.h" 0010 #include "testhelpers.h" 0011 0012 QTEST_GUILESS_MAIN(ScopeTest) 0013 0014 ScopeTest::ScopeTest(QObject* parent) 0015 : QObject(parent) 0016 { 0017 } 0018 0019 ScopeTest::~ScopeTest() 0020 { 0021 } 0022 0023 void ScopeTest::init() 0024 { 0025 ast = new QMake::ProjectAST(); 0026 QVERIFY(ast != nullptr); 0027 } 0028 0029 void ScopeTest::cleanup() 0030 { 0031 delete ast; 0032 ast = nullptr; 0033 QVERIFY(ast == nullptr); 0034 } 0035 0036 BEGINTESTFUNCIMPL(ScopeTest, basicScope, 1) 0037 auto* scope = dynamic_cast<QMake::SimpleScopeAST*>(ast->statements.first()); 0038 TESTSCOPENAME(scope, "foobar") 0039 QList<QMake::StatementAST*> testlist; 0040 auto tst = new QMake::AssignmentAST(scope->body); 0041 auto val = new QMake::ValueAST(tst); 0042 val->value = QStringLiteral("VARIABLE"); 0043 tst->identifier = val; 0044 val = new QMake::ValueAST(tst); 0045 val->value = QStringLiteral("="); 0046 tst->op = val; 0047 val = new QMake::ValueAST(tst); 0048 val->value = QStringLiteral("FOO"); 0049 tst->values.append(val); 0050 testlist.append(tst); 0051 TESTSCOPEBODY(scope, testlist, 1) 0052 ENDTESTFUNCIMPL 0053 0054 DATAFUNCIMPL(ScopeTest, basicScope, "foobar : VARIABLE = FOO\n") 0055 0056 BEGINTESTFUNCIMPL(ScopeTest, basicScopeBrace, 1) 0057 auto* scope = dynamic_cast<QMake::SimpleScopeAST*>(ast->statements.first()); 0058 TESTSCOPENAME(scope, "foobar") 0059 QList<QMake::StatementAST*> testlist; 0060 auto tst = new QMake::AssignmentAST(scope->body); 0061 auto val = new QMake::ValueAST(tst); 0062 val->value = QStringLiteral("VARIABLE"); 0063 tst->identifier = val; 0064 val = new QMake::ValueAST(tst); 0065 val->value = QStringLiteral("="); 0066 tst->op = val; 0067 val = new QMake::ValueAST(tst); 0068 val->value = QStringLiteral("FOO"); 0069 tst->values.append(val); 0070 testlist.append(tst); 0071 TESTSCOPEBODY(scope, testlist, 1) 0072 ENDTESTFUNCIMPL 0073 0074 DATAFUNCIMPL(ScopeTest, basicScopeBrace, "foobar {\n VARIABLE = FOO\n}\n") 0075 0076 BEGINTESTFUNCIMPL(ScopeTest, nestedScope, 1) 0077 auto* scope = dynamic_cast<QMake::SimpleScopeAST*>(ast->statements.first()); 0078 TESTSCOPENAME(scope, "foobar") 0079 QList<QMake::StatementAST*> testlist; 0080 auto simple = new QMake::SimpleScopeAST(scope->body); 0081 auto val = new QMake::ValueAST(simple); 0082 val->value = QStringLiteral("barfoo"); 0083 simple->identifier = val; 0084 auto body = new QMake::ScopeBodyAST(simple); 0085 auto tst = new QMake::AssignmentAST(body); 0086 val = new QMake::ValueAST(tst); 0087 val->value = QStringLiteral("VARIABLE"); 0088 tst->identifier = val; 0089 val = new QMake::ValueAST(tst); 0090 val->value = QStringLiteral("="); 0091 tst->op = val; 0092 val = new QMake::ValueAST(tst); 0093 val->value = QStringLiteral("FOO"); 0094 tst->values.append(val); 0095 body->ifStatements.append(tst); 0096 simple->body = body; 0097 testlist.append(simple); 0098 0099 TESTSCOPEBODY(scope, testlist, 1) 0100 ENDTESTFUNCIMPL 0101 0102 DATAFUNCIMPL(ScopeTest, nestedScope, "foobar :barfoo : VARIABLE = FOO\n") 0103 0104 BEGINTESTFUNCIMPL(ScopeTest, missingStatement, 1) 0105 auto* scope = dynamic_cast<QMake::SimpleScopeAST*>(ast->statements.first()); 0106 TESTSCOPENAME(scope, "eval") 0107 ENDTESTFUNCIMPL 0108 0109 DATAFUNCIMPL(ScopeTest, missingStatement, "eval :\n") 0110 0111 BEGINTESTFAILFUNCIMPL(ScopeTest, missingColon, "No colon") 0112 ENDTESTFUNCIMPL 0113 0114 DATAFUNCIMPL(ScopeTest, missingColon, "eval \n") 0115 0116 void ScopeTest::strangeScopeNames() 0117 { 0118 QMake::Driver d; 0119 d.setContent(QStringLiteral("linux-gcc++-* {\n VARIABLE = FOO\n}\n")); 0120 bool ret = d.parse(&ast); 0121 QVERIFY(ret); 0122 } 0123 0124 void ScopeTest::testIfElse() 0125 { 0126 QMake::Driver d; 0127 d.setContent(QStringLiteral("isEmpty(foo) { A = 1 } else { B = 2 }\n")); 0128 bool ret = d.parse(&ast); 0129 QVERIFY(ret); 0130 } 0131 0132 #include "moc_scopetest.cpp"