| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611 |
- //
- // ByteOrderTest.cpp
- //
- // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
- // and Contributors.
- //
- // SPDX-License-Identifier: BSL-1.0
- //
- #include "ByteOrderTest.h"
- #include "CppUnit/TestCaller.h"
- #include "CppUnit/TestSuite.h"
- #include "Poco/ByteOrder.h"
- using Poco::ByteOrder;
- using Poco::Int16;
- using Poco::UInt16;
- using Poco::Int32;
- using Poco::UInt32;
- #if defined(POCO_HAVE_INT64)
- using Poco::Int64;
- using Poco::UInt64;
- #endif
- ByteOrderTest::ByteOrderTest(const std::string& name): CppUnit::TestCase(name)
- {
- }
- ByteOrderTest::~ByteOrderTest()
- {
- }
- void ByteOrderTest::testByteOrderFlip()
- {
- {
- Int16 norm = (Int16) 0xAABB;
- Int16 flip = ByteOrder::flipBytes(norm);
- assertTrue (UInt16(flip) == 0xBBAA);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (flip == norm);
- }
- {
- UInt16 norm = (UInt16) 0xAABB;
- UInt16 flip = ByteOrder::flipBytes(norm);
- assertTrue (flip == 0xBBAA);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (flip == norm);
- }
- {
- Int32 norm = 0xAABBCCDD;
- Int32 flip = ByteOrder::flipBytes(norm);
- assertTrue (UInt32(flip) == 0xDDCCBBAA);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (flip == norm);
- }
- {
- UInt32 norm = 0xAABBCCDD;
- UInt32 flip = ByteOrder::flipBytes(norm);
- assertTrue (flip == 0xDDCCBBAA);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (flip == norm);
- }
- #if defined(POCO_HAVE_INT64)
- {
- Int64 norm = (Int64(0x8899AABB) << 32) + 0xCCDDEEFF;
- Int64 flip = ByteOrder::flipBytes(norm);
- assertTrue (flip == (Int64(0xFFEEDDCC) << 32) + 0xBBAA9988);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (flip == norm);
- }
- {
- UInt64 norm = (UInt64(0x8899AABB) << 32) + 0xCCDDEEFF;
- UInt64 flip = ByteOrder::flipBytes(norm);
- assertTrue (flip == (UInt64(0xFFEEDDCC) << 32) + 0xBBAA9988);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (flip == norm);
- }
- #endif
- }
- void ByteOrderTest::testByteOrderBigEndian()
- {
- #if defined(POCO_ARCH_BIG_ENDIAN)
- //
- // big-endian systems
- //
- {
- Int16 norm = 4;
- Int16 flip = ByteOrder::toBigEndian(norm);
- assertTrue (norm == flip);
- }
- {
- UInt16 norm = 4;
- UInt16 flip = ByteOrder::toBigEndian(norm);
- assertTrue (norm == flip);
- }
- {
- Int32 norm = 4;
- Int32 flip = ByteOrder::toBigEndian(norm);
- assertTrue (norm == flip);
- }
- {
- UInt32 norm = 4;
- UInt32 flip = ByteOrder::toBigEndian(norm);
- assertTrue (norm == flip);
- }
- #if defined(POCO_HAVE_INT64)
- {
- Int64 norm = 4;
- Int64 flip = ByteOrder::toBigEndian(norm);
- assertTrue (norm == flip);
- }
- {
- UInt64 norm = 4;
- UInt64 flip = ByteOrder::toBigEndian(norm);
- assertTrue (norm == flip);
- }
- #endif
-
- {
- Int16 norm = 4;
- Int16 flip = ByteOrder::fromBigEndian(norm);
- assertTrue (norm == flip);
- }
- {
- UInt16 norm = 4;
- UInt16 flip = ByteOrder::fromBigEndian(norm);
- assertTrue (norm == flip);
- }
- {
- Int32 norm = 4;
- Int32 flip = ByteOrder::fromBigEndian(norm);
- assertTrue (norm == flip);
- }
- {
- UInt32 norm = 4;
- UInt32 flip = ByteOrder::fromBigEndian(norm);
- assertTrue (norm == flip);
- }
- #if defined(POCO_HAVE_INT64)
- {
- Int64 norm = 4;
- Int64 flip = ByteOrder::fromBigEndian(norm);
- assertTrue (norm == flip);
- }
- {
- UInt64 norm = 4;
- UInt64 flip = ByteOrder::fromBigEndian(norm);
- assertTrue (norm == flip);
- }
- #endif
- #else
- //
- // little-endian systems
- //
- {
- Int16 norm = 4;
- Int16 flip = ByteOrder::toBigEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt16 norm = 4;
- UInt16 flip = ByteOrder::toBigEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- Int32 norm = 4;
- Int32 flip = ByteOrder::toBigEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt32 norm = 4;
- UInt32 flip = ByteOrder::toBigEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- #if defined(POCO_HAVE_INT64)
- {
- Int64 norm = 4;
- Int64 flip = ByteOrder::toBigEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt64 norm = 4;
- UInt64 flip = ByteOrder::toBigEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- #endif
-
- {
- Int16 norm = 4;
- Int16 flip = ByteOrder::fromBigEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt16 norm = 4;
- UInt16 flip = ByteOrder::fromBigEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- Int32 norm = 4;
- Int32 flip = ByteOrder::fromBigEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt32 norm = 4;
- UInt32 flip = ByteOrder::fromBigEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- #if defined(POCO_HAVE_INT64)
- {
- Int64 norm = 4;
- Int64 flip = ByteOrder::fromBigEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt64 norm = 4;
- UInt64 flip = ByteOrder::fromBigEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- #endif
- #endif
- }
- void ByteOrderTest::testByteOrderLittleEndian()
- {
- #if defined(POCO_ARCH_LITTLE_ENDIAN)
- //
- // big-endian systems
- //
- {
- Int16 norm = 4;
- Int16 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm == flip);
- }
- {
- UInt16 norm = 4;
- UInt16 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm == flip);
- }
- {
- Int32 norm = 4;
- Int32 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm == flip);
- }
- {
- UInt32 norm = 4;
- UInt32 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm == flip);
- }
- #if defined(POCO_HAVE_INT64)
- {
- Int64 norm = 4;
- Int64 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm == flip);
- }
- {
- UInt64 norm = 4;
- UInt64 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm == flip);
- }
- #endif
-
- {
- Int16 norm = 4;
- Int16 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm == flip);
- }
- {
- UInt16 norm = 4;
- UInt16 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm == flip);
- }
- {
- Int32 norm = 4;
- Int32 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm == flip);
- }
- {
- UInt32 norm = 4;
- UInt32 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm == flip);
- }
- #if defined(POCO_HAVE_INT64)
- {
- Int64 norm = 4;
- Int64 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm == flip);
- }
- {
- UInt64 norm = 4;
- UInt64 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm == flip);
- }
- #endif
- #else
- //
- // little-endian systems
- //
- {
- Int16 norm = 4;
- Int16 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt16 norm = 4;
- UInt16 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- Int32 norm = 4;
- Int32 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt32 norm = 4;
- UInt32 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- #if defined(POCO_HAVE_INT64)
- {
- Int64 norm = 4;
- Int64 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt64 norm = 4;
- UInt64 flip = ByteOrder::toLittleEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- #endif
-
- {
- Int16 norm = 4;
- Int16 flip = ByteOrder::fromLittleEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt16 norm = 4;
- UInt16 flip = ByteOrder::fromLittleEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- Int32 norm = 4;
- Int32 flip = ByteOrder::fromLittleEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt32 norm = 4;
- UInt32 flip = ByteOrder::fromLittleEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- #if defined(POCO_HAVE_INT64)
- {
- Int64 norm = 4;
- Int64 flip = ByteOrder::fromLittleEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt64 norm = 4;
- UInt64 flip = ByteOrder::fromLittleEndian(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- #endif
- #endif
- }
- void ByteOrderTest::testByteOrderNetwork()
- {
- #if defined(POCO_ARCH_BIG_ENDIAN)
- //
- // big-endian systems
- //
- {
- Int16 norm = 4;
- Int16 flip = ByteOrder::toNetwork(norm);
- assertTrue (norm == flip);
- }
- {
- UInt16 norm = 4;
- UInt16 flip = ByteOrder::toNetwork(norm);
- assertTrue (norm == flip);
- }
- {
- Int32 norm = 4;
- Int32 flip = ByteOrder::toNetwork(norm);
- assertTrue (norm == flip);
- }
- {
- UInt32 norm = 4;
- UInt32 flip = ByteOrder::toNetwork(norm);
- assertTrue (norm == flip);
- }
- #if defined(POCO_HAVE_INT64)
- {
- Int64 norm = 4;
- Int64 flip = ByteOrder::toNetwork(norm);
- assertTrue (norm == flip);
- }
- {
- UInt64 norm = 4;
- UInt64 flip = ByteOrder::toNetwork(norm);
- assertTrue (norm == flip);
- }
- #endif
-
- {
- Int16 norm = 4;
- Int16 flip = ByteOrder::fromNetwork(norm);
- assertTrue (norm == flip);
- }
- {
- UInt16 norm = 4;
- UInt16 flip = ByteOrder::fromNetwork(norm);
- assertTrue (norm == flip);
- }
- {
- Int32 norm = 4;
- Int32 flip = ByteOrder::fromNetwork(norm);
- assertTrue (norm == flip);
- }
- {
- UInt32 norm = 4;
- UInt32 flip = ByteOrder::fromNetwork(norm);
- assertTrue (norm == flip);
- }
- #if defined(POCO_HAVE_INT64)
- {
- Int64 norm = 4;
- Int64 flip = ByteOrder::fromNetwork(norm);
- assertTrue (norm == flip);
- }
- {
- UInt64 norm = 4;
- UInt64 flip = ByteOrder::fromNetwork(norm);
- assertTrue (norm == flip);
- }
- #endif
- #else
- //
- // little-endian systems
- //
- {
- Int16 norm = 4;
- Int16 flip = ByteOrder::toNetwork(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt16 norm = 4;
- UInt16 flip = ByteOrder::toNetwork(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- Int32 norm = 4;
- Int32 flip = ByteOrder::toNetwork(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt32 norm = 4;
- UInt32 flip = ByteOrder::toNetwork(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- #if defined(POCO_HAVE_INT64)
- {
- Int64 norm = 4;
- Int64 flip = ByteOrder::toNetwork(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt64 norm = 4;
- UInt64 flip = ByteOrder::toNetwork(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- #endif
-
- {
- Int16 norm = 4;
- Int16 flip = ByteOrder::fromNetwork(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt16 norm = 4;
- UInt16 flip = ByteOrder::fromNetwork(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- Int32 norm = 4;
- Int32 flip = ByteOrder::fromNetwork(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt32 norm = 4;
- UInt32 flip = ByteOrder::fromNetwork(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- #if defined(POCO_HAVE_INT64)
- {
- Int64 norm = 4;
- Int64 flip = ByteOrder::fromNetwork(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- {
- UInt64 norm = 4;
- UInt64 flip = ByteOrder::fromNetwork(norm);
- assertTrue (norm != flip);
- flip = ByteOrder::flipBytes(flip);
- assertTrue (norm == flip);
- }
- #endif
- #endif
- }
- void ByteOrderTest::setUp()
- {
- }
- void ByteOrderTest::tearDown()
- {
- }
- CppUnit::Test* ByteOrderTest::suite()
- {
- CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("ByteOrderTest");
- CppUnit_addTest(pSuite, ByteOrderTest, testByteOrderFlip);
- CppUnit_addTest(pSuite, ByteOrderTest, testByteOrderBigEndian);
- CppUnit_addTest(pSuite, ByteOrderTest, testByteOrderLittleEndian);
- CppUnit_addTest(pSuite, ByteOrderTest, testByteOrderNetwork);
- return pSuite;
- }
|