blob: 095f0562b57cf224a108021b689c3877a704094e [file] [log] [blame]
Avi Drissmane4622aa2022-09-08 20:36:061// Copyright 2016 The Chromium Authors
robert.bradford1a09b1772016-06-17 23:26:112// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "base/sys_byteorder.h"
6
7#include <stdint.h>
8
palmera988c502016-12-14 09:40:389#include "build/build_config.h"
robert.bradford1a09b1772016-06-17 23:26:1110#include "testing/gtest/include/gtest/gtest.h"
11
12namespace {
13
14const uint16_t k16BitTestData = 0xaabb;
15const uint16_t k16BitSwappedTestData = 0xbbaa;
16const uint32_t k32BitTestData = 0xaabbccdd;
17const uint32_t k32BitSwappedTestData = 0xddccbbaa;
18const uint64_t k64BitTestData = 0xaabbccdd44332211;
19const uint64_t k64BitSwappedTestData = 0x11223344ddccbbaa;
20
21} // namespace
22
robert.bradford1a09b1772016-06-17 23:26:1123TEST(ByteOrderTest, NetToHost16) {
24 uint16_t h = base::NetToHost16(k16BitTestData);
25#if defined(ARCH_CPU_LITTLE_ENDIAN)
26 EXPECT_EQ(k16BitSwappedTestData, h);
27#else
28 EXPECT_EQ(k16BitTestData, h);
29#endif
30}
31
32TEST(ByteOrderTest, NetToHost32) {
33 uint32_t h = base::NetToHost32(k32BitTestData);
34#if defined(ARCH_CPU_LITTLE_ENDIAN)
35 EXPECT_EQ(k32BitSwappedTestData, h);
36#else
37 EXPECT_EQ(k32BitTestData, h);
38#endif
39}
40
41TEST(ByteOrderTest, NetToHost64) {
42 uint64_t h = base::NetToHost64(k64BitTestData);
43#if defined(ARCH_CPU_LITTLE_ENDIAN)
44 EXPECT_EQ(k64BitSwappedTestData, h);
45#else
46 EXPECT_EQ(k64BitTestData, h);
47#endif
48}
49
50TEST(ByteOrderTest, HostToNet16) {
51 uint16_t n = base::HostToNet16(k16BitTestData);
52#if defined(ARCH_CPU_LITTLE_ENDIAN)
53 EXPECT_EQ(k16BitSwappedTestData, n);
54#else
55 EXPECT_EQ(k16BitTestData, n);
56#endif
57}
58
59TEST(ByteOrderTest, HostToNet32) {
60 uint32_t n = base::HostToNet32(k32BitTestData);
61#if defined(ARCH_CPU_LITTLE_ENDIAN)
62 EXPECT_EQ(k32BitSwappedTestData, n);
63#else
64 EXPECT_EQ(k32BitTestData, n);
65#endif
66}
67
68TEST(ByteOrderTest, HostToNet64) {
69 uint64_t n = base::HostToNet64(k64BitTestData);
70#if defined(ARCH_CPU_LITTLE_ENDIAN)
71 EXPECT_EQ(k64BitSwappedTestData, n);
72#else
73 EXPECT_EQ(k64BitTestData, n);
74#endif
75}