]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /*============================================================================= |
2 | Copyright (c) 2001-2011 Hartmut Kaiser | |
3 | ||
4 | Distributed under the Boost Software License, Version 1.0. (See accompanying | |
5 | file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
6 | ==============================================================================*/ | |
7 | #include <boost/detail/lightweight_test.hpp> | |
8 | ||
9 | #include <boost/spirit/include/support_argument.hpp> | |
10 | #include <boost/spirit/home/x3/binary.hpp> | |
11 | #include <boost/cstdint.hpp> | |
12 | #include "test.hpp" | |
13 | ||
14 | /////////////////////////////////////////////////////////////////////////////// | |
15 | int main() | |
16 | { | |
17 | using spirit_test::test_attr; | |
18 | using spirit_test::test; | |
19 | using spirit_test::binary_test; | |
20 | using spirit_test::binary_test_attr; | |
21 | ||
22 | using boost::spirit::x3::byte_; | |
23 | using boost::spirit::x3::word; | |
24 | using boost::spirit::x3::dword; | |
25 | using boost::spirit::x3::big_word; | |
26 | using boost::spirit::x3::big_dword; | |
27 | using boost::spirit::x3::little_word; | |
28 | using boost::spirit::x3::little_dword; | |
29 | #ifdef BOOST_HAS_LONG_LONG | |
30 | using boost::spirit::x3::qword; | |
31 | using boost::spirit::x3::big_qword; | |
32 | using boost::spirit::x3::little_qword; | |
33 | #endif | |
34 | // using boost::spirit::x3::bin_float; | |
35 | // using boost::spirit::x3::big_bin_float; | |
36 | // using boost::spirit::x3::little_bin_float; | |
37 | // using boost::spirit::x3::bin_double; | |
38 | // using boost::spirit::x3::big_bin_double; | |
39 | // using boost::spirit::x3::little_bin_double; | |
40 | ||
41 | boost::uint8_t uc; | |
42 | boost::uint16_t us; | |
43 | boost::uint32_t ui; | |
44 | #ifdef BOOST_HAS_LONG_LONG | |
45 | boost::uint64_t ul; | |
46 | #endif | |
11fdf7f2 TL |
47 | // float f; |
48 | // double d; | |
7c673cae FG |
49 | |
50 | { // test native endian binaries | |
51 | #ifdef BOOST_LITTLE_ENDIAN | |
52 | BOOST_TEST(test_attr("\x01", byte_, uc) && uc == 0x01); | |
53 | BOOST_TEST(test_attr("\x01\x02", word, us) && us == 0x0201); | |
54 | BOOST_TEST(test_attr("\x01\x02\x03\x04", dword, ui) && ui == 0x04030201); | |
55 | #ifdef BOOST_HAS_LONG_LONG | |
56 | BOOST_TEST(test_attr("\x01\x02\x03\x04\x05\x06\x07\x08", qword, ul) && | |
57 | ul == 0x0807060504030201LL); | |
58 | #endif | |
59 | // BOOST_TEST(binary_test_attr("\x00\x00\x80\x3f", 4, bin_float, f) && | |
60 | // f == 1.0f); | |
61 | // BOOST_TEST(binary_test_attr("\x00\x00\x00\x00\x00\x00\xf0\x3f", | |
62 | // 8, bin_double, d) && f == 1.0); | |
63 | #else | |
64 | BOOST_TEST(test_attr("\x01", byte_, uc) && uc == 0x01); | |
65 | BOOST_TEST(test_attr("\x01\x02", word, us) && us == 0x0102); | |
66 | BOOST_TEST(test_attr("\x01\x02\x03\x04", dword, ui) && ui == 0x01020304); | |
67 | #ifdef BOOST_HAS_LONG_LONG | |
68 | BOOST_TEST(test_attr("\x01\x02\x03\x04\x05\x06\x07\x08", qword, ul) && | |
69 | ul == 0x0102030405060708LL); | |
70 | #endif | |
71 | // BOOST_TEST(binary_test_attr("\x3f\x80\x00\x00", 4, bin_float, f) && | |
72 | // f == 1.0f); | |
73 | // BOOST_TEST(binary_test_attr("\x3f\xf0\x00\x00\x00\x00\x00\x00", | |
74 | // 8, bin_double, d) && f == 1.0); | |
75 | #endif | |
76 | } | |
77 | ||
78 | { // test native endian binaries | |
79 | #ifdef BOOST_LITTLE_ENDIAN | |
80 | BOOST_TEST(test("\x01", byte_(0x01))); | |
81 | BOOST_TEST(test("\x01\x02", word(0x0201))); | |
82 | BOOST_TEST(test("\x01\x02\x03\x04", dword(0x04030201))); | |
83 | #ifdef BOOST_HAS_LONG_LONG | |
84 | BOOST_TEST(test("\x01\x02\x03\x04\x05\x06\x07\x08", | |
85 | qword(0x0807060504030201LL))); | |
86 | #endif | |
87 | // BOOST_TEST(binary_test("\x00\x00\x80\x3f", 4, bin_float(1.0f))); | |
88 | // BOOST_TEST(binary_test("\x00\x00\x00\x00\x00\x00\xf0\x3f", 8, | |
89 | // bin_double(1.0))); | |
90 | #else | |
91 | BOOST_TEST(test("\x01", byte_(0x01))); | |
92 | BOOST_TEST(test("\x01\x02", word(0x0102))); | |
93 | BOOST_TEST(test("\x01\x02\x03\x04", dword(0x01020304))); | |
94 | #ifdef BOOST_HAS_LONG_LONG | |
95 | BOOST_TEST(test("\x01\x02\x03\x04\x05\x06\x07\x08", | |
96 | qword(0x0102030405060708LL))); | |
97 | #endif | |
98 | // BOOST_TEST(binary_test("\x3f\x80\x00\x00", 4, bin_float(1.0f))); | |
99 | // BOOST_TEST(binary_test("\x3f\x80\x00\x00\x00\x00\x00\x00", 8, | |
100 | // bin_double(1.0))); | |
101 | #endif | |
102 | } | |
103 | ||
104 | { // test big endian binaries | |
105 | BOOST_TEST(test_attr("\x01\x02", big_word, us) && us == 0x0102); | |
106 | BOOST_TEST(test_attr("\x01\x02\x03\x04", big_dword, ui) && ui == 0x01020304); | |
107 | #ifdef BOOST_HAS_LONG_LONG | |
108 | BOOST_TEST(test_attr("\x01\x02\x03\x04\x05\x06\x07\x08", big_qword, ul) | |
109 | && ul == 0x0102030405060708LL); | |
110 | #endif | |
111 | // BOOST_TEST(binary_test_attr("\x3f\x80\x00\x00", 4, big_bin_float, f) && | |
112 | // f == 1.0f); | |
113 | // BOOST_TEST(binary_test_attr("\x3f\xf0\x00\x00\x00\x00\x00\x00", | |
114 | // 8, big_bin_double, d) && f == 1.0); | |
115 | } | |
116 | ||
117 | { | |
118 | BOOST_TEST(test("\x01\x02", big_word(0x0102))); | |
119 | BOOST_TEST(test("\x01\x02\x03\x04", big_dword(0x01020304))); | |
120 | #ifdef BOOST_HAS_LONG_LONG | |
121 | BOOST_TEST(test("\x01\x02\x03\x04\x05\x06\x07\x08", | |
122 | big_qword(0x0102030405060708LL))); | |
123 | #endif | |
124 | // BOOST_TEST(binary_test("\x3f\x80\x00\x00", 4, big_bin_float(1.0f))); | |
125 | // BOOST_TEST(binary_test("\x3f\xf0\x00\x00\x00\x00\x00\x00", 8, | |
126 | // big_bin_double(1.0))); | |
127 | } | |
128 | ||
129 | { // test little endian binaries | |
130 | BOOST_TEST(test_attr("\x01\x02", little_word, us) && us == 0x0201); | |
131 | BOOST_TEST(test_attr("\x01\x02\x03\x04", little_dword, ui) && ui == 0x04030201); | |
132 | #ifdef BOOST_HAS_LONG_LONG | |
133 | BOOST_TEST(test_attr("\x01\x02\x03\x04\x05\x06\x07\x08", little_qword, ul) | |
134 | && ul == 0x0807060504030201LL); | |
135 | #endif | |
136 | // BOOST_TEST(binary_test_attr("\x00\x00\x80\x3f", 4, | |
137 | // little_bin_float, f) && f == 1.0f); | |
138 | // BOOST_TEST(binary_test_attr("\x00\x00\x00\x00\x00\x00\xf0\x3f", | |
139 | // 8, little_bin_double, d) && f == 1.0); | |
140 | } | |
141 | ||
142 | { | |
143 | BOOST_TEST(test("\x01\x02", little_word(0x0201))); | |
144 | BOOST_TEST(test("\x01\x02\x03\x04", little_dword(0x04030201))); | |
145 | #ifdef BOOST_HAS_LONG_LONG | |
146 | BOOST_TEST(test("\x01\x02\x03\x04\x05\x06\x07\x08", | |
147 | little_qword(0x0807060504030201LL))); | |
148 | #endif | |
149 | // BOOST_TEST(binary_test("\x00\x00\x80\x3f", 4, little_bin_float(1.0f))); | |
150 | // BOOST_TEST(binary_test("\x00\x00\x00\x00\x00\x00\xf0\x3f", 8, | |
151 | // little_bin_double(1.0))); | |
152 | } | |
153 | ||
154 | return boost::report_errors(); | |
155 | } |