1 /* 2 * Copyright 2012 The WebRTC Project Authors. All rights reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #include "webrtc/base/byteorder.h" 12 13 #include "webrtc/base/basictypes.h" 14 #include "webrtc/base/gunit.h" 15 16 namespace rtc { 17 18 // Test memory set functions put values into memory in expected order. 19 TEST(ByteOrderTest, TestSet) { 20 uint8 buf[8] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u }; 21 Set8(buf, 0, 0xfb); 22 Set8(buf, 1, 0x12); 23 EXPECT_EQ(0xfb, buf[0]); 24 EXPECT_EQ(0x12, buf[1]); 25 SetBE16(buf, 0x1234); 26 EXPECT_EQ(0x12, buf[0]); 27 EXPECT_EQ(0x34, buf[1]); 28 SetLE16(buf, 0x1234); 29 EXPECT_EQ(0x34, buf[0]); 30 EXPECT_EQ(0x12, buf[1]); 31 SetBE32(buf, 0x12345678); 32 EXPECT_EQ(0x12, buf[0]); 33 EXPECT_EQ(0x34, buf[1]); 34 EXPECT_EQ(0x56, buf[2]); 35 EXPECT_EQ(0x78, buf[3]); 36 SetLE32(buf, 0x12345678); 37 EXPECT_EQ(0x78, buf[0]); 38 EXPECT_EQ(0x56, buf[1]); 39 EXPECT_EQ(0x34, buf[2]); 40 EXPECT_EQ(0x12, buf[3]); 41 SetBE64(buf, UINT64_C(0x0123456789abcdef)); 42 EXPECT_EQ(0x01, buf[0]); 43 EXPECT_EQ(0x23, buf[1]); 44 EXPECT_EQ(0x45, buf[2]); 45 EXPECT_EQ(0x67, buf[3]); 46 EXPECT_EQ(0x89, buf[4]); 47 EXPECT_EQ(0xab, buf[5]); 48 EXPECT_EQ(0xcd, buf[6]); 49 EXPECT_EQ(0xef, buf[7]); 50 SetLE64(buf, UINT64_C(0x0123456789abcdef)); 51 EXPECT_EQ(0xef, buf[0]); 52 EXPECT_EQ(0xcd, buf[1]); 53 EXPECT_EQ(0xab, buf[2]); 54 EXPECT_EQ(0x89, buf[3]); 55 EXPECT_EQ(0x67, buf[4]); 56 EXPECT_EQ(0x45, buf[5]); 57 EXPECT_EQ(0x23, buf[6]); 58 EXPECT_EQ(0x01, buf[7]); 59 } 60 61 // Test memory get functions get values from memory in expected order. 62 TEST(ByteOrderTest, TestGet) { 63 uint8 buf[8]; 64 buf[0] = 0x01u; 65 buf[1] = 0x23u; 66 buf[2] = 0x45u; 67 buf[3] = 0x67u; 68 buf[4] = 0x89u; 69 buf[5] = 0xabu; 70 buf[6] = 0xcdu; 71 buf[7] = 0xefu; 72 EXPECT_EQ(0x01u, Get8(buf, 0)); 73 EXPECT_EQ(0x23u, Get8(buf, 1)); 74 EXPECT_EQ(0x0123u, GetBE16(buf)); 75 EXPECT_EQ(0x2301u, GetLE16(buf)); 76 EXPECT_EQ(0x01234567u, GetBE32(buf)); 77 EXPECT_EQ(0x67452301u, GetLE32(buf)); 78 EXPECT_EQ(UINT64_C(0x0123456789abcdef), GetBE64(buf)); 79 EXPECT_EQ(UINT64_C(0xefcdab8967452301), GetLE64(buf)); 80 } 81 82 } // namespace rtc 83 84