Skip to content

Commit a8247dd

Browse files
committed
Test unsigned literals
1 parent 7359f1e commit a8247dd

File tree

4 files changed

+57
-0
lines changed

4 files changed

+57
-0
lines changed

include/boost/safe_numbers.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@
88
#include <boost/safe_numbers/unsigned_integers.hpp>
99
#include <boost/safe_numbers/iostream.hpp>
1010
#include <boost/safe_numbers/limits.hpp>
11+
#include <boost/safe_numbers/literals.hpp>
1112

1213
#endif //BOOST_SAFENUMBERS_HPP

modules/Jamfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ run ../test/quick.cpp safe_numbers : : : <dependency>safe_numbers ;
3434
run ../test/test_construct_unsigned_type.cpp safe_numbers : : : <dependency>safe_numbers ;
3535
run ../test/test_limits.cpp safe_numbers : : : <dependency>safe_numbers ;
3636
run ../test/test_unsigned_addition.cpp safe_numbers : : : <dependency>safe_numbers ;
37+
run ../test/test_unsigned_literals.cpp safe_numbers : : : <dependency>safe_numbers ;
3738

3839
run ../test/compile_integer_type_properties.cpp safe_numbers : : : <dependency>safe_numbers ;
3940

test/Jamfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ run test_limits.cpp ;
5959
run limits_link_1.cpp limits_link_2.cpp limits_link_3.cpp ;
6060
compile-fail compile_fail_unsigned_construction_from_bool.cpp ;
6161
run test_unsigned_streaming.cpp ;
62+
run test_unsigned_literals.cpp ;
6263

6364
# Compile Tests
6465
compile compile_tests/compile_test_unsigned_integers.cpp ;

test/test_unsigned_literals.cpp

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// Copyright 2025 Matt Borland
2+
// Distributed under the Boost Software License, Version 1.0.
3+
// https://www.boost.org/LICENSE_1_0.txt
4+
5+
#include <boost/safe_numbers.hpp>
6+
#include <boost/core/lightweight_test.hpp>
7+
8+
using namespace boost::safe_numbers;
9+
using namespace boost::safe_numbers::literals;
10+
11+
template <typename T>
12+
void test();
13+
14+
template <>
15+
void test<u8>()
16+
{
17+
const auto good_value {42_u8};
18+
BOOST_TEST_EQ(good_value, u8{42u});
19+
BOOST_TEST_THROWS(18446744073709551615_u8, std::overflow_error);
20+
}
21+
22+
template <>
23+
void test<u16>()
24+
{
25+
const auto good_value {42_u16};
26+
BOOST_TEST_EQ(good_value, u16{42u});
27+
BOOST_TEST_THROWS(18446744073709551615_u16, std::overflow_error);
28+
}
29+
30+
template <>
31+
void test<u32>()
32+
{
33+
const auto good_value {42_u32};
34+
BOOST_TEST_EQ(good_value, u32{42u});
35+
BOOST_TEST_THROWS(18446744073709551615_u32, std::overflow_error);
36+
}
37+
38+
template <>
39+
void test<u64>()
40+
{
41+
const auto good_value {42_u64};
42+
BOOST_TEST_EQ(good_value, u64{42u});
43+
BOOST_TEST_NO_THROW(BOOST_TEST_EQ(18446744073709551615_u64, u64{18446744073709551615ULL}));
44+
}
45+
46+
int main()
47+
{
48+
test<u8>();
49+
test<u16>();
50+
test<u32>();
51+
test<u64>();
52+
53+
return boost::report_errors();
54+
}

0 commit comments

Comments
 (0)