1f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang/*
2f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang *  Copyright 2012 The LibYuv Project Authors. All rights reserved.
3f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang *
4f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang *  Use of this source code is governed by a BSD-style license
5f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang *  that can be found in the LICENSE file in the root of the source
6f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang *  tree. An additional intellectual property rights grant can be found
7f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang *  in the file PATENTS. All contributing project authors may
8f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang *  be found in the AUTHORS file in the root of the source tree.
9f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang */
10f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang
11f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#include "../unit_test/unit_test.h"
12f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#include "libyuv/basic_types.h"
13f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang
14f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangnamespace libyuv {
15f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang
16f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu KuangTEST_F(LibYUVBaseTest, Endian) {
17f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  uint16 v16 = 0x1234u;
18f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  uint8 first_byte = *reinterpret_cast<uint8*>(&v16);
19f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if defined(LIBYUV_LITTLE_ENDIAN)
20f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_EQ(0x34u, first_byte);
21f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#else
22f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_EQ(0x12u, first_byte);
23f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif
24f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang}
25f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang
26f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu KuangTEST_F(LibYUVBaseTest, SizeOfTypes) {
27f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  int8 i8 = -1;
28f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  uint8 u8 = 1u;
29f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  int16 i16 = -1;
30f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  uint16 u16 = 1u;
31f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  int32 i32 = -1;
32f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  uint32 u32 = 1u;
33f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  int64 i64 = -1;
34f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  uint64 u64 = 1u;
35f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_EQ(1u, sizeof(i8));
36f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_EQ(1u, sizeof(u8));
37f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_EQ(2u, sizeof(i16));
38f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_EQ(2u, sizeof(u16));
39f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_EQ(4u, sizeof(i32));
40f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_EQ(4u, sizeof(u32));
41f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_EQ(8u, sizeof(i64));
42f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_EQ(8u, sizeof(u64));
43f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_GT(0, i8);
44f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_LT(0u, u8);
45f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_GT(0, i16);
46f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_LT(0u, u16);
47f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_GT(0, i32);
48f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_LT(0u, u32);
49f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_GT(0, i64);
50f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_LT(0u, u64);
51f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang}
52f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang
53f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu KuangTEST_F(LibYUVBaseTest, SizeOfConstants) {
54f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_EQ(8u, sizeof(INT64_C(0)));
55f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_EQ(8u, sizeof(UINT64_C(0)));
56f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_EQ(8u, sizeof(INT64_C(0x1234567887654321)));
57f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang  EXPECT_EQ(8u, sizeof(UINT64_C(0x8765432112345678)));
58f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang}
59f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang
60f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang}  // namespace libyuv
61