diff options
author | Marco Bubke <marco.bubke@theqtcompany.com> | 2015-05-12 19:01:03 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@theqtcompany.com> | 2015-05-21 10:13:13 +0000 |
commit | e195e590e2d5d26d9f29c44bdb086fd7c561de76 (patch) | |
tree | 8eba559d3e2a5806b98f2536964daf8ca501c589 | |
parent | 3910fc5def2e346ffc0f3788dba40a72aae95b1a (diff) | |
download | qt-creator-e195e590e2d5d26d9f29c44bdb086fd7c561de76.tar.gz |
Add conversion operators for utf8 string
There is not implicit constructor from QByteArray to prevent wrong
conversion.
Change-Id: Ie9b532e6630b069b9ef11d1b025f1c4cc97049e3
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
-rw-r--r-- | src/libs/sqlite/source/utf8string.cpp | 10 | ||||
-rw-r--r-- | src/libs/sqlite/source/utf8string.h | 5 | ||||
-rw-r--r-- | tests/unit/codemodelbackend/unittest/utf8test.cpp | 28 |
3 files changed, 42 insertions, 1 deletions
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"); } +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")); +} + |