diff options
author | David Schulz <david.schulz@qt.io> | 2023-05-12 10:59:29 +0200 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2023-05-16 10:30:15 +0000 |
commit | 9758e7145828e1303a33af3b1ae04c4210b55a28 (patch) | |
tree | 9c1ce8dbf18445098ba18b9f661db020e37a54f1 | |
parent | 00d8e9d7179fa5feecdd058dd9a705832bfa3cb5 (diff) | |
download | qt-creator-9758e7145828e1303a33af3b1ae04c4210b55a28.tar.gz |
Utils: add tests for Position::fromPositionInDocument
Change-Id: I2b530cf62a4defe0292c51834b1e5093a7d5e55f
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
-rw-r--r-- | src/libs/utils/textutils.cpp | 2 | ||||
-rw-r--r-- | tests/auto/utils/text/tst_text.cpp | 28 |
2 files changed, 30 insertions, 0 deletions
diff --git a/src/libs/utils/textutils.cpp b/src/libs/utils/textutils.cpp index 9cb7c1e011..a57e531059 100644 --- a/src/libs/utils/textutils.cpp +++ b/src/libs/utils/textutils.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "textutils.h" +#include "qtcassert.h" #include <QRegularExpression> #include <QTextBlock> @@ -50,6 +51,7 @@ Position Position::fromFileName(QStringView fileName, int &postfixPos) Position Position::fromPositionInDocument(const QTextDocument *document, int pos) { + QTC_ASSERT(document, return {}); const QTextBlock block = document->findBlock(pos); if (block.isValid()) return {block.blockNumber() + 1, pos - block.position()}; diff --git a/tests/auto/utils/text/tst_text.cpp b/tests/auto/utils/text/tst_text.cpp index 013c1d46c7..3428b0b757 100644 --- a/tests/auto/utils/text/tst_text.cpp +++ b/tests/auto/utils/text/tst_text.cpp @@ -3,6 +3,7 @@ #include <utils/textutils.h> +#include <QTextDocument> #include <QtTest> using namespace Utils::Text; @@ -15,6 +16,9 @@ private slots: void testPositionFromFileName_data(); void testPositionFromFileName(); + void testPositionFromPositionInDocument_data(); + void testPositionFromPositionInDocument(); + void testRangeLength_data(); void testRangeLength(); }; @@ -107,6 +111,30 @@ void tst_Text::testPositionFromFileName() QCOMPARE(postfixPos, expectedPostfixPos); } +void tst_Text::testPositionFromPositionInDocument_data() +{ + QTest::addColumn<QString>("text"); + QTest::addColumn<int>("documentPosition"); + QTest::addColumn<Position>("position"); + + QTest::newRow("0") << QString() << 0 << Position{1, 0}; + QTest::newRow("-1") << QString() << -1 << Position(); + QTest::newRow("mid line") << QString("foo\n") << 1 << Position{1, 1}; + QTest::newRow("second line") << QString("foo\n") << 4 << Position{2, 0}; + QTest::newRow("second mid line") << QString("foo\nbar") << 5 << Position{2, 1}; + QTest::newRow("behind content") << QString("foo\nbar") << 8 << Position(); +} + +void tst_Text::testPositionFromPositionInDocument() +{ + QFETCH(QString, text); + QFETCH(int, documentPosition); + QFETCH(Position, position); + + const QTextDocument doc(text); + QCOMPARE(Position::fromPositionInDocument(&doc, documentPosition), position); +} + void tst_Text::testRangeLength_data() { QTest::addColumn<QString>("text"); |