File indexing completed on 2026-05-27 07:24:24
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #include "detray/utils/invalid_values.hpp"
0011
0012
0013 #include <gtest/gtest.h>
0014
0015
0016 #include <cstdint>
0017 #include <limits>
0018
0019 using namespace detray;
0020
0021
0022 GTEST_TEST(detray_utils, invalid_values) {
0023 ASSERT_EQ(std::numeric_limits<int>::max(), detail::invalid_value<int>());
0024 ASSERT_EQ(std::numeric_limits<std::int_least8_t>::max(),
0025 detail::invalid_value<std::int_least8_t>());
0026 ASSERT_EQ(std::numeric_limits<std::int_least16_t>::max(),
0027 detail::invalid_value<std::int_least16_t>());
0028 ASSERT_EQ(std::numeric_limits<std::int_least32_t>::max(),
0029 detail::invalid_value<std::int_least32_t>());
0030 ASSERT_EQ(std::numeric_limits<std::int_least64_t>::max(),
0031 detail::invalid_value<std::int_least64_t>());
0032 ASSERT_EQ(std::numeric_limits<std::intmax_t>::max(),
0033 detail::invalid_value<std::intmax_t>());
0034
0035 ASSERT_EQ(std::numeric_limits<unsigned int>::max(),
0036 detail::invalid_value<unsigned int>());
0037 ASSERT_EQ(std::numeric_limits<std::size_t>::max(),
0038 detail::invalid_value<std::size_t>());
0039 ASSERT_EQ(std::numeric_limits<std::uint_least8_t>::max(),
0040 detail::invalid_value<std::uint_least8_t>());
0041 ASSERT_EQ(std::numeric_limits<std::uint_least16_t>::max(),
0042 detail::invalid_value<std::uint_least16_t>());
0043 ASSERT_EQ(std::numeric_limits<std::uint_least32_t>::max(),
0044 detail::invalid_value<std::uint_least32_t>());
0045 ASSERT_EQ(std::numeric_limits<std::uint_least64_t>::max(),
0046 detail::invalid_value<std::uint_least64_t>());
0047 ASSERT_EQ(std::numeric_limits<std::uintmax_t>::max(),
0048 detail::invalid_value<std::uintmax_t>());
0049
0050 ASSERT_EQ(std::numeric_limits<float>::max(), detail::invalid_value<float>());
0051 ASSERT_EQ(std::numeric_limits<double>::max(),
0052 detail::invalid_value<double>());
0053
0054 ASSERT_TRUE(detail::is_invalid_value(std::numeric_limits<int>::max()));
0055 ASSERT_TRUE(
0056 detail::is_invalid_value(std::numeric_limits<std::int_least8_t>::max()));
0057 ASSERT_TRUE(
0058 detail::is_invalid_value(std::numeric_limits<std::int_least16_t>::max()));
0059 ASSERT_TRUE(
0060 detail::is_invalid_value(std::numeric_limits<std::int_least32_t>::max()));
0061 ASSERT_TRUE(
0062 detail::is_invalid_value(std::numeric_limits<std::int_least64_t>::max()));
0063 ASSERT_TRUE(
0064 detail::is_invalid_value(std::numeric_limits<unsigned int>::max()));
0065 ASSERT_TRUE(
0066 detail::is_invalid_value(std::numeric_limits<std::size_t>::max()));
0067 ASSERT_TRUE(
0068 detail::is_invalid_value(std::numeric_limits<std::uint_least8_t>::max()));
0069 ASSERT_TRUE(detail::is_invalid_value(
0070 std::numeric_limits<std::uint_least16_t>::max()));
0071 ASSERT_TRUE(detail::is_invalid_value(
0072 std::numeric_limits<std::uint_least32_t>::max()));
0073 ASSERT_TRUE(detail::is_invalid_value(
0074 std::numeric_limits<std::uint_least64_t>::max()));
0075 ASSERT_TRUE(
0076 detail::is_invalid_value(std::numeric_limits<std::uintmax_t>::max()));
0077 ASSERT_TRUE(detail::is_invalid_value(std::numeric_limits<float>::max()));
0078 ASSERT_TRUE(detail::is_invalid_value(std::numeric_limits<double>::max()));
0079
0080 ASSERT_FALSE(detail::is_invalid_value(1));
0081 ASSERT_FALSE(detail::is_invalid_value(0));
0082 ASSERT_FALSE(detail::is_invalid_value(-1));
0083 ASSERT_FALSE(detail::is_invalid_value(1u));
0084 ASSERT_FALSE(detail::is_invalid_value(1ul));
0085 ASSERT_FALSE(detail::is_invalid_value(1.));
0086 ASSERT_FALSE(detail::is_invalid_value(1.f));
0087 }