Skip to content

Instantly share code, notes, and snippets.

@trikitrok
Last active June 30, 2024 14:24
Show Gist options
  • Save trikitrok/b1dad5becce8487136d4 to your computer and use it in GitHub Desktop.
Save trikitrok/b1dad5becce8487136d4 to your computer and use it in GitHub Desktop.
#include <gmock/gmock.h>
#include <vector>
#include "../code/StringUtils.h"
using namespace ::testing;
TEST(StringUtils, CanEscapeOneString) {
EXPECT_THAT(StringUtils::escapeString("*"), Eq("\\*"));
EXPECT_THAT(StringUtils::escapeString("\\"), Eq("\\\\"));
EXPECT_THAT(StringUtils::escapeString("||"), Eq("\\|\\|"));
EXPECT_THAT(StringUtils::escapeString(","), Eq(","));
}
TEST(StringUtils, CanEscapeSeveralStringsEvenThoseUsedInRegularExpressions) {
EXPECT_THAT(StringUtils::escapeStrings({",", "*", "||", ";", "\\"}),
ElementsAre(",", "\\*", "\\|\\|", ";", "\\\\"));
}
TEST(StringUtils, CanSplitUsingMultipleTokens) {
std::vector<std::string> delimiters = {",", "*", "??"};
EXPECT_THAT(StringUtils::split("1*2??3,4", delimiters),
ElementsAre("1", "2", "3", "4"));
}
TEST(StringUtils, CanTellIfAGivenStringRepresentsAnInteger) {
EXPECT_TRUE(StringUtils::isAnInteger("1"));
EXPECT_FALSE(StringUtils::isAnInteger("15 7 8"));
EXPECT_FALSE(StringUtils::isAnInteger("1.5"));
EXPECT_FALSE(StringUtils::isAnInteger("!15"));
}
TEST(StringUtils, CanJoinAVectorOfStrings) {
EXPECT_THAT(StringUtils::join({"1", "2", "3"}, "|"), Eq("1|2|3"));
EXPECT_THAT(StringUtils::join({"1", "2", "3"}, " "), Eq("1 2 3"));
EXPECT_THAT(StringUtils::join({"1", "2", "3"}, ", "), Eq("1, 2, 3"));
EXPECT_THAT(StringUtils::join({"1", "2", "3"}, ""), Eq("123"));
}
TEST(StringUtils, CanSplitStringsAndJoinThemAgain) {
std::string str = "1|2|3";
std::string delimiter = "|";
EXPECT_THAT(StringUtils::join(StringUtils::split(str, delimiter), delimiter),
Eq(str));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment