blob: cb73a9b2ecec50419ce82bd3f032d2316397d1e9 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "spdy/platform/api/spdy_string_utils.h"
#include <cstdint>
#include "absl/strings/string_view.h"
#include "common/platform/api/quiche_test.h"
namespace spdy {
namespace test {
namespace {
TEST(SpdyStringUtilsTest, SpdyHexDigitToInt) {
EXPECT_EQ(0, SpdyHexDigitToInt('0'));
EXPECT_EQ(1, SpdyHexDigitToInt('1'));
EXPECT_EQ(2, SpdyHexDigitToInt('2'));
EXPECT_EQ(3, SpdyHexDigitToInt('3'));
EXPECT_EQ(4, SpdyHexDigitToInt('4'));
EXPECT_EQ(5, SpdyHexDigitToInt('5'));
EXPECT_EQ(6, SpdyHexDigitToInt('6'));
EXPECT_EQ(7, SpdyHexDigitToInt('7'));
EXPECT_EQ(8, SpdyHexDigitToInt('8'));
EXPECT_EQ(9, SpdyHexDigitToInt('9'));
EXPECT_EQ(10, SpdyHexDigitToInt('a'));
EXPECT_EQ(11, SpdyHexDigitToInt('b'));
EXPECT_EQ(12, SpdyHexDigitToInt('c'));
EXPECT_EQ(13, SpdyHexDigitToInt('d'));
EXPECT_EQ(14, SpdyHexDigitToInt('e'));
EXPECT_EQ(15, SpdyHexDigitToInt('f'));
EXPECT_EQ(10, SpdyHexDigitToInt('A'));
EXPECT_EQ(11, SpdyHexDigitToInt('B'));
EXPECT_EQ(12, SpdyHexDigitToInt('C'));
EXPECT_EQ(13, SpdyHexDigitToInt('D'));
EXPECT_EQ(14, SpdyHexDigitToInt('E'));
EXPECT_EQ(15, SpdyHexDigitToInt('F'));
}
TEST(SpdyStringUtilsTest, SpdyHexDecodeToUInt32) {
uint32_t out;
EXPECT_TRUE(SpdyHexDecodeToUInt32("0", &out));
EXPECT_EQ(0u, out);
EXPECT_TRUE(SpdyHexDecodeToUInt32("00", &out));
EXPECT_EQ(0u, out);
EXPECT_TRUE(SpdyHexDecodeToUInt32("0000000", &out));
EXPECT_EQ(0u, out);
EXPECT_TRUE(SpdyHexDecodeToUInt32("00000000", &out));
EXPECT_EQ(0u, out);
EXPECT_TRUE(SpdyHexDecodeToUInt32("1", &out));
EXPECT_EQ(1u, out);
EXPECT_TRUE(SpdyHexDecodeToUInt32("ffffFFF", &out));
EXPECT_EQ(0xFFFFFFFu, out);
EXPECT_TRUE(SpdyHexDecodeToUInt32("fFfFffFf", &out));
EXPECT_EQ(0xFFFFFFFFu, out);
EXPECT_TRUE(SpdyHexDecodeToUInt32("01AEF", &out));
EXPECT_EQ(0x1AEFu, out);
EXPECT_TRUE(SpdyHexDecodeToUInt32("abcde", &out));
EXPECT_EQ(0xABCDEu, out);
EXPECT_FALSE(SpdyHexDecodeToUInt32("", &out));
EXPECT_FALSE(SpdyHexDecodeToUInt32("111111111", &out));
EXPECT_FALSE(SpdyHexDecodeToUInt32("1111111111", &out));
EXPECT_FALSE(SpdyHexDecodeToUInt32("0x1111", &out));
}
TEST(SpdyStringUtilsTest, SpdyHexEncode) {
unsigned char bytes[] = {0x01, 0xff, 0x02, 0xfe, 0x03, 0x80, 0x81};
EXPECT_EQ("01ff02fe038081",
SpdyHexEncode(reinterpret_cast<char*>(bytes), sizeof(bytes)));
}
} // namespace
} // namespace test
} // namespace spdy