File indexing completed on 2024-04-21 05:44:40

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);