diff --git a/Source/Tests/endian.cpp b/Source/Tests/endian.cpp index 258b8e64..440a1c8f 100644 --- a/Source/Tests/endian.cpp +++ b/Source/Tests/endian.cpp @@ -5,7 +5,8 @@ class EndianTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE( EndianTest ); CPPUNIT_TEST( testSwapEndian ); - CPPUNIT_TEST( testFixEndian ); + CPPUNIT_TEST( testFixEndian16 ); + CPPUNIT_TEST( testFixEndian32 ); CPPUNIT_TEST_SUITE_END(); public: @@ -13,9 +14,12 @@ public: CPPUNIT_ASSERT_EQUAL( (int)0x78563412, (int)SWAP_ENDIAN_INT32(0x12345678) ); CPPUNIT_ASSERT_EQUAL( (int)0xFFFFFFFF, (int)SWAP_ENDIAN_INT32(0xFFFFFFFF) ); CPPUNIT_ASSERT_EQUAL( (int)0, (int)SWAP_ENDIAN_INT32(0) ); + CPPUNIT_ASSERT_EQUAL( (int)0x3412, (int)SWAP_ENDIAN_INT16(0x1234) ); + CPPUNIT_ASSERT_EQUAL( (int)0xFFFF, (int)SWAP_ENDIAN_INT16(0xFFFF) ); + CPPUNIT_ASSERT_EQUAL( (int)0, (int)SWAP_ENDIAN_INT16(0) ); } - void testFixEndian() { + void testFixEndian32() { int i=1; int actual = 0x12345678; FIX_ENDIAN_INT32_INPLACE(actual); @@ -31,6 +35,22 @@ public: CPPUNIT_ASSERT_EQUAL(expected, actual); } + void testFixEndian16() { + int i=1; + int actual = 0x1234; + FIX_ENDIAN_INT16_INPLACE(actual); + int expected; + if (((char*)&i)[0] == 1) { + // little endian + expected = 0x1234; + } + else { + // big endian + expected = 0x3412; + } + CPPUNIT_ASSERT_EQUAL(expected, actual); + } + }; CPPUNIT_TEST_SUITE_REGISTRATION( EndianTest ); \ No newline at end of file