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>> 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;
|
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);
|
return ((result != _fileList.end()) ? *result : nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
CSiaFileCollection CSiaApi::_CSiaFileTree::QueryFiles(String query) const
|
CSiaFileCollection CSiaApi::_CSiaFileTree::Query(String query) const
|
||||||
{
|
{
|
||||||
query = CSiaApi::FormatToSiaPath(query);
|
query = CSiaApi::FormatToSiaPath(query);
|
||||||
ReplaceStringInPlace(ReplaceStringInPlace(ReplaceStringInPlace(query, L".", L"\\."), L"*", L".+"), L"?", L".?");
|
ReplaceStringInPlace(ReplaceStringInPlace(ReplaceStringInPlace(query, L".", L"\\."), L"*", L".+"), L"?", L".?");
|
||||||
|
@@ -325,7 +325,7 @@ private:
|
|||||||
if (siaFileTree)
|
if (siaFileTree)
|
||||||
{
|
{
|
||||||
String siaQuery = CSiaApi::FormatToSiaPath(PathSkipRoot(FileName));
|
String siaQuery = CSiaApi::FormatToSiaPath(PathSkipRoot(FileName));
|
||||||
auto fileList = siaFileTree->QueryFiles(siaQuery);
|
auto fileList = siaFileTree->Query(siaQuery);
|
||||||
for (auto& file : fileList)
|
for (auto& file : fileList)
|
||||||
{
|
{
|
||||||
WIN32_FIND_DATA fd = { 0 };
|
WIN32_FIND_DATA fd = { 0 };
|
||||||
|
@@ -20,14 +20,14 @@ namespace UnitTests
|
|||||||
CSiaCurl siaCurl;
|
CSiaCurl siaCurl;
|
||||||
siaCurl.SetHostConfig(_hostConfig);
|
siaCurl.SetHostConfig(_hostConfig);
|
||||||
|
|
||||||
json j =
|
json j =
|
||||||
{
|
{
|
||||||
{"files",
|
{ "files",
|
||||||
{
|
{
|
||||||
{ { "siapath", "root/sub1/file1.txt" },{ "filesize", 1 },{ "available", true },{ "renewing", true },{ "redundancy", 5 },{ "uploadprogress", 100 },{ "expiration", 60000 } },
|
{ { "siapath", "root/sub1/file1.txt" },{ "filesize", 1 },{ "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/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 } }
|
{ { "siapath", "root/sub1/file3.txt" },{ "filesize", 3 },{ "available", true },{ "renewing", true },{ "redundancy", 5 },{ "uploadprogress", 100 },{ "expiration", 60000 } }
|
||||||
}}
|
} }
|
||||||
};
|
};
|
||||||
|
|
||||||
CSiaFileTree ft(siaCurl);
|
CSiaFileTree ft(siaCurl);
|
||||||
@@ -43,6 +43,45 @@ namespace UnitTests
|
|||||||
Assert::AreEqual(static_cast<std::uint64_t>(2), fileList[1]->GetFileSize());
|
Assert::AreEqual(static_cast<std::uint64_t>(2), fileList[1]->GetFileSize());
|
||||||
Assert::AreEqual(static_cast<std::uint64_t>(3), fileList[2]->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);
|
DEFINE_DAEMON(SiaApiFileTree);
|
||||||
|
Reference in New Issue
Block a user