summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2023-05-12 10:59:29 +0200
committerDavid Schulz <david.schulz@qt.io>2023-05-16 10:30:15 +0000
commit9758e7145828e1303a33af3b1ae04c4210b55a28 (patch)
tree9c1ce8dbf18445098ba18b9f661db020e37a54f1
parent00d8e9d7179fa5feecdd058dd9a705832bfa3cb5 (diff)
downloadqt-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.cpp2
-rw-r--r--tests/auto/utils/text/tst_text.cpp28
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");