winget-cli

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

AppFileTests.cpp (5396B)


      1 // Copyright (c) Microsoft Corporation.
      2 // Licensed under the MIT License.
      3 
      4 #include "ContentUtil.h"
      5 #include "sfsclient/AppFile.h"
      6 
      7 #include <catch2/catch_test_macros.hpp>
      8 
      9 #define TEST(...) TEST_CASE("[AppFileTests] " __VA_ARGS__)
     10 #define TEST_SCENARIO(...) TEST_CASE("[AppFileTests] 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<AppFile> GetAppFile(const std::string& fileId,
     19                                     const std::string& url,
     20                                     uint64_t sizeInBytes,
     21                                     const std::unordered_map<HashType, std::string>& hashes,
     22                                     std::vector<Architecture> architectures,
     23                                     std::vector<std::string> platformApplicabilityForPackage,
     24                                     std::string fileMoniker)
     25 {
     26     std::unique_ptr<AppFile> file;
     27     REQUIRE(AppFile::Make(fileId,
     28                           url,
     29                           sizeInBytes,
     30                           hashes,
     31                           architectures,
     32                           platformApplicabilityForPackage,
     33                           fileMoniker,
     34                           file) == Result::Success);
     35     REQUIRE(file != nullptr);
     36     return file;
     37 }
     38 } // namespace
     39 
     40 TEST("Testing AppFile::Make()")
     41 {
     42     const std::string fileId{"myFileId"};
     43     const std::string url{"myUrl"};
     44     const uint64_t sizeInBytes{1234};
     45     const std::unordered_map<HashType, std::string> hashes{{HashType::Sha1, "mySha1"}, {HashType::Sha256, "mySha256"}};
     46     const std::vector<Architecture> architectures{Architecture::Amd64};
     47     const std::vector<std::string> platformApplicabilityForPackage{"myPlatformApplicabilityForPackage"};
     48     const std::string fileMoniker{"myFileMoniker"};
     49 
     50     const std::unique_ptr<AppFile> file =
     51         GetAppFile(fileId, url, sizeInBytes, hashes, architectures, platformApplicabilityForPackage, fileMoniker);
     52 
     53     CHECK(fileId == file->GetFileId());
     54     CHECK(url == file->GetUrl());
     55     CHECK(sizeInBytes == file->GetSizeInBytes());
     56     CHECK(hashes == file->GetHashes());
     57 
     58     SECTION("Testing File equality operators")
     59     {
     60         SECTION("Equal")
     61         {
     62             auto CompareFileEqual = [&file](const std::unique_ptr<AppFile>& sameFile) {
     63                 REQUIRE((*file == *sameFile));
     64                 REQUIRE_FALSE((*file != *sameFile));
     65             };
     66 
     67             CompareFileEqual(GetAppFile(fileId,
     68                                         url,
     69                                         sizeInBytes,
     70                                         hashes,
     71                                         architectures,
     72                                         platformApplicabilityForPackage,
     73                                         fileMoniker));
     74         }
     75 
     76         SECTION("Not equal")
     77         {
     78             auto CompareFileNotEqual = [&file](const std::unique_ptr<AppFile>& otherFile) {
     79                 REQUIRE((*file != *otherFile));
     80                 REQUIRE_FALSE((*file == *otherFile));
     81             };
     82 
     83             CompareFileNotEqual(
     84                 GetAppFile("", url, sizeInBytes, hashes, architectures, platformApplicabilityForPackage, fileMoniker));
     85             CompareFileNotEqual(GetAppFile(fileId,
     86                                            "",
     87                                            sizeInBytes,
     88                                            hashes,
     89                                            architectures,
     90                                            platformApplicabilityForPackage,
     91                                            fileMoniker));
     92             CompareFileNotEqual(
     93                 GetAppFile(fileId, url, 0, hashes, architectures, platformApplicabilityForPackage, fileMoniker));
     94             CompareFileNotEqual(
     95                 GetAppFile(fileId, url, sizeInBytes, {}, architectures, platformApplicabilityForPackage, fileMoniker));
     96             CompareFileNotEqual(
     97                 GetAppFile(fileId, url, sizeInBytes, hashes, {}, platformApplicabilityForPackage, fileMoniker));
     98             CompareFileNotEqual(GetAppFile(fileId, url, sizeInBytes, hashes, architectures, {}, fileMoniker));
     99             CompareFileNotEqual(GetAppFile(fileId, url, sizeInBytes, hashes, {}, platformApplicabilityForPackage, {}));
    100             CompareFileNotEqual(GetAppFile("", "", 0, {}, architectures, platformApplicabilityForPackage, fileMoniker));
    101             CompareFileNotEqual(GetAppFile("MYFILEID",
    102                                            url,
    103                                            sizeInBytes,
    104                                            hashes,
    105                                            architectures,
    106                                            platformApplicabilityForPackage,
    107                                            fileMoniker));
    108             CompareFileNotEqual(GetAppFile(fileId,
    109                                            "MYURL",
    110                                            sizeInBytes,
    111                                            hashes,
    112                                            architectures,
    113                                            platformApplicabilityForPackage,
    114                                            fileMoniker));
    115         }
    116     }
    117 }