File indexing completed on 2024-06-23 04:40:16

0001 /*
0002    SPDX-FileCopyrightText: 2023-2024 Laurent Montel <montel.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "richtextbrowserfindbartest.h"
0008 #include "richtextbrowser/richtextbrowserfindbar.h"
0009 #include <QTest>
0010 #include <QTextBrowser>
0011 
0012 QTEST_MAIN(RichTextBrowserFindBarTest)
0013 Q_DECLARE_METATYPE(TextCustomEditor::TextEditFindBarBase::FindFlags)
0014 RichTextBrowserFindBarTest::RichTextBrowserFindBarTest(QObject *parent)
0015     : QObject{parent}
0016 {
0017 }
0018 
0019 void RichTextBrowserFindBarTest::shouldHaveDefaultValues()
0020 {
0021     QTextBrowser edit;
0022     TextCustomEditor::RichTextBrowserFindBar w(&edit);
0023     QVERIFY(w.text().isEmpty());
0024 }
0025 
0026 class RichTextEditFindBarExample : public TextCustomEditor::RichTextBrowserFindBar
0027 {
0028 public:
0029     explicit RichTextEditFindBarExample(QTextBrowser *view, QWidget *parent = nullptr)
0030         : RichTextBrowserFindBar(view, parent)
0031     {
0032     }
0033     ~RichTextEditFindBarExample() override = default;
0034     [[nodiscard]] bool searchInDocument(const QString &text, TextEditFindBarBase::FindFlags searchOptions) override
0035     {
0036         return TextCustomEditor::RichTextBrowserFindBar::searchInDocument(text, searchOptions);
0037     }
0038 
0039     [[nodiscard]] bool searchInDocument(const QRegularExpression &regExp, TextEditFindBarBase::FindFlags searchOptions) override
0040     {
0041         return TextCustomEditor::RichTextBrowserFindBar::searchInDocument(regExp, searchOptions);
0042     }
0043 };
0044 
0045 void RichTextBrowserFindBarTest::shouldSearchText_data()
0046 {
0047     QTest::addColumn<QString>("text");
0048     QTest::addColumn<QString>("searchText");
0049     QTest::addColumn<TextCustomEditor::TextEditFindBarBase::FindFlags>("flags");
0050     QTest::addColumn<bool>("found");
0051 
0052     QTest::newRow("empty") << QString() << QStringLiteral("blabla") << TextCustomEditor::TextEditFindBarBase::FindFlags() << false;
0053     {
0054         TextCustomEditor::TextEditFindBarBase::FindFlags flags;
0055         flags |= TextCustomEditor::TextEditFindBarBase::FindRespectDiacritics;
0056         QTest::newRow("empty-1") << QString() << QStringLiteral("blabla") << flags << false;
0057     }
0058     {
0059         TextCustomEditor::TextEditFindBarBase::FindFlags flags;
0060         flags |= TextCustomEditor::TextEditFindBarBase::FindCaseSensitively;
0061         QTest::newRow("empty-2") << QString() << QStringLiteral("blabla") << flags << false;
0062     }
0063     {
0064         TextCustomEditor::TextEditFindBarBase::FindFlags flags;
0065         flags |= TextCustomEditor::TextEditFindBarBase::FindWholeWords;
0066         QTest::newRow("findwholewords-1") << QStringLiteral("bla bla") << QStringLiteral("bla") << flags << true;
0067 
0068         QTest::newRow("findwholewords-2") << QStringLiteral("blabla") << QStringLiteral("bla") << flags << false;
0069     }
0070     {
0071         TextCustomEditor::TextEditFindBarBase::FindFlags flags;
0072         flags |= TextCustomEditor::TextEditFindBarBase::FindRespectDiacritics;
0073         QTest::newRow("find-diacritics-1") << QStringLiteral("numéro numéro") << QStringLiteral("numero") << flags << false;
0074 
0075         QTest::newRow("find-diacritics-2") << QStringLiteral("numéro numéro") << QStringLiteral("numéro") << flags << true;
0076     }
0077 }
0078 
0079 void RichTextBrowserFindBarTest::shouldSearchText()
0080 {
0081     QFETCH(QString, text);
0082     QFETCH(QString, searchText);
0083     QFETCH(TextCustomEditor::TextEditFindBarBase::FindFlags, flags);
0084     QFETCH(bool, found);
0085 
0086     QTextBrowser edit;
0087     RichTextEditFindBarExample w(&edit);
0088     edit.setPlainText(text);
0089 
0090     QCOMPARE(w.searchInDocument(searchText, flags), found);
0091 }
0092 
0093 #include "moc_richtextbrowserfindbartest.cpp"