147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org/*
247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org *  Copyright 2012 The WebRTC Project Authors. All rights reserved.
347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org *
447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org *  Use of this source code is governed by a BSD-style license
547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org *  that can be found in the LICENSE file in the root of the source
647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org *  tree. An additional intellectual property rights grant can be found
747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org *  in the file PATENTS.  All contributing project authors may
847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org *  be found in the AUTHORS file in the root of the source tree.
947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org */
1047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
1147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "webrtc/base/byteorder.h"
1247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
1347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "webrtc/base/basictypes.h"
1447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "webrtc/base/gunit.h"
1547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
1647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgnamespace rtc {
1747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
1847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// Test memory set functions put values into memory in expected order.
1947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(ByteOrderTest, TestSet) {
2047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  uint8 buf[8] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u };
2147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  Set8(buf, 0, 0xfb);
2247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  Set8(buf, 1, 0x12);
2347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0xfb, buf[0]);
2447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x12, buf[1]);
2547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  SetBE16(buf, 0x1234);
2647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x12, buf[0]);
2747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x34, buf[1]);
2847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  SetLE16(buf, 0x1234);
2947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x34, buf[0]);
3047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x12, buf[1]);
3147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  SetBE32(buf, 0x12345678);
3247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x12, buf[0]);
3347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x34, buf[1]);
3447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x56, buf[2]);
3547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x78, buf[3]);
3647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  SetLE32(buf, 0x12345678);
3747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x78, buf[0]);
3847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x56, buf[1]);
3947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x34, buf[2]);
4047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x12, buf[3]);
4147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  SetBE64(buf, UINT64_C(0x0123456789abcdef));
4247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x01, buf[0]);
4347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x23, buf[1]);
4447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x45, buf[2]);
4547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x67, buf[3]);
4647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x89, buf[4]);
4747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0xab, buf[5]);
4847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0xcd, buf[6]);
4947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0xef, buf[7]);
5047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  SetLE64(buf, UINT64_C(0x0123456789abcdef));
5147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0xef, buf[0]);
5247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0xcd, buf[1]);
5347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0xab, buf[2]);
5447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x89, buf[3]);
5547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x67, buf[4]);
5647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x45, buf[5]);
5747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x23, buf[6]);
5847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x01, buf[7]);
5947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
6047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
6147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// Test memory get functions get values from memory in expected order.
6247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(ByteOrderTest, TestGet) {
6347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  uint8 buf[8];
6447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  buf[0] = 0x01u;
6547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  buf[1] = 0x23u;
6647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  buf[2] = 0x45u;
6747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  buf[3] = 0x67u;
6847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  buf[4] = 0x89u;
6947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  buf[5] = 0xabu;
7047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  buf[6] = 0xcdu;
7147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  buf[7] = 0xefu;
7247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x01u, Get8(buf, 0));
7347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x23u, Get8(buf, 1));
7447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x0123u, GetBE16(buf));
7547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x2301u, GetLE16(buf));
7647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x01234567u, GetBE32(buf));
7747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(0x67452301u, GetLE32(buf));
7847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(UINT64_C(0x0123456789abcdef), GetBE64(buf));
7947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  EXPECT_EQ(UINT64_C(0xefcdab8967452301), GetLE64(buf));
8047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
8147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
8247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}  // namespace rtc
8347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
84