-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFileEnumeratorTest.cpp
More file actions
105 lines (83 loc) · 3.1 KB
/
FileEnumeratorTest.cpp
File metadata and controls
105 lines (83 loc) · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#if !defined(CMDLINEUTIL_TEST_MODE)
#define CMDLINEUTIL_TEST_MODE
#endif
#include "FileEnumerator.h"
#include "PathDeleter.h"
#include "Utils.h"
#include <boost/range/algorithm_ext/for_each.hpp>
#include <boost/range/algorithm/sort.hpp>
#include <boost/test/unit_test.hpp>
namespace b = ::boost;
namespace fs = ::std::filesystem;
BOOST_AUTO_TEST_SUITE(FileEnumeratorTestSuite)
static char const*const k_matchList1[] = { "./FileEnumerator.cpp" };
static char const*const k_matchList2[] = { "./FileEnumerator.cpp", "./FileEnumeratorTest.cpp" };
static char const*const k_matchList3[] = { "./FileEnumerator.cpp", "./FileEnumerator.h",
"./TempTestDir/FileEnumerator.cpp", "./TempTestDir/FileEnumerator.h" };
static char const*const k_matchList4[] = { "./FileEnumerator.cpp", "./FileEnumerator.h",
"./FileEnumeratorTest.cpp", "./TempTestDir/FileEnumerator.cpp",
"./TempTestDir/FileEnumerator.h", "./TempTestDir/FileEnumeratorTest.cpp" };
static void copyFile(const fs::path& fromDir, const fs::path& toDir, const char* pFileName)
{
copy_file(fromDir / pFileName, toDir / pFileName);
}
static void checkEqual(char const* tcPath, const fs::path& appPath)
{
BOOST_CHECK_EQUAL(tcPath, appPath.generic_string());
}
BOOST_AUTO_TEST_CASE(ExpandWildCardTest)
{
// Setup:
fs::path cwDir(".");
fs::path testDir = cwDir / "TempTestDir";
PathDeleter testPathDeleter(testDir);
create_directories(testDir);
copyFile(cwDir, testDir, "FileEnumerator.cpp");
copyFile(cwDir, testDir, "FileEnumerator.h");
copyFile(cwDir, testDir, "FileEnumeratorTest.cpp");
// Non-recursive, non-wildcard:
{
FileEnumerator fe;
fe.insert("FileEnumerator.cpp");
FileEnumerator::PathList fileList;
fe.enumerateFiles([&fileList] (const fs::path& path) { fileList.push_back(path); });
BOOST_CHECK_EQUAL(arrayLen(k_matchList1), fileList.size());
b::sort(fileList);
b::for_each(b::make_iterator_range(k_matchList1), fileList, checkEqual);
}
// Non-recursive, wildcard:
{
FileEnumerator fe;
fe.insert("FileEn*.cpp");
FileEnumerator::PathList fileList;
fe.enumerateFiles([&fileList] (const fs::path& path) { fileList.push_back(path); });
BOOST_CHECK_EQUAL(arrayLen(k_matchList2), fileList.size());
b::sort(fileList);
b::for_each(b::make_iterator_range(k_matchList2), fileList, checkEqual);
}
// Recursive, non-wildcard:
{
FileEnumerator fe;
fe.setRecursive();
fe.insert("FileEnumerator.cpp");
fe.insert("FileEnumerator.h");
FileEnumerator::PathList fileList;
fe.enumerateFiles([&fileList] (const fs::path& path) { fileList.push_back(path); });
BOOST_CHECK_EQUAL(arrayLen(k_matchList3), fileList.size());
b::sort(fileList);
b::for_each(b::make_iterator_range(k_matchList3), fileList, checkEqual);
}
// Recursive, wildcard:
{
FileEnumerator fe;
fe.setRecursive();
fe.insert("FileEn*.cpp");
fe.insert("FileEn*.h");
FileEnumerator::PathList fileList;
fe.enumerateFiles([&fileList] (const fs::path& path) { fileList.push_back(path); });
BOOST_CHECK_EQUAL(arrayLen(k_matchList4), fileList.size());
b::sort(fileList);
b::for_each(b::make_iterator_range(k_matchList4), fileList, checkEqual);
}
}
BOOST_AUTO_TEST_SUITE_END()