CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
152 lines
4.9 KiB
C++
152 lines
4.9 KiB
C++
// Copyright © Advanced Micro Devices, Inc., or its affiliates.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
#include <hipdnn_data_sdk/utilities/VersionUtils.hpp>
|
|
#include <random>
|
|
|
|
namespace hipdnn_data_sdk::utilities
|
|
{
|
|
|
|
TEST(TestVersionUtils, VersionStringConstructorValidInput)
|
|
{
|
|
Version version;
|
|
const std::vector<std::string> validVersions{"1.12.53", "1.12.53.aw939d94"};
|
|
|
|
for(const auto& versionStr : validVersions)
|
|
{
|
|
ASSERT_NO_THROW(version = Version{versionStr});
|
|
EXPECT_EQ(version, Version(1, 12, 53)) << "Version string = " << versionStr;
|
|
}
|
|
}
|
|
|
|
TEST(TestVersionUtils, VersionTupleInvalidInput)
|
|
{
|
|
Version version;
|
|
const std::vector<std::string> invalidVersions{"1.12", "1.12.a53", "1", "", "Str1.12.53"};
|
|
|
|
for(const auto& versionStr : invalidVersions)
|
|
{
|
|
EXPECT_THROW(version = Version(versionStr), std::invalid_argument)
|
|
<< "Version string = " << versionStr;
|
|
}
|
|
}
|
|
|
|
namespace
|
|
{
|
|
std::vector<Version> randomVersions(size_t numberGenerated, unsigned int seed = 0)
|
|
{
|
|
std::mt19937 generator(seed);
|
|
std::uniform_int_distribution<int> distribution(0, 100);
|
|
std::vector<Version> versions;
|
|
versions.reserve(numberGenerated);
|
|
|
|
for(size_t i = 0; i < numberGenerated; i++)
|
|
{
|
|
versions.emplace_back(
|
|
distribution(generator), distribution(generator), distribution(generator));
|
|
}
|
|
|
|
return versions;
|
|
}
|
|
|
|
std::vector<std::pair<Version, Version>> randomVersionCartesianProduct(size_t numberGenerated,
|
|
unsigned int seed = 0)
|
|
{
|
|
auto versions = randomVersions(15, seed);
|
|
std::vector<std::pair<Version, Version>> versionCartesianProducts;
|
|
versionCartesianProducts.reserve(numberGenerated * numberGenerated);
|
|
|
|
for(const auto& v1 : versions)
|
|
{
|
|
for(const auto& v2 : versions)
|
|
{
|
|
versionCartesianProducts.emplace_back(v1, v2);
|
|
}
|
|
}
|
|
|
|
return versionCartesianProducts;
|
|
}
|
|
} // namespace
|
|
|
|
TEST(TestVersionUtils, VersionTupleEquals)
|
|
{
|
|
auto versionProduct = randomVersionCartesianProduct(8);
|
|
|
|
for(auto [version0, version1] : versionProduct)
|
|
{
|
|
auto tuple0 = std::make_tuple(version0.major, version0.minor, version0.patch);
|
|
auto tuple1 = std::make_tuple(version1.major, version1.minor, version1.patch);
|
|
EXPECT_EQ(version0 == version1, tuple0 == tuple1)
|
|
<< "Version 0 = " << version0.str() << " Version 1 = " << version1.str();
|
|
}
|
|
}
|
|
|
|
TEST(TestVersionUtils, VersionTupleNotEqual)
|
|
{
|
|
auto versionProduct = randomVersionCartesianProduct(8);
|
|
|
|
for(auto [version0, version1] : versionProduct)
|
|
{
|
|
auto tuple0 = std::make_tuple(version0.major, version0.minor, version0.patch);
|
|
auto tuple1 = std::make_tuple(version1.major, version1.minor, version1.patch);
|
|
EXPECT_EQ(version0 != version1, tuple0 != tuple1)
|
|
<< "Version 0 = " << version0.str() << " Version 1 = " << version1.str();
|
|
}
|
|
}
|
|
|
|
TEST(TestVersionUtils, VersionTupleLessThan)
|
|
{
|
|
auto versionProduct = randomVersionCartesianProduct(8);
|
|
|
|
for(auto [version0, version1] : versionProduct)
|
|
{
|
|
auto tuple0 = std::make_tuple(version0.major, version0.minor, version0.patch);
|
|
auto tuple1 = std::make_tuple(version1.major, version1.minor, version1.patch);
|
|
EXPECT_EQ(version0 < version1, tuple0 < tuple1)
|
|
<< "Version 0 = " << version0.str() << " Version 1 = " << version1.str();
|
|
}
|
|
}
|
|
|
|
TEST(TestVersionUtils, VersionTupleLessThanOrEquals)
|
|
{
|
|
auto versionProduct = randomVersionCartesianProduct(8);
|
|
|
|
for(auto [version0, version1] : versionProduct)
|
|
{
|
|
auto tuple0 = std::make_tuple(version0.major, version0.minor, version0.patch);
|
|
auto tuple1 = std::make_tuple(version1.major, version1.minor, version1.patch);
|
|
EXPECT_EQ(version0 <= version1, tuple0 <= tuple1)
|
|
<< "Version 0 = " << version0.str() << " Version 1 = " << version1.str();
|
|
}
|
|
}
|
|
|
|
TEST(TestVersionUtils, VersionTupleGreaterThan)
|
|
{
|
|
auto versionProduct = randomVersionCartesianProduct(8);
|
|
|
|
for(auto [version0, version1] : versionProduct)
|
|
{
|
|
auto tuple0 = std::make_tuple(version0.major, version0.minor, version0.patch);
|
|
auto tuple1 = std::make_tuple(version1.major, version1.minor, version1.patch);
|
|
EXPECT_EQ(version0 > version1, tuple0 > tuple1)
|
|
<< "Version 0 = " << version0.str() << " Version 1 = " << version1.str();
|
|
}
|
|
}
|
|
|
|
TEST(TestVersionUtils, VersionTupleGreaterThanOrEquals)
|
|
{
|
|
auto versionProduct = randomVersionCartesianProduct(8);
|
|
|
|
for(auto [version0, version1] : versionProduct)
|
|
{
|
|
auto tuple0 = std::make_tuple(version0.major, version0.minor, version0.patch);
|
|
auto tuple1 = std::make_tuple(version1.major, version1.minor, version1.patch);
|
|
EXPECT_EQ(version0 >= version1, tuple0 >= tuple1)
|
|
<< "Version 0 = " << version0.str() << " Version 1 = " << version1.str();
|
|
}
|
|
}
|
|
|
|
}
|