Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-27 07:24:24

0001 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
0008 
0009 // Project include(s).
0010 #include "detray/utils/invalid_values.hpp"
0011 
0012 // Google Test include(s).
0013 #include <gtest/gtest.h>
0014 
0015 // System include(s)
0016 #include <cstdint>
0017 #include <limits>
0018 
0019 using namespace detray;
0020 
0021 // Test sort functions
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 }