From e195e590e2d5d26d9f29c44bdb086fd7c561de76 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Tue, 12 May 2015 19:01:03 +0200 Subject: Add conversion operators for utf8 string There is not implicit constructor from QByteArray to prevent wrong conversion. Change-Id: Ie9b532e6630b069b9ef11d1b025f1c4cc97049e3 Reviewed-by: Nikolai Kosjar --- src/libs/sqlite/source/utf8string.cpp | 10 ++++++++ src/libs/sqlite/source/utf8string.h | 5 +++- tests/unit/codemodelbackend/unittest/utf8test.cpp | 28 +++++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/libs/sqlite/source/utf8string.cpp b/src/libs/sqlite/source/utf8string.cpp index b0bd63c718..fd19020439 100644 --- a/src/libs/sqlite/source/utf8string.cpp +++ b/src/libs/sqlite/source/utf8string.cpp @@ -185,6 +185,16 @@ void Utf8String::registerType() qRegisterMetaType("Utf8String"); } +Utf8String::operator const QByteArray &() const +{ + return byteArray; +} + +Utf8String::operator QString() const +{ + return toString(); +} + const Utf8String operator +(const Utf8String &first, const Utf8String &second) { return Utf8String(first.byteArray + second.byteArray); diff --git a/src/libs/sqlite/source/utf8string.h b/src/libs/sqlite/source/utf8string.h index a8f227b170..b3e43694a6 100644 --- a/src/libs/sqlite/source/utf8string.h +++ b/src/libs/sqlite/source/utf8string.h @@ -56,7 +56,7 @@ class SQLITE_EXPORT Utf8String public: Utf8String() = default; explicit Utf8String(const char *utf8Text, int size); - explicit Utf8String(const QString &text); + Utf8String(const QString &text); const char *constData() const; @@ -93,6 +93,9 @@ public: static void registerType(); + operator QString () const; + operator const QByteArray & () const; + protected: explicit Utf8String(const QByteArray &utf8ByteArray); diff --git a/tests/unit/codemodelbackend/unittest/utf8test.cpp b/tests/unit/codemodelbackend/unittest/utf8test.cpp index 6ca4aa7ea3..2a47e2d833 100644 --- a/tests/unit/codemodelbackend/unittest/utf8test.cpp +++ b/tests/unit/codemodelbackend/unittest/utf8test.cpp @@ -242,3 +242,31 @@ TEST(Utf8, RemoveFastFromVector) ASSERT_TRUE(removed); ASSERT_THAT(values, Not(Contains(Utf8StringLiteral("b")))); } + +TEST(Utf8, ConverteAutomaticallyFromQString) +{ + QString text(QStringLiteral("foo")); + + Utf8String utf8Text(text); + + ASSERT_THAT(utf8Text, Utf8StringLiteral("foo")); +} + +TEST(Utf8, ConverteAutomaticallyToQString) +{ + Utf8String utf8Text(Utf8StringLiteral("foo")); + + QString text = utf8Text; + + ASSERT_THAT(text, QStringLiteral("foo")); +} + +TEST(Utf8, ConverteAutomaticallyToQByteArray) +{ + Utf8String utf8Text(Utf8StringLiteral("foo")); + + QByteArray bytes = utf8Text; + + ASSERT_THAT(bytes, QByteArrayLiteral("foo")); +} + -- cgit v1.2.1