From cd7d35da9aed66342334a59c0bde6c28170922c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjist=C3=B3f?= Date: Sun, 23 Oct 2016 14:14:41 +0200 Subject: [PATCH] added some new, forgotten test cases and made some new ones for the new methods of String --- test.cpp | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 60 insertions(+), 6 deletions(-) diff --git a/test.cpp b/test.cpp index c8d5eec..09f53c8 100644 --- a/test.cpp +++ b/test.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include "String.h" #include @@ -8,7 +9,7 @@ TEST(StringTest, defaultConstructible) { - EXPECT_EQ(true, std::is_default_constructible::value); + EXPECT_TRUE(std::is_default_constructible::value); } TEST(StringTest, constcharConstructible) @@ -16,27 +17,41 @@ TEST(StringTest, constcharConstructible) // is_constructible with multiple template params cannot be passed to macro, // TODO: should open an issue at GTest's GitHub auto value = std::is_constructible::value; - EXPECT_EQ(true, value); + EXPECT_TRUE(value); } TEST(StringTest, copyConstructible) { - EXPECT_EQ(true, std::is_copy_constructible::value); + EXPECT_TRUE(std::is_copy_constructible::value); } TEST(StringTest, copyAssignable) { - EXPECT_EQ(true, std::is_copy_assignable::value); + EXPECT_TRUE(std::is_copy_assignable::value); } TEST(StringTest, moveConstructible) { - EXPECT_EQ(true, std::is_move_constructible::value); + EXPECT_TRUE(std::is_move_constructible::value); } TEST(StringTest, moveAssignable) { - EXPECT_EQ(true, std::is_move_assignable::value); + EXPECT_TRUE(std::is_move_assignable::value); +} + +TEST(StringTest, cStrMethodWorks) +{ + String str("sajtos cica"); + + EXPECT_STREQ("sajtos cica", str.c_str()); +} + +TEST(StringTest, uninitializedStringcStrThrows) +{ + String str; + + EXPECT_THROW(str.c_str(), std::runtime_error); } TEST(StringTest, addable) @@ -71,6 +86,22 @@ TEST(StringTest, plusequalsAddableChar) EXPECT_STREQ("sajtok", str.c_str()); } +TEST(StringTest, comparable) +{ + String str1("cica"); + String str2("cica"); + + EXPECT_EQ(str1, str2); +} + +TEST(StringTest, uninitializedStringCompareThrows) +{ + String str1; + String str2; + + EXPECT_THROW(str1 == str2, std::runtime_error); +} + TEST(StringTest, indexOperatorWorks) { String str("cica"); @@ -79,6 +110,29 @@ TEST(StringTest, indexOperatorWorks) EXPECT_EQ(i, str[1]); } +TEST(StringTest, indexoperatorBoundCheckWorks) +{ + String str("sajt"); + + EXPECT_THROW(str[4], std::out_of_range); +} + +TEST(StringTest, uninitializedStringIndexingThrows) +{ + String str; + + EXPECT_THROW(str[0], std::runtime_error); +} + +TEST(StringTest, copyOnWriteWorks) +{ + String str1("cica"); + String str2 = str1; + str2[0] = ' '; + + EXPECT_STRNE(str1.c_str(), str2.c_str()); +} + TEST(StringTest, resourceSharingWorks) { String str1("sajt");