blob: d054d963021748c91214dc9358ed4fff06e33a0b [file] [log] [blame]
QUICHE teama6ef0a62019-03-07 20:34:33 -05001// Copyright 2017 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "net/third_party/quiche/src/quic/platform/api/quic_endian.h"
6
7#include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
8
9namespace quic {
10namespace test {
11namespace {
12
13const uint16_t k16BitTestData = 0xaabb;
14const uint16_t k16BitSwappedTestData = 0xbbaa;
15const uint32_t k32BitTestData = 0xaabbccdd;
16const uint32_t k32BitSwappedTestData = 0xddccbbaa;
17const uint64_t k64BitTestData = 0xaabbccdd44332211;
18const uint64_t k64BitSwappedTestData = 0x11223344ddccbbaa;
19
20class QuicEndianTest : public QuicTest {};
21
22TEST_F(QuicEndianTest, HostToNet) {
23 if (QuicEndian::HostIsLittleEndian()) {
24 EXPECT_EQ(k16BitSwappedTestData, QuicEndian::HostToNet16(k16BitTestData));
25 EXPECT_EQ(k32BitSwappedTestData, QuicEndian::HostToNet32(k32BitTestData));
26 EXPECT_EQ(k64BitSwappedTestData, QuicEndian::HostToNet64(k64BitTestData));
27 } else {
28 EXPECT_EQ(k16BitTestData, QuicEndian::HostToNet16(k16BitTestData));
29 EXPECT_EQ(k32BitTestData, QuicEndian::HostToNet32(k32BitTestData));
30 EXPECT_EQ(k64BitTestData, QuicEndian::HostToNet64(k64BitTestData));
31 }
32}
33
34TEST_F(QuicEndianTest, NetToHost) {
35 if (QuicEndian::HostIsLittleEndian()) {
36 EXPECT_EQ(k16BitTestData, QuicEndian::NetToHost16(k16BitSwappedTestData));
37 EXPECT_EQ(k32BitTestData, QuicEndian::NetToHost32(k32BitSwappedTestData));
38 EXPECT_EQ(k64BitTestData, QuicEndian::NetToHost64(k64BitSwappedTestData));
39 } else {
40 EXPECT_EQ(k16BitSwappedTestData,
41 QuicEndian::NetToHost16(k16BitSwappedTestData));
42 EXPECT_EQ(k32BitSwappedTestData,
43 QuicEndian::NetToHost32(k32BitSwappedTestData));
44 EXPECT_EQ(k64BitSwappedTestData,
45 QuicEndian::NetToHost64(k64BitSwappedTestData));
46 }
47}
48
49} // namespace
50} // namespace test
51} // namespace quic