From 8e9a3e91df4e7ea5556c2bc365a72b9867c78c5f Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Sun, 9 Apr 2017 23:12:46 -0500 Subject: [PATCH] Allow littleEndianToNative test parameters to be specified only in CMake --- src/ox/fs/filestore.hpp | 24 +++++++++++----------- src/ox/std/byteswap.hpp | 33 ++++--------------------------- src/ox/std/test/CMakeLists.txt | 17 +++++++++++++++- src/ox/std/test/byteswap_test.cpp | 18 +++++++++++------ 4 files changed, 44 insertions(+), 48 deletions(-) diff --git a/src/ox/fs/filestore.hpp b/src/ox/fs/filestore.hpp index aedfbac80..e00af641e 100644 --- a/src/ox/fs/filestore.hpp +++ b/src/ox/fs/filestore.hpp @@ -50,7 +50,7 @@ void FileStoreHeader::setVersion(uint16_t version) { template uint16_t FileStoreHeader::getVersion() { - return std::nativizeLittleEndian(m_version); + return std::littleEndianToNative(m_version); } template @@ -60,7 +60,7 @@ void FileStoreHeader::setFsType(uint16_t fsType) { template uint16_t FileStoreHeader::getFsType() { - return std::nativizeLittleEndian(m_fsType); + return std::littleEndianToNative(m_fsType); } template @@ -70,7 +70,7 @@ void FileStoreHeader::setSize(FsSize_t size) { template FsSize_t FileStoreHeader::getSize() { - return std::nativizeLittleEndian(m_size); + return std::littleEndianToNative(m_size); } template @@ -80,7 +80,7 @@ void FileStoreHeader::setMemUsed(FsSize_t memUsed) { template FsSize_t FileStoreHeader::getMemUsed() { - return std::nativizeLittleEndian(m_memUsed); + return std::littleEndianToNative(m_memUsed); } template @@ -90,7 +90,7 @@ void FileStoreHeader::setRootInode(FsSize_t rootInode) { template FsSize_t FileStoreHeader::getRootInode() { - return std::nativizeLittleEndian(m_rootInode); + return std::littleEndianToNative(m_rootInode); } template @@ -326,7 +326,7 @@ void FileStore
::Inode::setDataLen(typename Header::FsSize_t dataLen) { template typename Header::FsSize_t FileStore
::Inode::getDataLen() { - return std::nativizeLittleEndian(this->m_dataLen); + return std::littleEndianToNative(this->m_dataLen); } template @@ -336,7 +336,7 @@ void FileStore
::Inode::setPrev(typename Header::FsSize_t prev) { template typename Header::FsSize_t FileStore
::Inode::getPrev() { - return std::nativizeLittleEndian(this->m_prev); + return std::littleEndianToNative(this->m_prev); } template @@ -346,7 +346,7 @@ void FileStore
::Inode::setNext(typename Header::FsSize_t next) { template typename Header::FsSize_t FileStore
::Inode::getNext() { - return std::nativizeLittleEndian(this->m_next); + return std::littleEndianToNative(this->m_next); } template @@ -356,7 +356,7 @@ void FileStore
::Inode::setId(InodeId_t id) { template typename Header::InodeId_t FileStore
::Inode::getId() { - return std::nativizeLittleEndian(this->m_id); + return std::littleEndianToNative(this->m_id); } template @@ -366,7 +366,7 @@ void FileStore
::Inode::setFileType(uint8_t fileType) { template uint8_t FileStore
::Inode::getFileType() { - return std::nativizeLittleEndian(this->m_fileType); + return std::littleEndianToNative(this->m_fileType); } template @@ -376,7 +376,7 @@ void FileStore
::Inode::setLeft(typename Header::FsSize_t left) { template typename Header::FsSize_t FileStore
::Inode::getLeft() { - return std::nativizeLittleEndian(this->m_left); + return std::littleEndianToNative(this->m_left); } template @@ -386,7 +386,7 @@ void FileStore
::Inode::setRight(typename Header::FsSize_t right) { template typename Header::FsSize_t FileStore
::Inode::getRight() { - return std::nativizeLittleEndian(this->m_right); + return std::littleEndianToNative(this->m_right); } template diff --git a/src/ox/std/byteswap.hpp b/src/ox/std/byteswap.hpp index 0628b29c0..7ddd3a742 100644 --- a/src/ox/std/byteswap.hpp +++ b/src/ox/std/byteswap.hpp @@ -40,14 +40,14 @@ inline uint64_t byteSwap(uint64_t i) { /** * Takes a little endian int and byte swaps if the platform is big endian. */ -inline uint8_t nativizeLittleEndian(uint8_t i) { +inline uint8_t littleEndianToNative(uint8_t i) { return i; } /** * Takes a little endian int and byte swaps if the platform is big endian. */ -inline uint16_t nativizeLittleEndian(uint16_t i) { +inline uint16_t littleEndianToNative(uint16_t i) { #ifdef __BIG_ENDIAN__ return byteSwap(i); #else @@ -58,7 +58,7 @@ inline uint16_t nativizeLittleEndian(uint16_t i) { /** * Takes a little endian int and byte swaps if the platform is big endian. */ -inline uint32_t nativizeLittleEndian(uint32_t i) { +inline uint32_t littleEndianToNative(uint32_t i) { #ifdef __BIG_ENDIAN__ return byteSwap(i); #else @@ -69,7 +69,7 @@ inline uint32_t nativizeLittleEndian(uint32_t i) { /** * Takes a little endian int and byte swaps if the platform is big endian. */ -inline uint64_t nativizeLittleEndian(uint64_t i) { +inline uint64_t littleEndianToNative(uint64_t i) { #ifdef __BIG_ENDIAN__ return byteSwap(i); #else @@ -106,30 +106,5 @@ inline uint64_t toLittleEndian(uint64_t i) { #endif } - -inline uint16_t toBigEndian(uint16_t i) { -#ifdef __LITTLE_ENDIAN__ - return byteSwap(i); -#else - return i; -#endif -} - -inline uint32_t toBigEndian(uint32_t i) { -#ifdef __LITTLE_ENDIAN__ - return byteSwap(i); -#else - return i; -#endif -} - -inline uint64_t toBigEndian(uint64_t i) { -#ifdef __LITTLE_ENDIAN__ - return byteSwap(i); -#else - return i; -#endif -} - } } diff --git a/src/ox/std/test/CMakeLists.txt b/src/ox/std/test/CMakeLists.txt index de5fe4044..bdcefc14d 100644 --- a/src/ox/std/test/CMakeLists.txt +++ b/src/ox/std/test/CMakeLists.txt @@ -40,4 +40,19 @@ add_executable( target_link_libraries(ByteSwapTest OxStd) -add_test("Test\\ nativizeLittleEndian\\ 40" ByteSwapTest "40") +add_test("Test\\ littleEndianToNative\\ 0x00ff" ByteSwapTest littleEndianToNative 0x00ff) +add_test("Test\\ littleEndianToNative\\ 0xff00" ByteSwapTest littleEndianToNative 0xff00) + +add_test("Test\\ littleEndianToNative\\ 0x000000ff" ByteSwapTest littleEndianToNative 0x000000ff) +add_test("Test\\ littleEndianToNative\\ 0x0000ff00" ByteSwapTest littleEndianToNative 0x0000ff00) +add_test("Test\\ littleEndianToNative\\ 0x00ff0000" ByteSwapTest littleEndianToNative 0x00ff0000) +add_test("Test\\ littleEndianToNative\\ 0xff000000" ByteSwapTest littleEndianToNative 0xff000000) + +add_test("Test\\ littleEndianToNative\\ 0x00000000000000ff" ByteSwapTest littleEndianToNative 0x00000000000000ff) +add_test("Test\\ littleEndianToNative\\ 0x000000000000ff00" ByteSwapTest littleEndianToNative 0x000000000000ff00) +add_test("Test\\ littleEndianToNative\\ 0x0000000000ff0000" ByteSwapTest littleEndianToNative 0x0000000000ff0000) +add_test("Test\\ littleEndianToNative\\ 0x00000000ff000000" ByteSwapTest littleEndianToNative 0x00000000ff000000) +add_test("Test\\ littleEndianToNative\\ 0x000000ff00000000" ByteSwapTest littleEndianToNative 0x000000ff00000000) +add_test("Test\\ littleEndianToNative\\ 0x0000ff0000000000" ByteSwapTest littleEndianToNative 0x0000ff0000000000) +add_test("Test\\ littleEndianToNative\\ 0x00ff000000000000" ByteSwapTest littleEndianToNative 0x00ff000000000000) +add_test("Test\\ littleEndianToNative\\ 0xff00000000000000" ByteSwapTest littleEndianToNative 0xff00000000000000) diff --git a/src/ox/std/test/byteswap_test.cpp b/src/ox/std/test/byteswap_test.cpp index b7d36d668..9f6cb8573 100644 --- a/src/ox/std/test/byteswap_test.cpp +++ b/src/ox/std/test/byteswap_test.cpp @@ -13,20 +13,26 @@ using namespace std; using namespace ox::std; -map> tests = { +template +int testLittleEndianToNative(string str) { + auto i = (T) stoul(str, nullptr, 16); + return !(littleEndianToNative(littleEndianToNative(i)) == i); +} + +map> tests = { { - "40", - []() { - return !(nativizeLittleEndian(nativizeLittleEndian((uint32_t) 40)) == 40); - } + { "littleEndianToNative", testLittleEndianToNative }, + { "littleEndianToNative", testLittleEndianToNative }, + { "littleEndianToNative", testLittleEndianToNative }, }, }; int main(int argc, const char **args) { if (argc > 1) { auto testName = args[1]; + auto testArg = args[2]; if (tests.find(testName) != tests.end()) { - return tests[testName](); + return tests[testName](testArg); } } return -1;