// Copyright (C) 2011 Davis E. King (davis@dlib.net) // License: Boost Software License See LICENSE.txt for the full license. #include #include #include #include #include #include #include "tester.h" namespace { using namespace test; using namespace dlib; using namespace std; logger dlog("test.byte_orderer"); class byte_orderer_tester : public tester { public: byte_orderer_tester ( ) : tester ("test_byte_orderer", "Runs tests on the byte_orderer component.") {} void perform_test ( ) { byte_orderer bo; union data { unsigned char b[4]; dlib::uint32 val; }; data a; a.val = 1; if (bo.host_is_little_endian()) { DLIB_TEST(a.b[0] == 1); DLIB_TEST(a.b[1] == 0); DLIB_TEST(a.b[2] == 0); DLIB_TEST(a.b[3] == 0); bo.host_to_big(a.val); DLIB_TEST(a.b[0] == 0); DLIB_TEST(a.b[1] == 0); DLIB_TEST(a.b[2] == 0); DLIB_TEST(a.b[3] == 1); bo.big_to_host(a.val); DLIB_TEST(a.b[0] == 1); DLIB_TEST(a.b[1] == 0); DLIB_TEST(a.b[2] == 0); DLIB_TEST(a.b[3] == 0); DLIB_TEST(a.val == 1); bo.host_to_network(a.val); DLIB_TEST(a.val == 0x01000000); bo.network_to_host(a.val); DLIB_TEST(a.val == 1); } else { DLIB_TEST(a.b[0] == 0); DLIB_TEST(a.b[1] == 0); DLIB_TEST(a.b[2] == 0); DLIB_TEST(a.b[3] == 1); bo.host_to_little(a.val); DLIB_TEST(a.b[0] == 1); DLIB_TEST(a.b[1] == 0); DLIB_TEST(a.b[2] == 0); DLIB_TEST(a.b[3] == 0); bo.little_to_host(a.val); DLIB_TEST(a.b[0] == 0); DLIB_TEST(a.b[1] == 0); DLIB_TEST(a.b[2] == 0); DLIB_TEST(a.b[3] == 1); DLIB_TEST(a.val == 1); bo.network_to_host(a.val); DLIB_TEST(a.val == 1); bo.host_to_network(a.val); DLIB_TEST(a.val == 1); } } } a; }