File indexing completed on 2024-05-26 04:41:03
0001 /* 0002 SPDX-FileCopyrightText: 2012 Miha Čančula <miha@noughmad.eu> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "test_templaterenderer.h" 0008 #include "language/codegen/templaterenderer.h" 0009 #include "language/codegen/codedescription.h" 0010 0011 #include "tests/autotestshell.h" 0012 #include "tests/testcore.h" 0013 0014 using namespace KDevelop; 0015 0016 void TestTemplateRenderer::initTestCase() 0017 { 0018 AutoTestShell::init(); 0019 TestCore::initialize(Core::NoUi); 0020 0021 renderer = new KDevelop::TemplateRenderer(); 0022 0023 QVariantHash variables; 0024 variables[QStringLiteral("name")] = "Tester"; 0025 variables[QStringLiteral("age")] = 23; 0026 renderer->addVariables(variables); 0027 } 0028 0029 void TestTemplateRenderer::cleanupTestCase() 0030 { 0031 delete renderer; 0032 TestCore::shutdown(); 0033 } 0034 0035 void TestTemplateRenderer::simpleVariables_data() 0036 { 0037 QTest::addColumn<QString>("name"); 0038 QTest::addColumn<QString>("content"); 0039 QTest::addColumn<QString>("result"); 0040 0041 QTest::newRow("string") << "string" << "Hello, {{ name }}!" << "Hello, Tester!"; 0042 QTest::newRow("int") << "int" << "I am {{ age }} years old" << "I am 23 years old"; 0043 QTest::newRow("filter") << "filter" << "HELLO, {{ name|upper }}!" << "HELLO, TESTER!"; 0044 QTest::newRow("int+string") << "int+string" << "Mr. {{ name }} is {{ age }} years old" << "Mr. Tester is 23 years old"; 0045 } 0046 0047 void TestTemplateRenderer::simpleVariables() 0048 { 0049 QFETCH(QString, name); 0050 QFETCH(QString, content); 0051 QFETCH(QString, result); 0052 0053 QCOMPARE(renderer->render(content, name), result); 0054 } 0055 0056 void TestTemplateRenderer::includeTemplates() 0057 { 0058 renderer->addVariable(QStringLiteral("namespaces"), QStringList() << QStringLiteral("Entity") << QStringLiteral("Human") << QStringLiteral("ComputerPerson")); 0059 QString result = renderer->render(QStringLiteral("HELLO {% include 'include_guard_cpp.txt' %}"), QString()); 0060 QString expected = QStringLiteral("HELLO ENTITY_HUMAN_COMPUTERPERSON_TESTER_H"); 0061 0062 QCOMPARE(result, expected); 0063 } 0064 0065 void TestTemplateRenderer::kdevFilters() 0066 { 0067 renderer->addVariable(QStringLiteral("activity"), QStringLiteral("testing")); 0068 QString result = renderer->render(QStringLiteral("{% load kdev_filters %}I am {{ activity }} software. {{ activity|upper_first }} is a very rewarding task. "), QString()); 0069 QString expected = QStringLiteral("I am testing software. Testing is a very rewarding task. "); 0070 0071 QCOMPARE(result, expected); 0072 } 0073 0074 void TestTemplateRenderer::kdevFiltersWithLookup() 0075 { 0076 VariableDescription description; 0077 description.type = QStringLiteral("int"); 0078 description.name = QStringLiteral("number"); 0079 0080 renderer->addVariable(QStringLiteral("var"), QVariant::fromValue(description)); 0081 QString result = renderer->render(QStringLiteral("{% load kdev_filters %}void set{{ var.name|upper_first }}({{ var.type }} {{ var.name }});"), QString()); 0082 QString expected = QStringLiteral("void setNumber(int number);"); 0083 0084 QCOMPARE(result, expected); 0085 } 0086 0087 0088 QTEST_MAIN(TestTemplateRenderer) 0089 0090 #include "moc_test_templaterenderer.cpp"