stuff-from-scratch/test/core/TestString.cpp

98 lines
2.1 KiB
C++
Raw Normal View History

2023-12-18 10:16:31 +00:00
#include "String.h"
2022-12-05 17:50:49 +00:00
#include "TestFramework.h"
2023-12-18 10:16:31 +00:00
//#include "TestUtils.h"
#include <iostream>
2022-12-05 17:50:49 +00:00
2023-12-20 16:58:22 +00:00
TEST_CASE(String_Append, "core")
2023-12-18 10:16:31 +00:00
{
String str;
str += 'a';
str += 'b';
str += 'c';
str += 'd';
REQUIRE(str == "abcd");
2023-12-20 16:58:22 +00:00
String long_string("abc/def/ghi/jkl");
2023-12-18 10:16:31 +00:00
}
2023-12-20 16:58:22 +00:00
TEST_CASE(String_Reverse, "core")
2023-12-18 10:16:31 +00:00
{
String str0;
str0.reverse();
REQUIRE(str0.empty());
String str1("a");
str1.reverse();
REQUIRE(str1 == "a");
String str2("ab");
str2.reverse();
REQUIRE(str2 == "ba");
String str3("abc");
str3.reverse();
REQUIRE(str3 == "cba");
String str4("abcd");
str4.reverse();
REQUIRE(str4 == "dcba");
}
2023-12-20 16:58:22 +00:00
TEST_CASE(String_Extend, "core")
{
String str("/home/jgrogan/code/compilz/src/src");
auto str_cpy = str;
str += "/";
str += "test";
REQUIRE(str == String("/home/jgrogan/code/compilz/src/src/test"));
str_cpy += "/";
str_cpy += "test";
REQUIRE(str == str_cpy);
}
TEST_CASE(String_Slice, "core")
{
String str("test.dat");
const auto rindex = str.rindex('.');
REQUIRE(rindex.valid());
REQUIRE(rindex.value() == 4);
String right;
str.slice(rindex.value(), str.size(), right);
REQUIRE(right == ".dat");
const auto split = str.rsplit('.');
REQUIRE(split.first() == "test");
REQUIRE(split.second() == "dat");
}
2023-12-18 10:16:31 +00:00
/*
2022-12-06 18:02:43 +00:00
TEST_CASE(TestStringUtils_StripSurroundingWhitepsace, "core")
2022-12-05 17:50:49 +00:00
{
2023-12-21 09:18:44 +00:00
String input = " super() ";
String stripped = StringUtils::stripSurroundingWhitepsace(input);
2022-12-06 18:02:43 +00:00
REQUIRE(stripped == "super()");
}
TEST_CASE(TestStringUtils_RemoveUpTo, "core")
{
2023-12-21 09:18:44 +00:00
String input = "def{filename}abc/123/456";
String removed = StringUtils::removeUpTo(input, "{filename}");
2022-12-06 18:02:43 +00:00
REQUIRE(removed == "abc/123/456");
}
TEST_CASE(TestStringUtils_startsWith, "core")
{
2023-12-21 09:18:44 +00:00
String input = " ```some triple ticks ";
2022-12-06 18:02:43 +00:00
bool ignore_whitespace{false};
auto starts_with = StringUtils::startsWith(input, "```", ignore_whitespace);
REQUIRE(!starts_with);
2022-12-05 17:50:49 +00:00
2022-12-06 18:02:43 +00:00
ignore_whitespace = true;
starts_with = StringUtils::startsWith(input, "```", ignore_whitespace);
REQUIRE(starts_with);
2022-12-05 17:50:49 +00:00
}
2023-12-18 10:16:31 +00:00
*/