From 2794810b2926bc71ea347767750e0486880da6a3 Mon Sep 17 00:00:00 2001 From: Beman Date: Sat, 11 May 2013 17:41:06 -0400 Subject: [PATCH] converter_test.cpp refactoring complete --- include/boost/endian/converters.hpp | 22 ++++ test/converter_test.cpp | 167 ++++------------------------ 2 files changed, 43 insertions(+), 146 deletions(-) diff --git a/include/boost/endian/converters.hpp b/include/boost/endian/converters.hpp index ed73ad4..e670b39 100644 --- a/include/boost/endian/converters.hpp +++ b/include/boost/endian/converters.hpp @@ -225,6 +225,14 @@ namespace endian template<> inline uint64_t convert_bytes(uint64_t x) BOOST_NOEXCEPT {return x;} template<> inline uint64_t convert_bytes(uint64_t x) BOOST_NOEXCEPT {return x;} + template<> inline float convert_bytes(float x) BOOST_NOEXCEPT {return x;} + template<> inline float convert_bytes(float x) BOOST_NOEXCEPT {return x;} + template<> inline float convert_bytes(float x) BOOST_NOEXCEPT {return x;} + + template<> inline double convert_bytes(double x) BOOST_NOEXCEPT {return x;} + template<> inline double convert_bytes(double x) BOOST_NOEXCEPT {return x;} + template<> inline double convert_bytes(double x) BOOST_NOEXCEPT {return x;} + template<> inline int16_t convert_bytes(int16_t x) BOOST_NOEXCEPT {return reverse_bytes(x);} template<> inline int16_t convert_bytes(int16_t x) BOOST_NOEXCEPT {return big(x);} template<> inline int16_t convert_bytes(int16_t x) BOOST_NOEXCEPT {return reverse_bytes(x);} @@ -267,6 +275,20 @@ namespace endian template<> inline uint64_t convert_bytes(uint64_t x) BOOST_NOEXCEPT {return big(x);} template<> inline uint64_t convert_bytes(uint64_t x) BOOST_NOEXCEPT {return little(x);} + template<> inline float convert_bytes(float x) BOOST_NOEXCEPT {return reverse_bytes(x);} + template<> inline float convert_bytes(float x) BOOST_NOEXCEPT {return big(x);} + template<> inline float convert_bytes(float x) BOOST_NOEXCEPT {return reverse_bytes(x);} + template<> inline float convert_bytes(float x) BOOST_NOEXCEPT {return little(x);} + template<> inline float convert_bytes(float x) BOOST_NOEXCEPT {return big(x);} + template<> inline float convert_bytes(float x) BOOST_NOEXCEPT {return little(x);} + + template<> inline double convert_bytes(double x) BOOST_NOEXCEPT {return reverse_bytes(x);} + template<> inline double convert_bytes(double x) BOOST_NOEXCEPT {return big(x);} + template<> inline double convert_bytes(double x) BOOST_NOEXCEPT {return reverse_bytes(x);} + template<> inline double convert_bytes(double x) BOOST_NOEXCEPT {return little(x);} + template<> inline double convert_bytes(double x) BOOST_NOEXCEPT {return big(x);} + template<> inline double convert_bytes(double x) BOOST_NOEXCEPT {return little(x);} + inline BOOST_SCOPED_ENUM(order) actual_order(BOOST_SCOPED_ENUM(order) o) BOOST_NOEXCEPT { return o != order::native ? o : diff --git a/test/converter_test.cpp b/test/converter_test.cpp index 3980faf..9340234 100644 --- a/test/converter_test.cpp +++ b/test/converter_test.cpp @@ -165,7 +165,6 @@ namespace void little_value(double& x) {memcpy(&x, &double_value, sizeof(double));} # endif - template void test() { @@ -209,162 +208,38 @@ namespace BOOST_TEST_EQ(be::big(native), big); BOOST_TEST_EQ(be::big(native), big); # endif - } - void test_compile_time_convert_bytes() - { - cout << "test_compile_time_convert_bytes...\n"; + // compile time order determination - BOOST_TEST_EQ((be::convert_bytes(bi16)), bi16); - BOOST_TEST_EQ((be::convert_bytes(li16)), li16); - BOOST_TEST_EQ((be::convert_bytes(ni16)), ni16); + BOOST_TEST_EQ((be::convert_bytes(big)), big); + BOOST_TEST_EQ((be::convert_bytes(little)), little); + BOOST_TEST_EQ((be::convert_bytes(native)), native); - BOOST_TEST_EQ((be::convert_bytes(bui16)), bui16); - BOOST_TEST_EQ((be::convert_bytes(lui16)), lui16); - BOOST_TEST_EQ((be::convert_bytes(nui16)), nui16); + BOOST_TEST_EQ((be::convert_bytes(big)), little); + BOOST_TEST_EQ((be::convert_bytes(big)), native); + BOOST_TEST_EQ((be::convert_bytes(little)), big); + BOOST_TEST_EQ((be::convert_bytes(little)), native); + BOOST_TEST_EQ((be::convert_bytes(native)), big); + BOOST_TEST_EQ((be::convert_bytes(native)), native); - BOOST_TEST_EQ((be::convert_bytes(bi32)), bi32); - BOOST_TEST_EQ((be::convert_bytes(li32)), li32); - BOOST_TEST_EQ((be::convert_bytes(ni32)), ni32); + // runtime order determination - BOOST_TEST_EQ((be::convert_bytes(bui32)), bui32); - BOOST_TEST_EQ((be::convert_bytes(lui32)), lui32); - BOOST_TEST_EQ((be::convert_bytes(nui32)), nui32); - - BOOST_TEST_EQ((be::convert_bytes(bi64)), bi64); - BOOST_TEST_EQ((be::convert_bytes(li64)), li64); - BOOST_TEST_EQ((be::convert_bytes(ni64)), ni64); - - BOOST_TEST_EQ((be::convert_bytes(bui64)), bui64); - BOOST_TEST_EQ((be::convert_bytes(lui64)), lui64); - BOOST_TEST_EQ((be::convert_bytes(nui64)), nui64); - - BOOST_TEST_EQ((be::convert_bytes(bi16)), li16); - BOOST_TEST_EQ((be::convert_bytes(bi16)), ni16); - BOOST_TEST_EQ((be::convert_bytes(li16)), bi16); - BOOST_TEST_EQ((be::convert_bytes(li16)), ni16); - BOOST_TEST_EQ((be::convert_bytes(ni16)), bi16); - BOOST_TEST_EQ((be::convert_bytes(ni16)), ni16); - - BOOST_TEST_EQ((be::convert_bytes(bui16)), lui16); - BOOST_TEST_EQ((be::convert_bytes(bui16)), nui16); - BOOST_TEST_EQ((be::convert_bytes(lui16)), bui16); - BOOST_TEST_EQ((be::convert_bytes(lui16)), nui16); - BOOST_TEST_EQ((be::convert_bytes(nui16)), bui16); - BOOST_TEST_EQ((be::convert_bytes(nui16)), nui16); - - BOOST_TEST_EQ((be::convert_bytes(bi32)), li32); - BOOST_TEST_EQ((be::convert_bytes(bi32)), ni32); - BOOST_TEST_EQ((be::convert_bytes(li32)), bi32); - BOOST_TEST_EQ((be::convert_bytes(li32)), ni32); - BOOST_TEST_EQ((be::convert_bytes(ni32)), bi32); - BOOST_TEST_EQ((be::convert_bytes(ni32)), ni32); - - BOOST_TEST_EQ((be::convert_bytes(bui32)), lui32); - BOOST_TEST_EQ((be::convert_bytes(bui32)), nui32); - BOOST_TEST_EQ((be::convert_bytes(lui32)), bui32); - BOOST_TEST_EQ((be::convert_bytes(lui32)), nui32); - BOOST_TEST_EQ((be::convert_bytes(nui32)), bui32); - BOOST_TEST_EQ((be::convert_bytes(nui32)), nui32); - - BOOST_TEST_EQ((be::convert_bytes(bi64)), li64); - BOOST_TEST_EQ((be::convert_bytes(bi64)), ni64); - BOOST_TEST_EQ((be::convert_bytes(li64)), bi64); - BOOST_TEST_EQ((be::convert_bytes(li64)), ni64); - BOOST_TEST_EQ((be::convert_bytes(ni64)), bi64); - BOOST_TEST_EQ((be::convert_bytes(ni64)), ni64); - - BOOST_TEST_EQ((be::convert_bytes(bui64)), lui64); - BOOST_TEST_EQ((be::convert_bytes(bui64)), nui64); - BOOST_TEST_EQ((be::convert_bytes(lui64)), bui64); - BOOST_TEST_EQ((be::convert_bytes(lui64)), nui64); - BOOST_TEST_EQ((be::convert_bytes(nui64)), bui64); - BOOST_TEST_EQ((be::convert_bytes(nui64)), nui64); - - cout << " test_compile_time_convert_bytes complete\n"; - } - - void test_runtime_convert_bytes() - { - cout << "test_runtime_convert_bytes...\n"; - - BOOST_TEST_EQ((be::convert_bytes(bi16, be::order::big, be::order::big)), bi16); - BOOST_TEST_EQ((be::convert_bytes(li16, be::order::little, be::order::little)), li16); - BOOST_TEST_EQ((be::convert_bytes(ni16, be::order::native, be::order::native)), ni16); - - BOOST_TEST_EQ((be::convert_bytes(bui16, be::order::big, be::order::big)), bui16); - BOOST_TEST_EQ((be::convert_bytes(lui16, be::order::little, be::order::little)), lui16); - BOOST_TEST_EQ((be::convert_bytes(nui16, be::order::native, be::order::native)), nui16); - - BOOST_TEST_EQ((be::convert_bytes(bi16, be::order::big, be::order::little)), li16); - BOOST_TEST_EQ((be::convert_bytes(bi16, be::order::big, be::order::native)), ni16); - BOOST_TEST_EQ((be::convert_bytes(li16, be::order::little, be::order::big)), bi16); - BOOST_TEST_EQ((be::convert_bytes(li16, be::order::little, be::order::native)), ni16); - BOOST_TEST_EQ((be::convert_bytes(ni16, be::order::native, be::order::big)), bi16); - BOOST_TEST_EQ((be::convert_bytes(ni16, be::order::native, be::order::little)), ni16); - - BOOST_TEST_EQ((be::convert_bytes(bui16, be::order::big, be::order::little)), lui16); - BOOST_TEST_EQ((be::convert_bytes(bui16, be::order::big, be::order::native)), nui16); - BOOST_TEST_EQ((be::convert_bytes(lui16, be::order::little, be::order::big)), bui16); - BOOST_TEST_EQ((be::convert_bytes(lui16, be::order::little, be::order::native)), nui16); - BOOST_TEST_EQ((be::convert_bytes(nui16, be::order::native, be::order::big)), bui16); - BOOST_TEST_EQ((be::convert_bytes(nui16, be::order::native, be::order::little)), nui16); - - BOOST_TEST_EQ((be::convert_bytes(bi32, be::order::big, be::order::big)), bi32); - BOOST_TEST_EQ((be::convert_bytes(li32, be::order::little, be::order::little)), li32); - BOOST_TEST_EQ((be::convert_bytes(ni32, be::order::native, be::order::native)), ni32); - - BOOST_TEST_EQ((be::convert_bytes(bui32, be::order::big, be::order::big)), bui32); - BOOST_TEST_EQ((be::convert_bytes(lui32, be::order::little, be::order::little)), lui32); - BOOST_TEST_EQ((be::convert_bytes(nui32, be::order::native, be::order::native)), nui32); - - BOOST_TEST_EQ((be::convert_bytes(bi32, be::order::big, be::order::little)), li32); - BOOST_TEST_EQ((be::convert_bytes(bi32, be::order::big, be::order::native)), ni32); - BOOST_TEST_EQ((be::convert_bytes(li32, be::order::little, be::order::big)), bi32); - BOOST_TEST_EQ((be::convert_bytes(li32, be::order::little, be::order::native)), ni32); - BOOST_TEST_EQ((be::convert_bytes(ni32, be::order::native, be::order::big)), bi32); - BOOST_TEST_EQ((be::convert_bytes(ni32, be::order::native, be::order::little)), ni32); - - BOOST_TEST_EQ((be::convert_bytes(bui32, be::order::big, be::order::little)), lui32); - BOOST_TEST_EQ((be::convert_bytes(bui32, be::order::big, be::order::native)), nui32); - BOOST_TEST_EQ((be::convert_bytes(lui32, be::order::little, be::order::big)), bui32); - BOOST_TEST_EQ((be::convert_bytes(lui32, be::order::little, be::order::native)), nui32); - BOOST_TEST_EQ((be::convert_bytes(nui32, be::order::native, be::order::big)), bui32); - BOOST_TEST_EQ((be::convert_bytes(nui32, be::order::native, be::order::little)), nui32); - - BOOST_TEST_EQ((be::convert_bytes(bi64, be::order::big, be::order::big)), bi64); - BOOST_TEST_EQ((be::convert_bytes(li64, be::order::little, be::order::little)), li64); - BOOST_TEST_EQ((be::convert_bytes(ni64, be::order::native, be::order::native)), ni64); - - BOOST_TEST_EQ((be::convert_bytes(bui64, be::order::big, be::order::big)), bui64); - BOOST_TEST_EQ((be::convert_bytes(lui64, be::order::little, be::order::little)), lui64); - BOOST_TEST_EQ((be::convert_bytes(nui64, be::order::native, be::order::native)), nui64); - - BOOST_TEST_EQ((be::convert_bytes(bi64, be::order::big, be::order::little)), li64); - BOOST_TEST_EQ((be::convert_bytes(bi64, be::order::big, be::order::native)), ni64); - BOOST_TEST_EQ((be::convert_bytes(li64, be::order::little, be::order::big)), bi64); - BOOST_TEST_EQ((be::convert_bytes(li64, be::order::little, be::order::native)), ni64); - BOOST_TEST_EQ((be::convert_bytes(ni64, be::order::native, be::order::big)), bi64); - BOOST_TEST_EQ((be::convert_bytes(ni64, be::order::native, be::order::little)), ni64); - - BOOST_TEST_EQ((be::convert_bytes(bui64, be::order::big, be::order::little)), lui64); - BOOST_TEST_EQ((be::convert_bytes(bui64, be::order::big, be::order::native)), nui64); - BOOST_TEST_EQ((be::convert_bytes(lui64, be::order::little, be::order::big)), bui64); - BOOST_TEST_EQ((be::convert_bytes(lui64, be::order::little, be::order::native)), nui64); - BOOST_TEST_EQ((be::convert_bytes(nui64, be::order::native, be::order::big)), bui64); - BOOST_TEST_EQ((be::convert_bytes(nui64, be::order::native, be::order::little)), nui64); - - cout << " test_runtime_convert_bytes complete\n"; - } + BOOST_TEST_EQ((be::convert_bytes(big, be::order::big, be::order::big)), big); + BOOST_TEST_EQ((be::convert_bytes(little, be::order::little, be::order::little)), little); + BOOST_TEST_EQ((be::convert_bytes(native, be::order::native, be::order::native)), native); + BOOST_TEST_EQ((be::convert_bytes(big, be::order::big, be::order::little)), little); + BOOST_TEST_EQ((be::convert_bytes(big, be::order::big, be::order::native)), native); + BOOST_TEST_EQ((be::convert_bytes(little, be::order::little, be::order::big)), big); + BOOST_TEST_EQ((be::convert_bytes(little, be::order::little, be::order::native)), native); + BOOST_TEST_EQ((be::convert_bytes(native, be::order::native, be::order::big)), big); + BOOST_TEST_EQ((be::convert_bytes(native, be::order::native, be::order::little)), native); + } } // unnamed namespace int cpp_main(int, char * []) { //std::cerr << std::hex; - test_reverse_bytes(); - test_compile_time_convert_bytes(); - test_runtime_convert_bytes(); cout << "int16_t" << endl; test();