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