Test file tree query
This commit is contained in:
@@ -71,7 +71,7 @@ public:
|
||||
|
||||
std::vector<std::shared_ptr<_CSiaFile>> GetFileList() const;
|
||||
|
||||
std::vector<std::shared_ptr<_CSiaFile>> QueryFiles(String query) const;
|
||||
std::vector<std::shared_ptr<_CSiaFile>> Query(String query) const;
|
||||
|
||||
std::shared_ptr<_CSiaFile> GetFile(const String& siaPath) const;
|
||||
|
||||
|
@@ -61,7 +61,7 @@ CSiaFilePtr CSiaApi::_CSiaFileTree::GetFile(const String& siaPath) const
|
||||
return ((result != _fileList.end()) ? *result : nullptr);
|
||||
}
|
||||
|
||||
CSiaFileCollection CSiaApi::_CSiaFileTree::QueryFiles(String query) const
|
||||
CSiaFileCollection CSiaApi::_CSiaFileTree::Query(String query) const
|
||||
{
|
||||
query = CSiaApi::FormatToSiaPath(query);
|
||||
ReplaceStringInPlace(ReplaceStringInPlace(ReplaceStringInPlace(query, L".", L"\\."), L"*", L".+"), L"?", L".?");
|
||||
|
@@ -325,7 +325,7 @@ private:
|
||||
if (siaFileTree)
|
||||
{
|
||||
String siaQuery = CSiaApi::FormatToSiaPath(PathSkipRoot(FileName));
|
||||
auto fileList = siaFileTree->QueryFiles(siaQuery);
|
||||
auto fileList = siaFileTree->Query(siaQuery);
|
||||
for (auto& file : fileList)
|
||||
{
|
||||
WIN32_FIND_DATA fd = { 0 };
|
||||
|
@@ -43,6 +43,45 @@ namespace UnitTests
|
||||
Assert::AreEqual(static_cast<std::uint64_t>(2), fileList[1]->GetFileSize());
|
||||
Assert::AreEqual(static_cast<std::uint64_t>(3), fileList[2]->GetFileSize());
|
||||
}
|
||||
|
||||
TEST_METHOD(QueryByExtension)
|
||||
{
|
||||
CSiaCurl siaCurl;
|
||||
siaCurl.SetHostConfig(_hostConfig);
|
||||
|
||||
json j =
|
||||
{
|
||||
{ "files",
|
||||
{
|
||||
{ { "siapath", "root/sub1/file1.dat" },{ "filesize", 1 },{ "available", true },{ "renewing", true },{ "redundancy", 5 },{ "uploadprogress", 100 },{ "expiration", 60000 } },
|
||||
{ { "siapath", "root/sub1/file2.dat" },{ "filesize", 2 },{ "available", true },{ "renewing", true },{ "redundancy", 5 },{ "uploadprogress", 100 },{ "expiration", 60000 } },
|
||||
{ { "siapath", "root/sub1/file3.dat" },{ "filesize", 1 },{ "available", true },{ "renewing", true },{ "redundancy", 5 },{ "uploadprogress", 100 },{ "expiration", 60000 } },
|
||||
{ { "siapath", "root/sub1/file1.txt" },{ "filesize", 2 },{ "available", true },{ "renewing", true },{ "redundancy", 5 },{ "uploadprogress", 100 },{ "expiration", 60000 } },
|
||||
{ { "siapath", "root/sub1/file2.txt" },{ "filesize", 2 },{ "available", true },{ "renewing", true },{ "redundancy", 5 },{ "uploadprogress", 100 },{ "expiration", 60000 } },
|
||||
{ { "siapath", "root/sub1/file3.txt" },{ "filesize", 3 },{ "available", true },{ "renewing", true },{ "redundancy", 5 },{ "uploadprogress", 100 },{ "expiration", 60000 } }
|
||||
} }
|
||||
};
|
||||
|
||||
CSiaFileTree ft(siaCurl);
|
||||
ft.BuildTree(j);
|
||||
auto ret = ft.Query(L"root/sub1/*.txt");
|
||||
Assert::AreEqual((size_t)3, ret.size());
|
||||
|
||||
ret = ft.Query(L"root/sub1/*.txt1");
|
||||
Assert::AreEqual((size_t)0, ret.size());
|
||||
|
||||
ret = ft.Query(L"root/sub1/*.t?t");
|
||||
Assert::AreEqual((size_t)3, ret.size());
|
||||
|
||||
ret = ft.Query(L"root/*/*.t?t");
|
||||
Assert::AreEqual((size_t)3, ret.size());
|
||||
|
||||
ret = ft.Query(L"root/sub1/file?.*");
|
||||
Assert::AreEqual((size_t)6, ret.size());
|
||||
|
||||
ret = ft.Query(L"root/sub1/file*.??t");
|
||||
Assert::AreEqual((size_t)6, ret.size());
|
||||
}
|
||||
};
|
||||
|
||||
DEFINE_DAEMON(SiaApiFileTree);
|
||||
|
Reference in New Issue
Block a user