1 // Copyright Louis Dionne 2013-2017 2 // Distributed under the Boost Software License, Version 1.0. 3 // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) 4 5 #include <boost/hana/assert.hpp> 6 #include <boost/hana/equal.hpp> 7 #include <boost/hana/integral_constant.hpp> 8 #include <boost/hana/less.hpp> 9 #include <boost/hana/negate.hpp> 10 11 #include <type_traits> 12 namespace hana = boost::hana; 13 using namespace hana::literals; 14 15 16 BOOST_HANA_CONSTANT_CHECK(0_c == hana::llong_c<0>); 17 BOOST_HANA_CONSTANT_CHECK(1_c == hana::llong_c<1>); 18 BOOST_HANA_CONSTANT_CHECK(12_c == hana::llong_c<12>); 19 BOOST_HANA_CONSTANT_CHECK(123_c == hana::llong_c<123>); 20 BOOST_HANA_CONSTANT_CHECK(1234567_c == hana::llong_c<1234567>); 21 BOOST_HANA_CONSTANT_CHECK(-34_c == hana::llong_c<-34>); 22 23 24 static_assert(std::is_same< 25 decltype(-1234_c)::value_type, 26 long long 27 >{}, ""); 28 static_assert(-1234_c == -1234ll, ""); 29 BOOST_HANA_CONSTANT_CHECK(-12_c < 0_c); 30 31 32 constexpr auto deadbeef = hana::llong_c<0xDEADBEEF>; 33 34 //hexadecimal 35 BOOST_HANA_CONSTANT_CHECK(deadbeef == 0xDEADBEEF_c); 36 BOOST_HANA_CONSTANT_CHECK(deadbeef == 0xDeAdBeEf_c); 37 BOOST_HANA_CONSTANT_CHECK(deadbeef == 0xdeadbeef_c); 38 39 //decimal 40 BOOST_HANA_CONSTANT_CHECK(deadbeef == hana::llong_c<3735928559>); // test the test 41 BOOST_HANA_CONSTANT_CHECK(deadbeef == 3735928559_c); 42 43 //binary 44 BOOST_HANA_CONSTANT_CHECK(deadbeef == hana::llong_c<0b11011110101011011011111011101111>); // test the test 45 BOOST_HANA_CONSTANT_CHECK(deadbeef == 0b11011110101011011011111011101111_c); 46 47 //octal 48 BOOST_HANA_CONSTANT_CHECK(deadbeef == hana::llong_c<033653337357>); // test the test 49 BOOST_HANA_CONSTANT_CHECK(deadbeef == 033653337357_c); 50 51 BOOST_HANA_CONSTANT_CHECK(0x0_c == hana::llong_c<0>); 52 BOOST_HANA_CONSTANT_CHECK(0b0_c == hana::llong_c<0>); 53 BOOST_HANA_CONSTANT_CHECK(00_c == hana::llong_c<0>); 54 55 BOOST_HANA_CONSTANT_CHECK(0x1_c == hana::llong_c<1>); 56 BOOST_HANA_CONSTANT_CHECK(0b1_c == hana::llong_c<1>); 57 BOOST_HANA_CONSTANT_CHECK(01_c == hana::llong_c<1>); 58 59 BOOST_HANA_CONSTANT_CHECK(-0x1_c == hana::llong_c<-1>); 60 BOOST_HANA_CONSTANT_CHECK(-0b1_c == hana::llong_c<-1>); 61 BOOST_HANA_CONSTANT_CHECK(-01_c == hana::llong_c<-1>); 62 63 BOOST_HANA_CONSTANT_CHECK(0x10_c == hana::llong_c<16>); 64 BOOST_HANA_CONSTANT_CHECK(0b10_c == hana::llong_c<2>); 65 BOOST_HANA_CONSTANT_CHECK(010_c == hana::llong_c<8>); 66 67 BOOST_HANA_CONSTANT_CHECK(-0x10_c == hana::llong_c<-16>); 68 BOOST_HANA_CONSTANT_CHECK(-0b10_c == hana::llong_c<-2>); 69 BOOST_HANA_CONSTANT_CHECK(-010_c == hana::llong_c<-8>); 70 71 // digit separators 72 static_assert(123'456 == 123456, ""); // test the test 73 BOOST_HANA_CONSTANT_CHECK(123'456_c == hana::llong_c<123456>); 74 main()75int main() { } 76