File indexing completed on 2024-05-05 04:01:41

0001 /*
0002     SPDX-FileCopyrightText: 2016 Volker Krause <vkrause@kde.org>
0003     SPDX-FileCopyrightText: 2021 Igor Kushnir <igorkuo@gmail.com>
0004 
0005     SPDX-License-Identifier: MIT
0006 */
0007 
0008 #include "repository_test_base.h"
0009 #include "test-config.h"
0010 
0011 #include <KSyntaxHighlighting/Definition>
0012 #include <KSyntaxHighlighting/Repository>
0013 
0014 #include <QTest>
0015 
0016 class RepositoryBenchmark : public RepositoryTestBase
0017 {
0018     Q_OBJECT
0019 private Q_SLOTS:
0020     void benchmarkRepositoryLoad()
0021     {
0022         QBENCHMARK {
0023             KSyntaxHighlighting::Repository repo;
0024             initRepositorySearchPaths(repo);
0025         }
0026     }
0027 
0028     void benchmarkDefinitionByExtension_data()
0029     {
0030         definitionByExtensionTestData();
0031     }
0032 
0033     void benchmarkDefinitionByExtension()
0034     {
0035         QFETCH(QString, fileName);
0036         QFETCH(QString, definitionName);
0037 
0038         // Warm up and check correctness.
0039         definitionByExtensionTest(fileName, definitionName);
0040         if (QTest::currentTestFailed())
0041             return;
0042 
0043         QBENCHMARK {
0044             m_repo.definitionForFileName(fileName);
0045         }
0046     }
0047 
0048     void benchmarkDefinitionsForFileName_data()
0049     {
0050         definitionsForFileNameTestData();
0051     }
0052 
0053     void benchmarkDefinitionsForFileName()
0054     {
0055         QFETCH(QString, fileName);
0056         QFETCH(QStringList, definitionNames);
0057 
0058         // Warm up and check correctness.
0059         definitionsForFileNameTest(fileName, definitionNames);
0060         if (QTest::currentTestFailed())
0061             return;
0062 
0063         QBENCHMARK {
0064             m_repo.definitionsForFileName(fileName);
0065         }
0066     }
0067 
0068     void benchmarkDefinitionForMimeType_data()
0069     {
0070         definitionForMimeTypeTestData();
0071     }
0072 
0073     void benchmarkDefinitionForMimeType()
0074     {
0075         QFETCH(QString, mimeTypeName);
0076         QFETCH(QString, definitionName);
0077 
0078         // Warm up and check correctness.
0079         definitionForMimeTypeTest(mimeTypeName, definitionName);
0080         if (QTest::currentTestFailed())
0081             return;
0082 
0083         QBENCHMARK {
0084             m_repo.definitionForMimeType(mimeTypeName);
0085         }
0086     }
0087 
0088     void benchmarkDefinitionsForMimeType_data()
0089     {
0090         definitionsForMimeTypeTestData();
0091     }
0092 
0093     void benchmarkDefinitionsForMimeType()
0094     {
0095         QFETCH(QString, mimeTypeName);
0096         QFETCH(QStringList, definitionNames);
0097 
0098         // Warm up and check correctness.
0099         definitionsForMimeTypeTest(mimeTypeName, definitionNames);
0100         if (QTest::currentTestFailed())
0101             return;
0102 
0103         QBENCHMARK {
0104             m_repo.definitionsForMimeType(mimeTypeName);
0105         }
0106     }
0107 };
0108 
0109 QTEST_GUILESS_MAIN(RepositoryBenchmark)
0110 
0111 #include "repository_benchmark.moc"