File indexing completed on 2024-05-05 14:20:53
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Andreas Cord-Landwehr <cordlandwehr@kde.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "test_skipparser.h" 0008 #include "../skipparser.h" 0009 #include "../licenseregistry.h" 0010 #include <QTest> 0011 #include <QVector> 0012 #include <QDebug> 0013 #include <QDir> 0014 0015 void TestSkipParser::basicStringMatcher() 0016 { 0017 SkipParser parser; 0018 0019 { // simple substring 0020 QString pattern{"aaa"}; 0021 QString text{"abcaaabc"}; 0022 auto match = parser.findMatch(text, pattern); 0023 QVERIFY(match); 0024 QCOMPARE(match->first, 3); 0025 QCOMPARE(match->second, 5); 0026 } 0027 { // right-hand limit 0028 QString pattern{"aaa"}; 0029 QString text{"abcaaa"}; 0030 auto match = parser.findMatch(text, pattern); 0031 QVERIFY(match); 0032 QCOMPARE(match->first, 3); 0033 QCOMPARE(match->second, 5); 0034 } 0035 { // left-hand limit 0036 QString pattern{"aaa"}; 0037 QString text{"aaa"}; 0038 auto match = parser.findMatch(text, pattern); 0039 QVERIFY(match); 0040 QCOMPARE(match->first, 0); 0041 QCOMPARE(match->second, 2); 0042 } 0043 { // skipping whites in pattern 0044 QString pattern{"aa a"}; 0045 QString text{"abcaaabc"}; 0046 auto match = parser.findMatch(text, pattern); 0047 QVERIFY(match); 0048 QCOMPARE(match->first, 3); 0049 QCOMPARE(match->second, 5); 0050 } 0051 { // skipping whites in text 0052 QString pattern{"aaa"}; 0053 QString text{"abcaa abc"}; 0054 auto match = parser.findMatch(text, pattern); 0055 QVERIFY(match); 0056 QCOMPARE(match->first, 3); 0057 QCOMPARE(match->second, 6); 0058 } 0059 { // pattern and text skips 0060 QString pattern{"aa a"}; 0061 QString text{"abca a abc"}; 0062 auto match = parser.findMatch(text, pattern); 0063 QVERIFY(match); 0064 QCOMPARE(match->first, 3); 0065 QCOMPARE(match->second, 7); 0066 } 0067 { // pattern and text skips 0068 QString pattern{"aa a"}; 0069 QString text{"abca a abc"}; 0070 auto match = parser.findMatch(text, pattern); 0071 QCOMPARE(match->first, 3); 0072 QCOMPARE(match->second, 8); 0073 } 0074 { // not matching and skip at right side 0075 QString pattern{"aa a"}; 0076 QString text{"abca a"}; 0077 auto match = parser.findMatch(text, pattern); 0078 QVERIFY(!match); 0079 } 0080 0081 // test all skip characters 0082 { 0083 QString pattern{"aa-a"}; 0084 QString text{"abca--a"}; 0085 auto match = parser.findMatch(text, pattern); 0086 QVERIFY(!match); 0087 } 0088 { 0089 QString pattern{"aa#a"}; 0090 QString text{"abca##a"}; 0091 auto match = parser.findMatch(text, pattern); 0092 QVERIFY(!match); 0093 } 0094 { 0095 QString pattern{"aa\na"}; 0096 QString text{"abca\n\na"}; 0097 auto match = parser.findMatch(text, pattern); 0098 QVERIFY(!match); 0099 } 0100 { 0101 QString pattern{"aa\ta"}; 0102 QString text{"abca\t\ta"}; 0103 auto match = parser.findMatch(text, pattern); 0104 QVERIFY(!match); 0105 } 0106 } 0107 0108 void TestSkipParser::basicPatternSetMatcher() 0109 { 0110 SkipParser parser; 0111 { // skipping whites in pattern 0112 QVector<QString> patterns = {{"aa a"} , {"aaa"}}; 0113 QString text{"abcaaabc"}; 0114 auto match = parser.findMatch(text, patterns); 0115 QVERIFY(match); 0116 QCOMPARE(match->first, 3); 0117 QCOMPARE(match->second, 5); 0118 } 0119 } 0120 0121 QTEST_GUILESS_MAIN(TestSkipParser);