winget-cli

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

FileTests.cpp (2571B)


      1 // Copyright (c) Microsoft Corporation.
      2 // Licensed under the MIT License.
      3 
      4 #include "ContentUtil.h"
      5 #include "sfsclient/File.h"
      6 
      7 #include <catch2/catch_test_macros.hpp>
      8 
      9 #define TEST(...) TEST_CASE("[FileTests] " __VA_ARGS__)
     10 #define TEST_SCENARIO(...) TEST_CASE("[FileTests] Scenario: " __VA_ARGS__)
     11 
     12 using namespace SFS;
     13 using namespace SFS::details;
     14 using namespace SFS::details::contentutil;
     15 
     16 namespace
     17 {
     18 std::unique_ptr<File> GetFile(const std::string& fileId,
     19                               const std::string& url,
     20                               uint64_t sizeInBytes,
     21                               const std::unordered_map<HashType, std::string>& hashes)
     22 {
     23     std::unique_ptr<File> file;
     24     REQUIRE(File::Make(fileId, url, sizeInBytes, hashes, file) == Result::Success);
     25     REQUIRE(file != nullptr);
     26     return file;
     27 };
     28 } // namespace
     29 
     30 TEST("Testing File::Make()")
     31 {
     32     const std::string fileId{"myFileId"};
     33     const std::string url{"myUrl"};
     34     const uint64_t sizeInBytes{1234};
     35     const std::unordered_map<HashType, std::string> hashes{{HashType::Sha1, "mySha1"}, {HashType::Sha256, "mySha256"}};
     36 
     37     const std::unique_ptr<File> file = GetFile(fileId, url, sizeInBytes, hashes);
     38 
     39     CHECK(fileId == file->GetFileId());
     40     CHECK(url == file->GetUrl());
     41     CHECK(sizeInBytes == file->GetSizeInBytes());
     42     CHECK(hashes == file->GetHashes());
     43 
     44     SECTION("Testing File equality operators")
     45     {
     46         SECTION("Equal")
     47         {
     48             auto CompareFileEqual = [&file](const std::unique_ptr<File>& sameFile) {
     49                 REQUIRE((*file == *sameFile));
     50                 REQUIRE_FALSE((*file != *sameFile));
     51             };
     52 
     53             CompareFileEqual(GetFile(fileId, url, sizeInBytes, hashes));
     54         }
     55 
     56         SECTION("Not equal")
     57         {
     58             auto CompareFileNotEqual = [&file](const std::unique_ptr<File>& otherFile) {
     59                 REQUIRE((*file != *otherFile));
     60                 REQUIRE_FALSE((*file == *otherFile));
     61             };
     62 
     63             CompareFileNotEqual(GetFile("", url, sizeInBytes, hashes));
     64             CompareFileNotEqual(GetFile(fileId, "", sizeInBytes, hashes));
     65             CompareFileNotEqual(GetFile(fileId, url, 0, hashes));
     66             CompareFileNotEqual(GetFile(fileId, url, sizeInBytes, {}));
     67             CompareFileNotEqual(GetFile("", "", 0, {}));
     68             CompareFileNotEqual(GetFile("MYFILEID", url, sizeInBytes, hashes));
     69             CompareFileNotEqual(GetFile(fileId, "MYURL", sizeInBytes, hashes));
     70         }
     71     }
     72 }