Tests: add tests for BLI_path_extension ensure & replace

This commit is contained in:
Campbell Barton
2023-04-19 21:14:30 +10:00
parent 7f2c7feaee
commit 86611a5fcc

View File

@@ -674,6 +674,37 @@ TEST(path_util, PathFrameStrip)
/** \} */
/* -------------------------------------------------------------------- */
/** \name Tests for: #BLI_path_extension
* \{ */
TEST(path_util, PathExtension)
{
EXPECT_EQ(nullptr, BLI_path_extension("some.def/file"));
EXPECT_EQ(nullptr, BLI_path_extension("Text"));
EXPECT_EQ(nullptr, BLI_path_extension("Text…001"));
EXPECT_EQ(nullptr, BLI_path_extension(".hidden"));
EXPECT_EQ(nullptr, BLI_path_extension(".hidden/"));
EXPECT_EQ(nullptr, BLI_path_extension("/.hidden"));
EXPECT_EQ(nullptr, BLI_path_extension("dir/.hidden"));
EXPECT_EQ(nullptr, BLI_path_extension("/dir/.hidden"));
EXPECT_EQ(nullptr, BLI_path_extension("."));
EXPECT_EQ(nullptr, BLI_path_extension(".."));
EXPECT_EQ(nullptr, BLI_path_extension("..."));
EXPECT_STREQ(".", BLI_path_extension("...a."));
EXPECT_STREQ(".", BLI_path_extension("...a.."));
EXPECT_EQ(nullptr, BLI_path_extension("...a../"));
EXPECT_STREQ(".", BLI_path_extension("some/file."));
EXPECT_STREQ(".gz", BLI_path_extension("some/file.tar.gz"));
EXPECT_STREQ(".abc", BLI_path_extension("some.def/file.abc"));
EXPECT_STREQ(".abc", BLI_path_extension("C:\\some.def\\file.abc"));
EXPECT_STREQ(".001", BLI_path_extension("Text.001"));
}
/** \} */
/* -------------------------------------------------------------------- */
/** \name Tests for: #BLI_path_extension_check
* \{ */
@@ -717,6 +748,93 @@ TEST(path_util, PathExtensionCheck)
/** \} */
/* -------------------------------------------------------------------- */
/** \name Tests for: #BLI_path_extension_replace
* \{ */
#define PATH_EXTENSION_REPLACE(input_path, input_ext, expect_result, expect_path) \
{ \
char path[FILE_MAX]; \
BLI_strncpy(path, input_path, FILE_MAX); \
const bool ret = BLI_path_extension_replace(path, sizeof(path), input_ext); \
if (expect_result) { \
EXPECT_TRUE(ret); \
} \
else { \
EXPECT_FALSE(ret); \
} \
EXPECT_STREQ(expect_path, path); \
} \
((void)0)
TEST(path_util, PathExtensionReplace)
{
PATH_EXTENSION_REPLACE("test", ".txt", true, "test.txt");
PATH_EXTENSION_REPLACE("test.", ".txt", true, "test.txt");
/* Unlike #BLI_path_extension_ensure, exceeds '.' are not stripped. */
PATH_EXTENSION_REPLACE("test..", ".txt", true, "test..txt");
PATH_EXTENSION_REPLACE("test.txt", ".txt", true, "test.txt");
PATH_EXTENSION_REPLACE("test.ext", ".txt", true, "test.txt");
PATH_EXTENSION_REPLACE("test", "_txt", true, "test_txt");
PATH_EXTENSION_REPLACE("test.ext", "_txt", true, "test_txt");
PATH_EXTENSION_REPLACE("test", "", true, "test");
PATH_EXTENSION_REPLACE("", "_txt", true, "_txt");
/* Ensure leading '.' isn't treated as an extension. */
PATH_EXTENSION_REPLACE(".hidden", ".hidden", true, ".hidden.hidden");
PATH_EXTENSION_REPLACE("..hidden", ".hidden", true, "..hidden.hidden");
PATH_EXTENSION_REPLACE("._.hidden", ".hidden", true, "._.hidden");
}
#undef PATH_EXTENSION_REPLACE
/** \} */
/* -------------------------------------------------------------------- */
/** \name Tests for: #BLI_path_extension_ensure
* \{ */
#define PATH_EXTENSION_ENSURE(input_path, input_ext, expect_result, expect_path) \
{ \
char path[FILE_MAX]; \
BLI_strncpy(path, input_path, FILE_MAX); \
const bool ret = BLI_path_extension_ensure(path, sizeof(path), input_ext); \
if (expect_result) { \
EXPECT_TRUE(ret); \
} \
else { \
EXPECT_FALSE(ret); \
} \
EXPECT_STREQ(expect_path, path); \
} \
((void)0)
TEST(path_util, PathExtensionEnsure)
{
PATH_EXTENSION_ENSURE("test", ".txt", true, "test.txt");
PATH_EXTENSION_ENSURE("test.", ".txt", true, "test.txt");
PATH_EXTENSION_ENSURE("test..", ".txt", true, "test.txt");
PATH_EXTENSION_ENSURE("test.txt", ".txt", true, "test.txt");
PATH_EXTENSION_ENSURE("test.ext", ".txt", true, "test.ext.txt");
PATH_EXTENSION_ENSURE("test", "_txt", true, "test_txt");
PATH_EXTENSION_ENSURE("test.ext", "_txt", true, "test.ext_txt");
PATH_EXTENSION_ENSURE("test", "", true, "test");
PATH_EXTENSION_ENSURE("", "_txt", true, "_txt");
/* Ensure leading '.' isn't treated as an extension. */
PATH_EXTENSION_ENSURE(".hidden", ".hidden", true, ".hidden.hidden");
PATH_EXTENSION_ENSURE("..hidden", ".hidden", true, "..hidden.hidden");
PATH_EXTENSION_ENSURE("._.hidden", ".hidden", true, "._.hidden");
}
#undef PATH_EXTENSION_ENSURE
/** \} */
/* -------------------------------------------------------------------- */
/** \name Tests for: #BLI_path_frame_check_chars
* \{ */
@@ -861,37 +979,6 @@ TEST(path_util, PathSequenceDecode)
/** \} */
/* -------------------------------------------------------------------- */
/** \name Tests for: #BLI_path_extension
* \{ */
TEST(path_util, PathExtension)
{
EXPECT_EQ(nullptr, BLI_path_extension("some.def/file"));
EXPECT_EQ(nullptr, BLI_path_extension("Text"));
EXPECT_EQ(nullptr, BLI_path_extension("Text…001"));
EXPECT_EQ(nullptr, BLI_path_extension(".hidden"));
EXPECT_EQ(nullptr, BLI_path_extension(".hidden/"));
EXPECT_EQ(nullptr, BLI_path_extension("/.hidden"));
EXPECT_EQ(nullptr, BLI_path_extension("dir/.hidden"));
EXPECT_EQ(nullptr, BLI_path_extension("/dir/.hidden"));
EXPECT_EQ(nullptr, BLI_path_extension("."));
EXPECT_EQ(nullptr, BLI_path_extension(".."));
EXPECT_EQ(nullptr, BLI_path_extension("..."));
EXPECT_STREQ(".", BLI_path_extension("...a."));
EXPECT_STREQ(".", BLI_path_extension("...a.."));
EXPECT_EQ(nullptr, BLI_path_extension("...a../"));
EXPECT_STREQ(".", BLI_path_extension("some/file."));
EXPECT_STREQ(".gz", BLI_path_extension("some/file.tar.gz"));
EXPECT_STREQ(".abc", BLI_path_extension("some.def/file.abc"));
EXPECT_STREQ(".abc", BLI_path_extension("C:\\some.def\\file.abc"));
EXPECT_STREQ(".001", BLI_path_extension("Text.001"));
}
/** \} */
/* -------------------------------------------------------------------- */
/** \name Tests for: #BLI_path_suffix
* \{ */