1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
#include <cstring>
#include "../doctest/doctest/doctest.h"
#include "../src/Generic/String/String.h"
TEST_SUITE_BEGIN("ClassString");
TEST_SUITE("Constructors") {
TEST_CASE("Ctor_CreatesInternalArrayOfLength_WhenGivenCorrectLength") {
String s(5);
CHECK_EQ(strlen(s.get_cstr()), 5);
}
TEST_CASE("Ctor_CopiesValues_WhenGivenCorrectCString") {
String s("Testing string.");
CHECK_EQ(strcmp(s.get_cstr(), "Testing string."), 0);
}
}
TEST_SUITE("GettersAndSetters") {
TEST_CASE("CStrGetter_ReturnsCorrectPointer_WhenCreatedWithCString") {
String s("Testing string.");
CHECK_EQ(strcmp(s.get_cstr(), "Testing string."), 0);
}
TEST_CASE("LengthGetter_ReturnsCorrectLength_WhenCreatedWithLength") {
String s(5);
CHECK_EQ(s.get_length(), 5);
}
TEST_CASE("LengthGetter_ReturnsCorrectLength_WhenCreatedWithCString") {
String s("Testing string.");
CHECK_EQ(s.get_length(), strlen(s.get_cstr()));
}
}
TEST_SUITE("Operators") {
TEST_CASE("BracketsOperator_ReturnsCorrectCharacter_WhenGivenCorrectIndex") {
String s("Tesing string.");
unsigned index = 0;
char expectedCharacter = '\0';
SUBCASE("IndexIsZero") { index = 0; expectedCharacter = 'T'; }
SUBCASE("IndexIsSomewhereInTheMiddle") { index = 5; expectedCharacter = 'g'; }
SUBCASE("IndexIsLast") { index = 13; expectedCharacter = '.'; }
SUBCASE("IndexIsTerminatingZero") { index = 14; expectedCharacter = '\0'; }
CHECK_EQ(s[index], expectedCharacter);
}
TEST_CASE("BracketsOperator_SetsCharacter_WhenGivenCorrectIndexAndValue") {
String s("Tesing string.");
unsigned index = 0;
char replaceWith = 'W';
SUBCASE("IndexIsZero") { index = 0; }
SUBCASE("IndexIsSomewhereInTheMiddle") { index = 5; }
SUBCASE("IndexIsLast") { index = 13; }
s[index] = replaceWith;
CHECK_EQ(s[index], replaceWith);
}
TEST_CASE("PlusEqualOperator_AppendsProperlyCString_WhenGivenCorrectStringAndCreatedWithCstr") {
String s("Testing");
s += " string.";
CHECK_EQ(strcmp(s.get_cstr(), "Testing string."), 0);
}
TEST_CASE("PlusEqualOperator_AppendsProperlyNumber_WhenGivenCorrectNumberAndCreatedWithCstr") {
String s("Testing");
s += 15684;
CHECK_EQ(strcmp(s.get_cstr(), "Testing15684"), 0);
}
}
TEST_SUITE("compare()") {
TEST_CASE("compare_ReturnsSameResultAsstrcmp_WhenFirstIsLessThanSecond") {
String s1("Test"), s2("test");
CHECK_LT(s1.compare(s2), 0);
CHECK_LT(strcmp("Test", "test"), 0);
}
TEST_CASE("compare_ReturnsSameResultAsstrcmp_WhenFirstIsGreaterThanSecond") {
String s1("test"), s2("Test");
CHECK_GT(s1.compare(s2), 0);
CHECK_GT(strcmp("test", "Test"), 0);
}
TEST_CASE("compare_ReturnsSameResultAsstrcmp_WhenFirstIsEqualToSecond") {
String s1("test"), s2("test");
CHECK_EQ(s1.compare(s2), strcmp("test", "test"));
}
}
TEST_SUITE_END();
|