summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@theqtcompany.com>2015-05-12 19:01:03 +0200
committerNikolai Kosjar <nikolai.kosjar@theqtcompany.com>2015-05-21 10:13:13 +0000
commite195e590e2d5d26d9f29c44bdb086fd7c561de76 (patch)
tree8eba559d3e2a5806b98f2536964daf8ca501c589
parent3910fc5def2e346ffc0f3788dba40a72aae95b1a (diff)
downloadqt-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.cpp10
-rw-r--r--src/libs/sqlite/source/utf8string.h5
-rw-r--r--tests/unit/codemodelbackend/unittest/utf8test.cpp28
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"));
+}
+