| /* |
| * Copyright (c) 2019 The Regents of the University of California |
| * All rights reserved |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions are |
| * met: redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer; |
| * redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution; |
| * neither the name of the copyright holders nor the names of its |
| * contributors may be used to endorse or promote products derived from |
| * this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| * |
| * Authors: Mahyar Samani |
| */ |
| |
| #include <gtest/gtest.h> |
| |
| #include "sim/byteswap.hh" |
| |
| TEST(ByteswapTest, swap_byte64) |
| { |
| EXPECT_EQ(0x0123456789abcdef, swap_byte64(0xefcdab8967452301)); |
| EXPECT_EQ(0xfedcba9876543210, swap_byte64(0x1032547698badcfe)); |
| EXPECT_EQ(0x0b1cb071b77141b1, swap_byte64(0xb14171b771b01c0b)); |
| EXPECT_EQ(0x00000000ffffffff, swap_byte64(0xffffffff00000000)); |
| EXPECT_EQ(0x5555555555555555, swap_byte64(0x5555555555555555)); |
| EXPECT_EQ(0xa0a0a0a0a0a0a0a0, swap_byte64(0xa0a0a0a0a0a0a0a0)); |
| } |
| |
| TEST(ByteswapTest, swap_byte32) |
| { |
| EXPECT_EQ(0x0123cdef, swap_byte32(0xefcd2301)); |
| EXPECT_EQ(0xfedc3210, swap_byte32(0x1032dcfe)); |
| EXPECT_EQ(0x0b1c41b1, swap_byte32(0xb1411c0b)); |
| EXPECT_EQ(0x0000ffff, swap_byte32(0xffff0000)); |
| EXPECT_EQ(0x55555555, swap_byte32(0x55555555)); |
| EXPECT_EQ(0xa0a0a0a0, swap_byte32(0xa0a0a0a0)); |
| } |
| |
| TEST(ByteswapTest, swap_byte16) |
| { |
| EXPECT_EQ(0x01ef, swap_byte16(0xef01)); |
| EXPECT_EQ(0xfe10, swap_byte16(0x10fe)); |
| EXPECT_EQ(0x0bb1, swap_byte16(0xb10b)); |
| EXPECT_EQ(0x00ff, swap_byte16(0xff00)); |
| EXPECT_EQ(0x5555, swap_byte16(0x5555)); |
| EXPECT_EQ(0xa0a0, swap_byte16(0xa0a0)); |
| } |
| |
| TEST(ByteswapTest, swap_byte) |
| { |
| EXPECT_EQ(0x0123456789abcdef, swap_byte((uint64_t)0xefcdab8967452301)); |
| EXPECT_EQ(0xfedcba9876543210, swap_byte((uint64_t)0x1032547698badcfe)); |
| EXPECT_EQ(0x0b1cb071b77141b1, swap_byte((uint64_t)0xb14171b771b01c0b)); |
| EXPECT_EQ(0x00000000ffffffff, swap_byte((uint64_t)0xffffffff00000000)); |
| EXPECT_EQ(0x5555555555555555, swap_byte((uint64_t)0x5555555555555555)); |
| EXPECT_EQ(0xa0a0a0a0a0a0a0a0, swap_byte((uint64_t)0xa0a0a0a0a0a0a0a0)); |
| EXPECT_EQ(0x0123cdef, swap_byte((uint32_t)0xefcd2301)); |
| EXPECT_EQ(0xfedc3210, swap_byte((uint32_t)0x1032dcfe)); |
| EXPECT_EQ(0x0b1c41b1, swap_byte((uint32_t)0xb1411c0b)); |
| EXPECT_EQ(0x0000ffff, swap_byte((uint32_t)0xffff0000)); |
| EXPECT_EQ(0x55555555, swap_byte((uint32_t)0x55555555)); |
| EXPECT_EQ(0xa0a0a0a0, swap_byte((uint32_t)0xa0a0a0a0)); |
| EXPECT_EQ(0x01ef, swap_byte((uint16_t)0xef01)); |
| EXPECT_EQ(0xfe10, swap_byte((uint16_t)0x10fe)); |
| EXPECT_EQ(0x0bb1, swap_byte((uint16_t)0xb10b)); |
| EXPECT_EQ(0x00ff, swap_byte((uint16_t)0xff00)); |
| EXPECT_EQ(0x5555, swap_byte((uint16_t)0x5555)); |
| EXPECT_EQ(0xa0a0, swap_byte((uint16_t)0xa0a0)); |
| } |
| |
| TEST(ByteswapTest, htog) |
| { |
| #if (defined(_BIG_ENDIAN)||!defined(_LITTLE_ENDIAN)) && BYTE_ORDER==BIG_ENDIAN |
| EXPECT_EQ(0xefcdab8967452301, htog((uint64_t)0xefcdab8967452301, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0x1032547698badcfe, htog((uint64_t)0x1032547698badcfe, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0xb14171b771b01c0b, htog((uint64_t)0xb14171b771b01c0b, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0xffffffff00000000, htog((uint64_t)0xffffffff00000000, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0x5555555555555555, htog((uint64_t)0x5555555555555555, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0xa0a0a0a0a0a0a0a0, htog((uint64_t)0xa0a0a0a0a0a0a0a0, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0xefcd2301, htog((uint32_t)0xefcd2301, BigEndianByteOrder)); |
| EXPECT_EQ(0x1032dcfe, htog((uint32_t)0x1032dcfe, BigEndianByteOrder)); |
| EXPECT_EQ(0xb1411c0b, htog((uint32_t)0xb1411c0b, BigEndianByteOrder)); |
| EXPECT_EQ(0xffff0000, htog((uint32_t)0xffff0000, BigEndianByteOrder)); |
| EXPECT_EQ(0x55555555, htog((uint32_t)0x55555555, BigEndianByteOrder)); |
| EXPECT_EQ(0xa0a0a0a0, htog((uint32_t)0xa0a0a0a0, BigEndianByteOrder)); |
| EXPECT_EQ(0xef01, htog((uint16_t)0xef01, BigEndianByteOrder)); |
| EXPECT_EQ(0x10fe, htog((uint16_t)0x10fe, BigEndianByteOrder)); |
| EXPECT_EQ(0xb10b, htog((uint16_t)0xb10b, BigEndianByteOrder)); |
| EXPECT_EQ(0xff00, htog((uint16_t)0xff00, BigEndianByteOrder)); |
| EXPECT_EQ(0x5555, htog((uint16_t)0x5555, BigEndianByteOrder)); |
| EXPECT_EQ(0xa0a0, htog((uint16_t)0xa0a0, BigEndianByteOrder)); |
| EXPECT_EQ(0x0123456789abcdef, htog((uint64_t)0xefcdab8967452301, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0xfedcba9876543210, htog((uint64_t)0x1032547698badcfe, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0x0b1cb071b77141b1, htog((uint64_t)0xb14171b771b01c0b, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0x00000000ffffffff, htog((uint64_t)0xffffffff00000000, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0x5555555555555555, htog((uint64_t)0x5555555555555555, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0xa0a0a0a0a0a0a0a0, htog((uint64_t)0xa0a0a0a0a0a0a0a0, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0x0123cdef, htog((uint32_t)0xefcd2301, LittleEndianByteOrder)); |
| EXPECT_EQ(0xfedc3210, htog((uint32_t)0x1032dcfe, LittleEndianByteOrder)); |
| EXPECT_EQ(0x0b1c41b1, htog((uint32_t)0xb1411c0b, LittleEndianByteOrder)); |
| EXPECT_EQ(0x0000ffff, htog((uint32_t)0xffff0000, LittleEndianByteOrder)); |
| EXPECT_EQ(0x55555555, htog((uint32_t)0x55555555, LittleEndianByteOrder)); |
| EXPECT_EQ(0xa0a0a0a0, htog((uint32_t)0xa0a0a0a0, LittleEndianByteOrder)); |
| EXPECT_EQ(0x01ef, htog((uint16_t)0xef01, LittleEndianByteOrder)); |
| EXPECT_EQ(0xfe10, htog((uint16_t)0x10fe, LittleEndianByteOrder)); |
| EXPECT_EQ(0x0bb1, htog((uint16_t)0xb10b, LittleEndianByteOrder)); |
| EXPECT_EQ(0x00ff, htog((uint16_t)0xff00, LittleEndianByteOrder)); |
| EXPECT_EQ(0x5555, htog((uint16_t)0x5555, LittleEndianByteOrder)); |
| EXPECT_EQ(0xa0a0, htog((uint16_t)0xa0a0, LittleEndianByteOrder)); |
| #elif defined(_LITTLE_ENDIAN) || BYTE_ORDER==LITTLE_ENDIAN |
| EXPECT_EQ(0x0123456789abcdef, htog((uint64_t)0xefcdab8967452301, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0xfedcba9876543210, htog((uint64_t)0x1032547698badcfe, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0x0b1cb071b77141b1, htog((uint64_t)0xb14171b771b01c0b, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0x00000000ffffffff, htog((uint64_t)0xffffffff00000000, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0x5555555555555555, htog((uint64_t)0x5555555555555555, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0xa0a0a0a0a0a0a0a0, htog((uint64_t)0xa0a0a0a0a0a0a0a0, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0x0123cdef, htog((uint32_t)0xefcd2301, BigEndianByteOrder)); |
| EXPECT_EQ(0xfedc3210, htog((uint32_t)0x1032dcfe, BigEndianByteOrder)); |
| EXPECT_EQ(0x0b1c41b1, htog((uint32_t)0xb1411c0b, BigEndianByteOrder)); |
| EXPECT_EQ(0x0000ffff, htog((uint32_t)0xffff0000, BigEndianByteOrder)); |
| EXPECT_EQ(0x55555555, htog((uint32_t)0x55555555, BigEndianByteOrder)); |
| EXPECT_EQ(0xa0a0a0a0, htog((uint32_t)0xa0a0a0a0, BigEndianByteOrder)); |
| EXPECT_EQ(0x01ef, htog((uint16_t)0xef01, BigEndianByteOrder)); |
| EXPECT_EQ(0xfe10, htog((uint16_t)0x10fe, BigEndianByteOrder)); |
| EXPECT_EQ(0x0bb1, htog((uint16_t)0xb10b, BigEndianByteOrder)); |
| EXPECT_EQ(0x00ff, htog((uint16_t)0xff00, BigEndianByteOrder)); |
| EXPECT_EQ(0x5555, htog((uint16_t)0x5555, BigEndianByteOrder)); |
| EXPECT_EQ(0xa0a0, htog((uint16_t)0xa0a0, BigEndianByteOrder)); |
| EXPECT_EQ(0xefcdab8967452301, htog((uint64_t)0xefcdab8967452301, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0x1032547698badcfe, htog((uint64_t)0x1032547698badcfe, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0xb14171b771b01c0b, htog((uint64_t)0xb14171b771b01c0b, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0xffffffff00000000, htog((uint64_t)0xffffffff00000000, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0x5555555555555555, htog((uint64_t)0x5555555555555555, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0xa0a0a0a0a0a0a0a0, htog((uint64_t)0xa0a0a0a0a0a0a0a0, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0xefcd2301, htog((uint32_t)0xefcd2301, LittleEndianByteOrder)); |
| EXPECT_EQ(0x1032dcfe, htog((uint32_t)0x1032dcfe, LittleEndianByteOrder)); |
| EXPECT_EQ(0xb1411c0b, htog((uint32_t)0xb1411c0b, LittleEndianByteOrder)); |
| EXPECT_EQ(0xffff0000, htog((uint32_t)0xffff0000, LittleEndianByteOrder)); |
| EXPECT_EQ(0x55555555, htog((uint32_t)0x55555555, LittleEndianByteOrder)); |
| EXPECT_EQ(0xa0a0a0a0, htog((uint32_t)0xa0a0a0a0, LittleEndianByteOrder)); |
| EXPECT_EQ(0xef01, htog((uint16_t)0xef01, LittleEndianByteOrder)); |
| EXPECT_EQ(0x10fe, htog((uint16_t)0x10fe, LittleEndianByteOrder)); |
| EXPECT_EQ(0xb10b, htog((uint16_t)0xb10b, LittleEndianByteOrder)); |
| EXPECT_EQ(0xff00, htog((uint16_t)0xff00, LittleEndianByteOrder)); |
| EXPECT_EQ(0x5555, htog((uint16_t)0x5555, LittleEndianByteOrder)); |
| EXPECT_EQ(0xa0a0, htog((uint16_t)0xa0a0, LittleEndianByteOrder)); |
| #else |
| #error Invalid Endianess |
| #endif |
| } |
| |
| TEST(ByteswapTest, gtoh) |
| { |
| #if (defined(_BIG_ENDIAN)||!defined(_LITTLE_ENDIAN)) && BYTE_ORDER==BIG_ENDIAN |
| EXPECT_EQ(0xefcdab8967452301, gtoh((uint64_t)0xefcdab8967452301, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0x1032547698badcfe, gtoh((uint64_t)0x1032547698badcfe, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0xb14171b771b01c0b, gtoh((uint64_t)0xb14171b771b01c0b, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0xffffffff00000000, gtoh((uint64_t)0xffffffff00000000, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0x5555555555555555, gtoh((uint64_t)0x5555555555555555, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0xa0a0a0a0a0a0a0a0, gtoh((uint64_t)0xa0a0a0a0a0a0a0a0, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0xefcd2301, gtoh((uint32_t)0xefcd2301, BigEndianByteOrder)); |
| EXPECT_EQ(0x1032dcfe, gtoh((uint32_t)0x1032dcfe, BigEndianByteOrder)); |
| EXPECT_EQ(0xb1411c0b, gtoh((uint32_t)0xb1411c0b, BigEndianByteOrder)); |
| EXPECT_EQ(0xffff0000, gtoh((uint32_t)0xffff0000, BigEndianByteOrder)); |
| EXPECT_EQ(0x55555555, gtoh((uint32_t)0x55555555, BigEndianByteOrder)); |
| EXPECT_EQ(0xa0a0a0a0, gtoh((uint32_t)0xa0a0a0a0, BigEndianByteOrder)); |
| EXPECT_EQ(0xef01, gtoh((uint16_t)0xef01, BigEndianByteOrder)); |
| EXPECT_EQ(0x10fe, gtoh((uint16_t)0x10fe, BigEndianByteOrder)); |
| EXPECT_EQ(0xb10b, gtoh((uint16_t)0xb10b, BigEndianByteOrder)); |
| EXPECT_EQ(0xff00, gtoh((uint16_t)0xff00, BigEndianByteOrder)); |
| EXPECT_EQ(0x5555, gtoh((uint16_t)0x5555, BigEndianByteOrder)); |
| EXPECT_EQ(0xa0a0, gtoh((uint16_t)0xa0a0, BigEndianByteOrder)); |
| EXPECT_EQ(0x0123456789abcdef, gtoh((uint64_t)0xefcdab8967452301, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0xfedcba9876543210, gtoh((uint64_t)0x1032547698badcfe, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0x0b1cb071b77141b1, gtoh((uint64_t)0xb14171b771b01c0b, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0x00000000ffffffff, gtoh((uint64_t)0xffffffff00000000, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0x5555555555555555, gtoh((uint64_t)0x5555555555555555, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0xa0a0a0a0a0a0a0a0, gtoh((uint64_t)0xa0a0a0a0a0a0a0a0, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0x0123cdef, gtoh((uint32_t)0xefcd2301, LittleEndianByteOrder)); |
| EXPECT_EQ(0xfedc3210, gtoh((uint32_t)0x1032dcfe, LittleEndianByteOrder)); |
| EXPECT_EQ(0x0b1c41b1, gtoh((uint32_t)0xb1411c0b, LittleEndianByteOrder)); |
| EXPECT_EQ(0x0000ffff, gtoh((uint32_t)0xffff0000, LittleEndianByteOrder)); |
| EXPECT_EQ(0x55555555, gtoh((uint32_t)0x55555555, LittleEndianByteOrder)); |
| EXPECT_EQ(0xa0a0a0a0, gtoh((uint32_t)0xa0a0a0a0, LittleEndianByteOrder)); |
| EXPECT_EQ(0x01ef, gtoh((uint16_t)0xef01, LittleEndianByteOrder)); |
| EXPECT_EQ(0xfe10, gtoh((uint16_t)0x10fe, LittleEndianByteOrder)); |
| EXPECT_EQ(0x0bb1, gtoh((uint16_t)0xb10b, LittleEndianByteOrder)); |
| EXPECT_EQ(0x00ff, gtoh((uint16_t)0xff00, LittleEndianByteOrder)); |
| EXPECT_EQ(0x5555, gtoh((uint16_t)0x5555, LittleEndianByteOrder)); |
| EXPECT_EQ(0xa0a0, gtoh((uint16_t)0xa0a0, LittleEndianByteOrder)); |
| #elif defined(_LITTLE_ENDIAN) || BYTE_ORDER==LITTLE_ENDIAN |
| EXPECT_EQ(0x0123456789abcdef, gtoh((uint64_t)0xefcdab8967452301, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0xfedcba9876543210, gtoh((uint64_t)0x1032547698badcfe, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0x0b1cb071b77141b1, gtoh((uint64_t)0xb14171b771b01c0b, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0x00000000ffffffff, gtoh((uint64_t)0xffffffff00000000, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0x5555555555555555, gtoh((uint64_t)0x5555555555555555, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0xa0a0a0a0a0a0a0a0, gtoh((uint64_t)0xa0a0a0a0a0a0a0a0, |
| BigEndianByteOrder)); |
| EXPECT_EQ(0x0123cdef, gtoh((uint32_t)0xefcd2301, BigEndianByteOrder)); |
| EXPECT_EQ(0xfedc3210, gtoh((uint32_t)0x1032dcfe, BigEndianByteOrder)); |
| EXPECT_EQ(0x0b1c41b1, gtoh((uint32_t)0xb1411c0b, BigEndianByteOrder)); |
| EXPECT_EQ(0x0000ffff, gtoh((uint32_t)0xffff0000, BigEndianByteOrder)); |
| EXPECT_EQ(0x55555555, gtoh((uint32_t)0x55555555, BigEndianByteOrder)); |
| EXPECT_EQ(0xa0a0a0a0, gtoh((uint32_t)0xa0a0a0a0, BigEndianByteOrder)); |
| EXPECT_EQ(0x01ef, gtoh((uint16_t)0xef01, BigEndianByteOrder)); |
| EXPECT_EQ(0xfe10, gtoh((uint16_t)0x10fe, BigEndianByteOrder)); |
| EXPECT_EQ(0x0bb1, gtoh((uint16_t)0xb10b, BigEndianByteOrder)); |
| EXPECT_EQ(0x00ff, gtoh((uint16_t)0xff00, BigEndianByteOrder)); |
| EXPECT_EQ(0x5555, gtoh((uint16_t)0x5555, BigEndianByteOrder)); |
| EXPECT_EQ(0xa0a0, gtoh((uint16_t)0xa0a0, BigEndianByteOrder)); |
| EXPECT_EQ(0xefcdab8967452301, gtoh((uint64_t)0xefcdab8967452301, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0x1032547698badcfe, gtoh((uint64_t)0x1032547698badcfe, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0xb14171b771b01c0b, gtoh((uint64_t)0xb14171b771b01c0b, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0xffffffff00000000, gtoh((uint64_t)0xffffffff00000000, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0x5555555555555555, gtoh((uint64_t)0x5555555555555555, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0xa0a0a0a0a0a0a0a0, gtoh((uint64_t)0xa0a0a0a0a0a0a0a0, |
| LittleEndianByteOrder)); |
| EXPECT_EQ(0xefcd2301, gtoh((uint32_t)0xefcd2301, LittleEndianByteOrder)); |
| EXPECT_EQ(0x1032dcfe, gtoh((uint32_t)0x1032dcfe, LittleEndianByteOrder)); |
| EXPECT_EQ(0xb1411c0b, gtoh((uint32_t)0xb1411c0b, LittleEndianByteOrder)); |
| EXPECT_EQ(0xffff0000, gtoh((uint32_t)0xffff0000, LittleEndianByteOrder)); |
| EXPECT_EQ(0x55555555, gtoh((uint32_t)0x55555555, LittleEndianByteOrder)); |
| EXPECT_EQ(0xa0a0a0a0, gtoh((uint32_t)0xa0a0a0a0, LittleEndianByteOrder)); |
| EXPECT_EQ(0xef01, gtoh((uint16_t)0xef01, LittleEndianByteOrder)); |
| EXPECT_EQ(0x10fe, gtoh((uint16_t)0x10fe, LittleEndianByteOrder)); |
| EXPECT_EQ(0xb10b, gtoh((uint16_t)0xb10b, LittleEndianByteOrder)); |
| EXPECT_EQ(0xff00, gtoh((uint16_t)0xff00, LittleEndianByteOrder)); |
| EXPECT_EQ(0x5555, gtoh((uint16_t)0x5555, LittleEndianByteOrder)); |
| EXPECT_EQ(0xa0a0, gtoh((uint16_t)0xa0a0, LittleEndianByteOrder)); |
| #else |
| #error Invalid Endianess |
| #endif |
| } |
| |
| TEST(ByteswapTest, betole) |
| { |
| EXPECT_EQ(0x0123456789abcdef, betole((uint64_t)0xefcdab8967452301)); |
| EXPECT_EQ(0xfedcba9876543210, betole((uint64_t)0x1032547698badcfe)); |
| EXPECT_EQ(0x0b1cb071b77141b1, betole((uint64_t)0xb14171b771b01c0b)); |
| EXPECT_EQ(0x00000000ffffffff, betole((uint64_t)0xffffffff00000000)); |
| EXPECT_EQ(0x5555555555555555, betole((uint64_t)0x5555555555555555)); |
| EXPECT_EQ(0xa0a0a0a0a0a0a0a0, betole((uint64_t)0xa0a0a0a0a0a0a0a0)); |
| EXPECT_EQ(0x0123cdef, betole((uint32_t)0xefcd2301)); |
| EXPECT_EQ(0xfedc3210, betole((uint32_t)0x1032dcfe)); |
| EXPECT_EQ(0x0b1c41b1, betole((uint32_t)0xb1411c0b)); |
| EXPECT_EQ(0x0000ffff, betole((uint32_t)0xffff0000)); |
| EXPECT_EQ(0x55555555, betole((uint32_t)0x55555555)); |
| EXPECT_EQ(0xa0a0a0a0, betole((uint32_t)0xa0a0a0a0)); |
| EXPECT_EQ(0x01ef, betole((uint16_t)0xef01)); |
| EXPECT_EQ(0xfe10, betole((uint16_t)0x10fe)); |
| EXPECT_EQ(0x0bb1, betole((uint16_t)0xb10b)); |
| EXPECT_EQ(0x00ff, betole((uint16_t)0xff00)); |
| EXPECT_EQ(0x5555, betole((uint16_t)0x5555)); |
| EXPECT_EQ(0xa0a0, betole((uint16_t)0xa0a0)); |
| } |
| |
| TEST(ByteswapTest, letobe) |
| { |
| EXPECT_EQ(0x0123456789abcdef, letobe((uint64_t)0xefcdab8967452301)); |
| EXPECT_EQ(0xfedcba9876543210, letobe((uint64_t)0x1032547698badcfe)); |
| EXPECT_EQ(0x0b1cb071b77141b1, letobe((uint64_t)0xb14171b771b01c0b)); |
| EXPECT_EQ(0x00000000ffffffff, letobe((uint64_t)0xffffffff00000000)); |
| EXPECT_EQ(0x5555555555555555, letobe((uint64_t)0x5555555555555555)); |
| EXPECT_EQ(0xa0a0a0a0a0a0a0a0, letobe((uint64_t)0xa0a0a0a0a0a0a0a0)); |
| EXPECT_EQ(0x0123cdef, letobe((uint32_t)0xefcd2301)); |
| EXPECT_EQ(0xfedc3210, letobe((uint32_t)0x1032dcfe)); |
| EXPECT_EQ(0x0b1c41b1, letobe((uint32_t)0xb1411c0b)); |
| EXPECT_EQ(0x0000ffff, letobe((uint32_t)0xffff0000)); |
| EXPECT_EQ(0x55555555, letobe((uint32_t)0x55555555)); |
| EXPECT_EQ(0xa0a0a0a0, letobe((uint32_t)0xa0a0a0a0)); |
| EXPECT_EQ(0x01ef, letobe((uint16_t)0xef01)); |
| EXPECT_EQ(0xfe10, letobe((uint16_t)0x10fe)); |
| EXPECT_EQ(0x0bb1, letobe((uint16_t)0xb10b)); |
| EXPECT_EQ(0x00ff, letobe((uint16_t)0xff00)); |
| EXPECT_EQ(0x5555, letobe((uint16_t)0x5555)); |
| EXPECT_EQ(0xa0a0, letobe((uint16_t)0xa0a0)); |
| } |