winget-cli

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

PackageVersionDataManifest.cpp (4072B)


      1 // Copyright (c) Microsoft Corporation.
      2 // Licensed under the MIT License.
      3 #include "pch.h"
      4 #include "TestCommon.h"
      5 #include <winget/PackageVersionDataManifest.h>
      6 
      7 using namespace TestCommon;
      8 using namespace AppInstaller;
      9 using namespace AppInstaller::Manifest;
     10 using namespace AppInstaller::Utility;
     11 
     12 void RequireVersionDataEqual(const PackageVersionDataManifest::VersionData& first, const PackageVersionDataManifest::VersionData& second)
     13 {
     14     REQUIRE(first.Version == second.Version);
     15     REQUIRE(first.ArpMinVersion == second.ArpMinVersion);
     16     REQUIRE(first.ArpMaxVersion == second.ArpMaxVersion);
     17     REQUIRE(first.ManifestRelativePath == second.ManifestRelativePath);
     18     REQUIRE(first.ManifestHash == second.ManifestHash);
     19 }
     20 
     21 TEST_CASE("PackageVersionDataManifest_Empty", "[PackageVersionDataManifest]")
     22 {
     23     PackageVersionDataManifest original;
     24 
     25     PackageVersionDataManifest copy;
     26     copy.Deserialize(original.Serialize());
     27 
     28     REQUIRE(original.Versions().empty());
     29     REQUIRE(copy.Versions().empty());
     30 }
     31 
     32 TEST_CASE("PackageVersionDataManifest_Single_Simple", "[PackageVersionDataManifest]")
     33 {
     34     PackageVersionDataManifest original;
     35     original.AddVersion({ VersionAndChannel{ Version{ "1.0" }, Channel{} }, {}, {}, "path", "hash" });
     36 
     37     PackageVersionDataManifest copy;
     38     copy.Deserialize(original.Serialize());
     39 
     40     REQUIRE(original.Versions().size() == 1);
     41     REQUIRE(copy.Versions().size() == 1);
     42 
     43     RequireVersionDataEqual(copy.Versions()[0], original.Versions()[0]);
     44 }
     45 
     46 TEST_CASE("PackageVersionDataManifest_Single_Complete", "[PackageVersionDataManifest]")
     47 {
     48     PackageVersionDataManifest original;
     49     original.AddVersion({ VersionAndChannel{ Version{ "1.0" }, Channel{} }, ".99", "1.01", "path", "hash"});
     50 
     51     PackageVersionDataManifest copy;
     52     copy.Deserialize(original.Serialize());
     53 
     54     REQUIRE(original.Versions().size() == 1);
     55     REQUIRE(copy.Versions().size() == 1);
     56 
     57     RequireVersionDataEqual(copy.Versions()[0], original.Versions()[0]);
     58 }
     59 
     60 TEST_CASE("PackageVersionDataManifest_Multiple", "[PackageVersionDataManifest]")
     61 {
     62     PackageVersionDataManifest original;
     63     original.AddVersion({ VersionAndChannel{ Version{ "1.0" }, Channel{} }, ".99", "1.01", "path", "hash" });
     64     original.AddVersion({ VersionAndChannel{ Version{ "1.1" }, Channel{} }, "1.99", "2.01", "path2", "hash2" });
     65     original.AddVersion({ VersionAndChannel{ Version{ "1.2" }, Channel{} }, {}, {}, "path2", "hash2" });
     66     original.AddVersion({ VersionAndChannel{ Version{ "2.0" }, Channel{} }, "3.99", "15.01", "path4", "hash4" });
     67 
     68     PackageVersionDataManifest copy;
     69     copy.Deserialize(original.Serialize());
     70 
     71     REQUIRE(original.Versions().size() == copy.Versions().size());
     72 
     73     for (size_t i = 0; i < original.Versions().size(); ++i)
     74     {
     75         INFO(i);
     76         RequireVersionDataEqual(copy.Versions()[i], original.Versions()[i]);
     77     }
     78 }
     79 
     80 TEST_CASE("PackageVersionDataManifest_CompressionRoundTrip", "[PackageVersionDataManifest]")
     81 {
     82     PackageVersionDataManifest original;
     83     original.AddVersion({ VersionAndChannel{ Version{ "1.0" }, Channel{} }, ".99", "1.01", "path", "hash" });
     84     original.AddVersion({ VersionAndChannel{ Version{ "1.1" }, Channel{} }, "1.99", "2.01", "path2", "hash2" });
     85     original.AddVersion({ VersionAndChannel{ Version{ "1.2" }, Channel{} }, {}, {}, "path2", "hash2" });
     86     original.AddVersion({ VersionAndChannel{ Version{ "2.0" }, Channel{} }, "3.99", "15.01", "path4", "hash4" });
     87 
     88     std::string serialized = original.Serialize();
     89     auto compressed = PackageVersionDataManifest::CreateCompressor().Compress(serialized);
     90 
     91     auto decompressed = PackageVersionDataManifest::CreateDecompressor().Decompress(compressed);
     92 
     93     PackageVersionDataManifest copy;
     94     copy.Deserialize(decompressed);
     95 
     96     REQUIRE(original.Versions().size() == copy.Versions().size());
     97 
     98     for (size_t i = 0; i < original.Versions().size(); ++i)
     99     {
    100         INFO(i);
    101         RequireVersionDataEqual(copy.Versions()[i], original.Versions()[i]);
    102     }
    103 }