1
0

Test file tree query

This commit is contained in:
Scott E. Graves
2017-02-14 17:42:33 -06:00
parent 166d823434
commit a65b79d03a
4 changed files with 45 additions and 6 deletions

View File

@@ -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;

View File

@@ -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".?");

View File

@@ -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 };

View File

@@ -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);