basedOpinionated utility library |
git clone git://git.dimitrijedobrota.com/based.git |
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING |
literals_test.cpp (1862B)
0 #define CATCH_CONFIG_RUNTIME_STATIC_REQUIRE
2 #include "based/integral/literals.hpp"
4 #include <catch2/catch_test_macros.hpp>
6 #include "based/concept/is_castable.hpp"
8 using namespace based::literals; // NOLINT(*namespace*)
10 using based::trait::IsCastableTo;
12 TEST_CASE("unsigned", "[integral/literals]")
13 {
14 // clang-format off
15 STATIC_REQUIRE(IsCastableTo<decltype(0_u), based::U8>);
16 STATIC_REQUIRE(IsCastableTo<decltype(255_u), based::U8>);
17 STATIC_REQUIRE(IsCastableTo<decltype(256_u), based::U16>);
18 STATIC_REQUIRE(IsCastableTo<decltype(65535_u), based::U16>);
19 STATIC_REQUIRE(IsCastableTo<decltype(65536_u), based::U32>);
20 STATIC_REQUIRE(IsCastableTo<decltype(4294967295_u), based::U32>);
21 STATIC_REQUIRE(IsCastableTo<decltype(4294967296_u), based::U64>);
22 STATIC_REQUIRE(IsCastableTo<decltype(18446744073709551615_u), based::U64>);
23 // clang-format on
24 }
26 TEST_CASE("signed", "[integral/literals]")
27 {
28 // clang-format off
29 STATIC_REQUIRE(IsCastableTo<decltype(0_i), based::I8>);
30 STATIC_REQUIRE(IsCastableTo<decltype(127_i), based::I8>);
31 STATIC_REQUIRE(IsCastableTo<decltype(128_i), based::I16>);
32 STATIC_REQUIRE(IsCastableTo<decltype(32767_i), based::I16>);
33 STATIC_REQUIRE(IsCastableTo<decltype(2147483647_i), based::I32>);
34 STATIC_REQUIRE(IsCastableTo<decltype(2147483648_i), based::I64>);
35 STATIC_REQUIRE(IsCastableTo<decltype(9223372036854775807_i), based::I64>);
36 // clang-format
38 // clang-format off
39 STATIC_REQUIRE(IsCastableTo<decltype(-127_i), based::I8>);
40 STATIC_REQUIRE(IsCastableTo<decltype(-128_i), based::I16>);
41 STATIC_REQUIRE(IsCastableTo<decltype(-32767_i), based::I16>);
42 STATIC_REQUIRE(IsCastableTo<decltype(-2147483647_i), based::I32>);
43 STATIC_REQUIRE(IsCastableTo<decltype(-2147483648_i), based::I64>);
44 STATIC_REQUIRE(IsCastableTo<decltype(-9223372036854775807_i), based::I64>);
45 // clang-format on
46 }