Tests: add tests for BLI_path_extension ensure & replace
This commit is contained in:
@@ -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
|
||||
* \{ */
|
||||
|
||||
Reference in New Issue
Block a user