File indexing completed on 2024-05-12 04:38:19

0001 /*
0002     SPDX-FileCopyrightText: 2021 Igor Kushnir <igorkuo@gmail.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "bench_languagecontroller.h"
0008 
0009 #include <ilanguagecontroller.h>
0010 #include <language/interfaces/ilanguagesupport.h>
0011 
0012 #include <QString>
0013 #include <QTest>
0014 #include <QUrl>
0015 
0016 void BenchLanguageController::benchLanguagesForUrlNoCache()
0017 {
0018     benchmarkLanguagesForUrl();
0019 }
0020 
0021 void BenchLanguageController::benchLanguagesForUrlNoCache_data()
0022 {
0023     matchingLanguagesForUrlTestData();
0024 }
0025 
0026 void BenchLanguageController::benchLanguagesForUrlFilledCache()
0027 {
0028     fillLanguageControllerMimeTypeCache();
0029     benchmarkLanguagesForUrl();
0030 }
0031 
0032 void BenchLanguageController::benchLanguagesForUrlFilledCache_data()
0033 {
0034     matchingLanguagesForUrlTestData();
0035 }
0036 
0037 void BenchLanguageController::benchLanguagesForUrlNoMatchNoCache()
0038 {
0039     benchmarkLanguagesForUrlNoMatch();
0040 }
0041 
0042 void BenchLanguageController::benchLanguagesForUrlNoMatchNoCache_data()
0043 {
0044     nonmatchingLanguagesForUrlTestData();
0045 }
0046 
0047 void BenchLanguageController::benchLanguagesForUrlNoMatchFilledCache()
0048 {
0049     fillLanguageControllerMimeTypeCache();
0050     benchmarkLanguagesForUrlNoMatch();
0051 }
0052 
0053 void BenchLanguageController::benchLanguagesForUrlNoMatchFilledCache_data()
0054 {
0055     nonmatchingLanguagesForUrlTestData();
0056 }
0057 
0058 void BenchLanguageController::benchmarkLanguagesForUrl()
0059 {
0060     QFETCH(QUrl, url);
0061     QFETCH(QString, languageName);
0062 
0063     // Warm up and check correctness.
0064     const auto languages = m_subject->languagesForUrl(url);
0065     QCOMPARE(languages.size(), 1);
0066     QCOMPARE(languages.back()->name(), languageName);
0067 
0068     QBENCHMARK {
0069         m_subject->languagesForUrl(url);
0070     }
0071 }
0072 
0073 void BenchLanguageController::benchmarkLanguagesForUrlNoMatch()
0074 {
0075     QFETCH(QUrl, url);
0076 
0077     // Warm up and check correctness.
0078     const auto languages = m_subject->languagesForUrl(url);
0079     QCOMPARE(languages.size(), 0);
0080 
0081     QBENCHMARK {
0082         m_subject->languagesForUrl(url);
0083     }
0084 }
0085 
0086 QTEST_MAIN(BenchLanguageController)
0087 
0088 #include "moc_bench_languagecontroller.cpp"