|
@@ -0,0 +1,205 @@
|
|
|
+#include <gtest/gtest.h>
|
|
|
+#include "fileutil.h"
|
|
|
+#include "array.h"
|
|
|
+
|
|
|
+
|
|
|
+TEST(FileUtilTest, TestGetSubFile)
|
|
|
+{
|
|
|
+ const auto args = ::testing::internal::GetArgvs();
|
|
|
+ EXPECT_FALSE(args.empty());
|
|
|
+ std::string test_dir("");
|
|
|
+ if (args.size() == 1) {
|
|
|
+ auto dir = args[0].find_last_of('/');
|
|
|
+ if (dir != std::string::npos) {
|
|
|
+ test_dir = args[0].substr(0, dir + 1);
|
|
|
+ test_dir += "test_libtoolkit_area";
|
|
|
+ }
|
|
|
+ ASSERT_TRUE(!test_dir.empty());
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ test_dir = args[1];
|
|
|
+ }
|
|
|
+ std::cout << "test dir: " << test_dir << std::endl;
|
|
|
+
|
|
|
+ auto files = fileutil_get_sub_files_a((test_dir + "/test_dir_4").c_str());
|
|
|
+ ASSERT_TRUE(array_empty(files));
|
|
|
+
|
|
|
+ files = fileutil_get_sub_files_a(NULL);
|
|
|
+ ASSERT_TRUE(files == NULL);
|
|
|
+ files = fileutil_get_sub_files_a("C");
|
|
|
+ ASSERT_TRUE(files == NULL);
|
|
|
+
|
|
|
+ files = fileutil_get_sub_dirs_a(test_dir.c_str());
|
|
|
+ ASSERT_TRUE(files != NULL);
|
|
|
+ EXPECT_TRUE(files->nelts == 4);
|
|
|
+ toolkit_array_free2(files);
|
|
|
+
|
|
|
+ files = fileutil_get_sub_dirs2_a(test_dir.c_str(), 2);
|
|
|
+ ASSERT_TRUE(files != NULL);
|
|
|
+ EXPECT_TRUE(files->nelts == 2);
|
|
|
+ toolkit_array_free2(files);
|
|
|
+
|
|
|
+ files = fileutil_get_sub_files_a((test_dir + "/test_dir_3").c_str());
|
|
|
+ ASSERT_TRUE(files != NULL);
|
|
|
+ EXPECT_TRUE(files->nelts == 3);
|
|
|
+ toolkit_array_free2(files);
|
|
|
+
|
|
|
+ files = fileutil_get_sub_files2_a((test_dir + "/test_dir_3").c_str(), 2);
|
|
|
+ EXPECT_TRUE(files->nelts == 2);
|
|
|
+ toolkit_array_free2(files);
|
|
|
+
|
|
|
+ files = fileutil_get_sub_dirs_a((test_dir + "/test_dir_3").c_str());
|
|
|
+ ASSERT_TRUE(array_empty(files));
|
|
|
+
|
|
|
+ files = fileutil_get_sub_dirs2_a((test_dir + "/test_dir_3").c_str(), 2);
|
|
|
+ ASSERT_TRUE(array_empty(files));
|
|
|
+}
|
|
|
+
|
|
|
+#if 0
|
|
|
+/*
|
|
|
+D:\GitReposity\Framework\out\build\x86-Debug\bin\Debug\test_libtoolkit_area
|
|
|
+ */
|
|
|
+TEST(FileUtilTest, DealWithBackSlash)
|
|
|
+{
|
|
|
+ const auto args = ::testing::internal::GetArgvs();
|
|
|
+ EXPECT_FALSE(args.empty());
|
|
|
+ const auto test_dir = args[1];
|
|
|
+ std::cout << "test dir: " << test_dir << std::endl;
|
|
|
+ ASSERT_TRUE(ExistsDirA(test_dir.c_str()));
|
|
|
+ ASSERT_TRUE(ExistsFileA((test_dir + "\\test_file3.txt").c_str()));
|
|
|
+ ASSERT_TRUE(ExistsFileA((test_dir + "\\test_dir_3\\test_dir_3_file_3.txt").c_str()));
|
|
|
+
|
|
|
+ /*copy dir*/
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "\\new_dir_1").c_str()));
|
|
|
+ ASSERT_TRUE(CopyDirA((test_dir + "\\test_dir_3").c_str(), (test_dir + "\\new_dir_1").c_str()));
|
|
|
+ EXPECT_TRUE(ExistsDirA((test_dir + "\\new_dir_1").c_str()));
|
|
|
+ ASSERT_TRUE(RemoveDirRecursiveA((test_dir + "\\new_dir_1").c_str()));
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "\\new_dir_1").c_str()));
|
|
|
+
|
|
|
+ /*backup*/
|
|
|
+ CopyDirA((test_dir + "\\test_dir_2").c_str(), (test_dir + "\\new_bk_2").c_str());
|
|
|
+ CopyDirA((test_dir + "\\test_dir_3").c_str(), (test_dir + "\\new_bk_3").c_str());
|
|
|
+
|
|
|
+ /*remove file*/
|
|
|
+ ASSERT_TRUE(RemoveFileA((test_dir + "\\test_dir_3\\test_dir_3_file_3.txt").c_str()));
|
|
|
+ EXPECT_FALSE(ExistsFileA((test_dir + "\\test_dir_3\\test_dir_3_file_3.txt").c_str()));
|
|
|
+
|
|
|
+ /*rollback new_dir_3*/
|
|
|
+ CopyDirA((test_dir + "\\new_bk_3").c_str(), (test_dir + "\\test_dir_3").c_str());
|
|
|
+ RemoveDirRecursiveA((test_dir + "\\new_bk_3").c_str());
|
|
|
+
|
|
|
+ /*create grandson directory*/
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "\\new_dir_2\\new_dir_2_1").c_str()));
|
|
|
+ EXPECT_FALSE(CreateDirA((test_dir + "\\new_dir_2\\new_dir_2_1").c_str(), FALSE));
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "\\new_dir_2").c_str()));
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "\\new_dir_2\\new_dir_2_1").c_str()));
|
|
|
+ EXPECT_TRUE(CreateDirA((test_dir + "\\new_dir_2\\new_dir_2_1").c_str(), TRUE));
|
|
|
+ EXPECT_TRUE(ExistsDirA((test_dir + "\\new_dir_2\\new_dir_2_1").c_str()));
|
|
|
+ /*remove dir*/
|
|
|
+ ASSERT_TRUE(RemoveDirRecursiveA((test_dir + "\\new_dir_2").c_str()));
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "\\new_dir_2\\new_dir_2_1").c_str()));
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "\\new_dir_2").c_str()));
|
|
|
+ /*create dir*/
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "\\new_dir_3").c_str()));
|
|
|
+ EXPECT_TRUE(CreateDirRecursiveA((test_dir + "\\new_dir_3\\new_dir_3_1").c_str()));
|
|
|
+ EXPECT_TRUE(ExistsDirA((test_dir + "\\new_dir_3\\new_dir_3_1").c_str()));
|
|
|
+ RemoveDirRecursiveA((test_dir + "\\new_dir_3").c_str());
|
|
|
+ /*create parent dir*/
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "\\new_dir_4").c_str()));
|
|
|
+ EXPECT_FALSE(CreateParentDirA((test_dir + "\\new_dir_4\\new_dir_4_1\\new_dir_4_1_1").c_str(), FALSE));
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "\\new_dir_4").c_str()));
|
|
|
+ EXPECT_TRUE(CreateParentDirA((test_dir + "\\new_dir_4\\new_dir_4_1\\new_dir_4_1_1").c_str(), TRUE));
|
|
|
+ EXPECT_TRUE(ExistsDirA((test_dir + "\\new_dir_4\\new_dir_4_1").c_str()));
|
|
|
+ RemoveDirRecursiveA((test_dir + "\\new_dir_4").c_str());
|
|
|
+ /*clear dir*/
|
|
|
+ EXPECT_TRUE(ExistsFileA((test_dir + "\\test_dir_2\\test_sub_dir_2\\test_sub_dir_2_file_1.txt").c_str()));
|
|
|
+ EXPECT_TRUE(ClearDirRecursiveA((test_dir + "\\test_dir_2").c_str()));
|
|
|
+ EXPECT_FALSE(ExistsFileA((test_dir + "\\test_dir_2\\test_sub_dir_2\\test_sub_dir_2_file_1.txt").c_str()));
|
|
|
+ EXPECT_TRUE(ExistsDirA((test_dir + "\\test_dir_2\\test_sub_dir_2").c_str()));
|
|
|
+
|
|
|
+ /*rollback new_dir_2*/
|
|
|
+ CopyDirA((test_dir + "\\new_bk_2").c_str(), (test_dir + "\\test_dir_2").c_str());
|
|
|
+ RemoveDirRecursiveA((test_dir + "\\new_bk_2").c_str());
|
|
|
+}
|
|
|
+
|
|
|
+#else
|
|
|
+/*
|
|
|
+D:/GitReposity/Framework/out/build/x86-Debug/bin/Debug/test_libtoolkit_area
|
|
|
+ */
|
|
|
+TEST(FileUtilTest, DealWithSlash)
|
|
|
+{
|
|
|
+ const auto args = ::testing::internal::GetArgvs();
|
|
|
+ EXPECT_FALSE(args.empty());
|
|
|
+ std::string test_dir("");
|
|
|
+ if (args.size() == 1) {
|
|
|
+ auto dir = args[0].find_last_of('/');
|
|
|
+ if(dir != std::string::npos)
|
|
|
+ {
|
|
|
+ test_dir = args[0].substr(0, dir + 1);
|
|
|
+ test_dir += "test_libtoolkit_area";
|
|
|
+ }
|
|
|
+ EXPECT_TRUE(!test_dir.empty());
|
|
|
+ } else {
|
|
|
+ test_dir = args[1];
|
|
|
+ }
|
|
|
+ std::cout << "test dir: " << test_dir << std::endl;
|
|
|
+ ASSERT_TRUE(ExistsDirA(test_dir.c_str()));
|
|
|
+ ASSERT_TRUE(ExistsFileA((test_dir + "/test_file3.txt").c_str()));
|
|
|
+ ASSERT_TRUE(ExistsFileA((test_dir + "/test_dir_3/test_dir_3_file_3.txt").c_str()));
|
|
|
+
|
|
|
+ /*create dir*/
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "/new_dir_3").c_str()));
|
|
|
+ ASSERT_TRUE(CreateDirRecursiveA((test_dir + "/new_dir_3/new_dir_3_1").c_str()));
|
|
|
+ EXPECT_TRUE(ExistsDirA((test_dir + "/new_dir_3/new_dir_3_1").c_str()));
|
|
|
+ /*remove dir*/
|
|
|
+ ASSERT_TRUE(RemoveDirRecursiveA((test_dir + "/new_dir_3").c_str()));
|
|
|
+ ASSERT_FALSE(ExistsDirA((test_dir + "/new_dir_3/new_dir_3_1").c_str()));
|
|
|
+ ASSERT_FALSE(ExistsDirA((test_dir + "/new_dir_3").c_str()));
|
|
|
+
|
|
|
+ /*copy dir*/
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "/new_dir_1").c_str()));
|
|
|
+ ASSERT_TRUE(CopyDirA((test_dir + "/test_dir_3").c_str(), (test_dir + "/new_dir_1").c_str()));
|
|
|
+ EXPECT_TRUE(ExistsDirA((test_dir + "/new_dir_1").c_str()));
|
|
|
+ ASSERT_TRUE(RemoveDirRecursiveA((test_dir + "/new_dir_1").c_str()));
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "/new_dir_1").c_str()));
|
|
|
+
|
|
|
+ /*backup*/
|
|
|
+ CopyDirA((test_dir + "/test_dir_2").c_str(), (test_dir + "/new_bk_2").c_str());
|
|
|
+ CopyDirA((test_dir + "/test_dir_3").c_str(), (test_dir + "/new_bk_3").c_str());
|
|
|
+
|
|
|
+ /*remove file*/
|
|
|
+ ASSERT_TRUE(RemoveFileA((test_dir + "/test_dir_3/test_dir_3_file_3.txt").c_str()));
|
|
|
+ EXPECT_FALSE(ExistsFileA((test_dir + "/test_dir_3/test_dir_3_file_3.txt").c_str()));
|
|
|
+
|
|
|
+ /*rollback new_dir_3*/
|
|
|
+ CopyDirA((test_dir + "/new_bk_3").c_str(), (test_dir + "/test_dir_3").c_str());
|
|
|
+ RemoveDirRecursiveA((test_dir + "/new_bk_3").c_str());
|
|
|
+
|
|
|
+ /*create grandson directory*/
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "/new_dir_2/new_dir_2_1").c_str()));
|
|
|
+ EXPECT_FALSE(CreateDirA((test_dir + "/new_dir_2/new_dir_2_1").c_str(), FALSE));
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "/new_dir_2").c_str()));
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "/new_dir_2/new_dir_2_1").c_str()));
|
|
|
+ EXPECT_TRUE(CreateDirA((test_dir + "/new_dir_2/new_dir_2_1").c_str(), TRUE));
|
|
|
+ EXPECT_TRUE(ExistsDirA((test_dir + "/new_dir_2/new_dir_2_1").c_str()));
|
|
|
+ /*remove dir*/
|
|
|
+ RemoveDirRecursiveA((test_dir + "/new_dir_2").c_str());
|
|
|
+ /*create parent dir*/
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "/new_dir_4").c_str()));
|
|
|
+ EXPECT_FALSE(CreateParentDirA((test_dir + "/new_dir_4/new_dir_4_1/new_dir_4_1_1").c_str(), FALSE));
|
|
|
+ EXPECT_FALSE(ExistsDirA((test_dir + "/new_dir_4").c_str()));
|
|
|
+ EXPECT_TRUE(CreateParentDirA((test_dir + "/new_dir_4/new_dir_4_1/new_dir_4_1_1").c_str(), TRUE));
|
|
|
+ EXPECT_TRUE(ExistsDirA((test_dir + "/new_dir_4/new_dir_4_1").c_str()));
|
|
|
+ RemoveDirRecursiveA((test_dir + "/new_dir_4").c_str());
|
|
|
+ /*clear dir*/
|
|
|
+ EXPECT_TRUE(ExistsFileA((test_dir + "/test_dir_2/test_sub_dir_2/test_sub_dir_2_file_1.txt").c_str()));
|
|
|
+ EXPECT_TRUE(ClearDirRecursiveA((test_dir + "/test_dir_2").c_str()));
|
|
|
+ EXPECT_FALSE(ExistsFileA((test_dir + "/test_dir_2/test_sub_dir_2/test_sub_dir_2_file_1.txt").c_str()));
|
|
|
+ EXPECT_TRUE(ExistsDirA((test_dir + "/test_dir_2/test_sub_dir_2").c_str()));
|
|
|
+
|
|
|
+ /*rollback new_dir_2*/
|
|
|
+ CopyDirA((test_dir + "/new_bk_2").c_str(), (test_dir + "/test_dir_2").c_str());
|
|
|
+ RemoveDirRecursiveA((test_dir + "/new_bk_2").c_str());
|
|
|
+}
|
|
|
+
|
|
|
+#endif
|