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.
TEST(ByteOrderTest,TestSet)19 TEST(ByteOrderTest, TestSet) {
20 uint8_t 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.
TEST(ByteOrderTest,TestGet)62 TEST(ByteOrderTest, TestGet) {
63 uint8_t 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