blob: a8b053396754d85f4b8e24e58f8b7eb2552f1f2b [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
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#include "rtc_base/basictypes.h"
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000012
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020013#include "rtc_base/gunit.h"
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000014
15namespace rtc {
16
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000017TEST(BasicTypesTest, Endian) {
Peter Boström0c4e06b2015-10-07 12:23:21 +020018 uint16_t v16 = 0x1234u;
19 uint8_t first_byte = *reinterpret_cast<uint8_t*>(&v16);
henrikg71df77b2015-09-18 01:48:34 -070020#if defined(RTC_ARCH_CPU_LITTLE_ENDIAN)
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000021 EXPECT_EQ(0x34u, first_byte);
henrikg71df77b2015-09-18 01:48:34 -070022#elif defined(RTC_ARCH_CPU_BIG_ENDIAN)
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000023 EXPECT_EQ(0x12u, first_byte);
24#endif
25}
26
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000027TEST(BasicTypesTest, SizeOfConstants) {
28 EXPECT_EQ(8u, sizeof(INT64_C(0)));
29 EXPECT_EQ(8u, sizeof(UINT64_C(0)));
30 EXPECT_EQ(8u, sizeof(INT64_C(0x1234567887654321)));
31 EXPECT_EQ(8u, sizeof(UINT64_C(0x8765432112345678)));
32}
33
34// Test CPU_ macros
35#if !defined(CPU_ARM) && defined(__arm__)
36#error expected CPU_ARM to be defined.
37#endif
38#if !defined(CPU_X86) && (defined(WEBRTC_WIN) || defined(WEBRTC_MAC) && !defined(WEBRTC_IOS))
39#error expected CPU_X86 to be defined.
40#endif
henrikg71df77b2015-09-18 01:48:34 -070041#if !defined(RTC_ARCH_CPU_LITTLE_ENDIAN) && \
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000042 (defined(WEBRTC_WIN) || defined(WEBRTC_MAC) && !defined(WEBRTC_IOS) || defined(CPU_X86))
henrikg71df77b2015-09-18 01:48:34 -070043#error expected RTC_ARCH_CPU_LITTLE_ENDIAN to be defined.
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000044#endif
45
46// TODO(fbarchard): Test all macros in basictypes.h
47
48} // namespace rtc