From b2c8d76156904fafbd7b4193cbcb763b4cf1d8ca Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 7 Mar 2016 15:06:28 +0100 Subject: [PATCH] Utils: Add constructor for character pointer Change-Id: I12bd787caf911502a666de2c324bb74b8bd7b0aa Reviewed-by: Tobias Hunger --- src/libs/utils/smallstring.h | 9 +++++++++ tests/unit/unittest/smallstringtest.cpp | 16 ++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/libs/utils/smallstring.h b/src/libs/utils/smallstring.h index fedb2846a57..6c815c7ebfb 100644 --- a/src/libs/utils/smallstring.h +++ b/src/libs/utils/smallstring.h @@ -114,6 +114,15 @@ public: { } + template::value>::type + > + SmallString(Type characterPointer) noexcept + : SmallString(characterPointer, std::strlen(characterPointer)) + { + static_assert(!std::is_array::value, "Input type is array and not char pointer!"); + } + SmallString(const QString &qString) : SmallString(SmallString::fromQString(qString)) {} diff --git a/tests/unit/unittest/smallstringtest.cpp b/tests/unit/unittest/smallstringtest.cpp index b0d465e1629..cbdcf1cdac5 100644 --- a/tests/unit/unittest/smallstringtest.cpp +++ b/tests/unit/unittest/smallstringtest.cpp @@ -87,6 +87,14 @@ TEST(SmallString, ShortSmallStringIsReference) ASSERT_TRUE(longText.isReadOnlyReference()); } +TEST(SmallString, SmallStringContructorIsNotReference) +{ + const char *shortCSmallString = "short string"; + auto shortText = SmallString(shortCSmallString); + + ASSERT_TRUE(shortText.isShortString()); +} + TEST(SmallString, ShortSmallStringIsNotReference) { const char *shortCSmallString = "short string"; @@ -95,6 +103,14 @@ TEST(SmallString, ShortSmallStringIsNotReference) ASSERT_FALSE(shortText.isReadOnlyReference()); } +TEST(SmallString, LongSmallStringConstrutorIsAllocated) +{ + const char *longCSmallString = "very very very very very long text"; + auto longText = SmallString(longCSmallString); + + ASSERT_TRUE(longText.hasAllocatedMemory()); +} + TEST(SmallString, MaximumShortSmallString) { SmallString maximumShortText("very very very very short text", 30);