blob: 30dc5faaf8ea9d9441f2058af594d6ba460f5235 [file] [log] [blame]
henrike@webrtc.orgf0488722014-05-13 18:00:26 +00001/*
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
pbosc7c26a02017-01-02 08:42:32 -080011#include <stdint.h>
pbos7eb0e232017-01-02 07:32:25 -080012
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020013#include "rtc_base/byteorder.h"
14#include "rtc_base/gunit.h"
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000015
16namespace rtc {
17
18// Test memory set functions put values into memory in expected order.
19TEST(ByteOrderTest, TestSet) {
Peter Boström0c4e06b2015-10-07 12:23:21 +020020 uint8_t buf[8] = {0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u};
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000021 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.
62TEST(ByteOrderTest, TestGet) {
Peter Boström0c4e06b2015-10-07 12:23:21 +020063 uint8_t buf[8];
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000064 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