about summary refs log tree commit diff
path: root/third_party/abseil_cpp/absl/strings/escaping_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/abseil_cpp/absl/strings/escaping_test.cc')
-rw-r--r--third_party/abseil_cpp/absl/strings/escaping_test.cc664
1 files changed, 0 insertions, 664 deletions
diff --git a/third_party/abseil_cpp/absl/strings/escaping_test.cc b/third_party/abseil_cpp/absl/strings/escaping_test.cc
deleted file mode 100644
index 45671a0ed5..0000000000
--- a/third_party/abseil_cpp/absl/strings/escaping_test.cc
+++ /dev/null
@@ -1,664 +0,0 @@
-// Copyright 2017 The Abseil Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "absl/strings/escaping.h"
-
-#include <array>
-#include <cstdio>
-#include <cstring>
-#include <memory>
-#include <vector>
-
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-#include "absl/container/fixed_array.h"
-#include "absl/strings/str_cat.h"
-
-#include "absl/strings/internal/escaping_test_common.h"
-
-namespace {
-
-struct epair {
-  std::string escaped;
-  std::string unescaped;
-};
-
-TEST(CEscape, EscapeAndUnescape) {
-  const std::string inputs[] = {
-      std::string("foo\nxx\r\b\0023"),
-      std::string(""),
-      std::string("abc"),
-      std::string("\1chad_rules"),
-      std::string("\1arnar_drools"),
-      std::string("xxxx\r\t'\"\\"),
-      std::string("\0xx\0", 4),
-      std::string("\x01\x31"),
-      std::string("abc\xb\x42\141bc"),
-      std::string("123\1\x31\x32\x33"),
-      std::string("\xc1\xca\x1b\x62\x19o\xcc\x04"),
-      std::string(
-          "\\\"\xe8\xb0\xb7\xe6\xad\x8c\\\" is Google\\\'s Chinese name"),
-  };
-  // Do this twice, once for octal escapes and once for hex escapes.
-  for (int kind = 0; kind < 4; kind++) {
-    for (const std::string& original : inputs) {
-      std::string escaped;
-      switch (kind) {
-        case 0:
-          escaped = absl::CEscape(original);
-          break;
-        case 1:
-          escaped = absl::CHexEscape(original);
-          break;
-        case 2:
-          escaped = absl::Utf8SafeCEscape(original);
-          break;
-        case 3:
-          escaped = absl::Utf8SafeCHexEscape(original);
-          break;
-      }
-      std::string unescaped_str;
-      EXPECT_TRUE(absl::CUnescape(escaped, &unescaped_str));
-      EXPECT_EQ(unescaped_str, original);
-
-      unescaped_str.erase();
-      std::string error;
-      EXPECT_TRUE(absl::CUnescape(escaped, &unescaped_str, &error));
-      EXPECT_EQ(error, "");
-
-      // Check in-place unescaping
-      std::string s = escaped;
-      EXPECT_TRUE(absl::CUnescape(s, &s));
-      ASSERT_EQ(s, original);
-    }
-  }
-  // Check that all possible two character strings can be escaped then
-  // unescaped successfully.
-  for (int char0 = 0; char0 < 256; char0++) {
-    for (int char1 = 0; char1 < 256; char1++) {
-      char chars[2];
-      chars[0] = char0;
-      chars[1] = char1;
-      std::string s(chars, 2);
-      std::string escaped = absl::CHexEscape(s);
-      std::string unescaped;
-      EXPECT_TRUE(absl::CUnescape(escaped, &unescaped));
-      EXPECT_EQ(s, unescaped);
-    }
-  }
-}
-
-TEST(CEscape, BasicEscaping) {
-  epair oct_values[] = {
-      {"foo\\rbar\\nbaz\\t", "foo\rbar\nbaz\t"},
-      {"\\'full of \\\"sound\\\" and \\\"fury\\\"\\'",
-       "'full of \"sound\" and \"fury\"'"},
-      {"signi\\\\fying\\\\ nothing\\\\", "signi\\fying\\ nothing\\"},
-      {"\\010\\t\\n\\013\\014\\r", "\010\011\012\013\014\015"}
-  };
-  epair hex_values[] = {
-      {"ubik\\rubik\\nubik\\t", "ubik\rubik\nubik\t"},
-      {"I\\\'ve just seen a \\\"face\\\"",
-       "I've just seen a \"face\""},
-      {"hel\\\\ter\\\\skel\\\\ter\\\\", "hel\\ter\\skel\\ter\\"},
-      {"\\x08\\t\\n\\x0b\\x0c\\r", "\010\011\012\013\014\015"}
-  };
-  epair utf8_oct_values[] = {
-      {"\xe8\xb0\xb7\xe6\xad\x8c\\r\xe8\xb0\xb7\xe6\xad\x8c\\nbaz\\t",
-       "\xe8\xb0\xb7\xe6\xad\x8c\r\xe8\xb0\xb7\xe6\xad\x8c\nbaz\t"},
-      {"\\\"\xe8\xb0\xb7\xe6\xad\x8c\\\" is Google\\\'s Chinese name",
-       "\"\xe8\xb0\xb7\xe6\xad\x8c\" is Google\'s Chinese name"},
-      {"\xe3\x83\xa1\xe3\x83\xbc\xe3\x83\xab\\\\are\\\\Japanese\\\\chars\\\\",
-       "\xe3\x83\xa1\xe3\x83\xbc\xe3\x83\xab\\are\\Japanese\\chars\\"},
-      {"\xed\x81\xac\xeb\xa1\xac\\010\\t\\n\\013\\014\\r",
-       "\xed\x81\xac\xeb\xa1\xac\010\011\012\013\014\015"}
-  };
-  epair utf8_hex_values[] = {
-      {"\x20\xe4\xbd\xa0\\t\xe5\xa5\xbd,\\r!\\n",
-       "\x20\xe4\xbd\xa0\t\xe5\xa5\xbd,\r!\n"},
-      {"\xe8\xa9\xa6\xe9\xa8\x93\\\' means \\\"test\\\"",
-       "\xe8\xa9\xa6\xe9\xa8\x93\' means \"test\""},
-      {"\\\\\xe6\x88\x91\\\\:\\\\\xe6\x9d\xa8\xe6\xac\xa2\\\\",
-       "\\\xe6\x88\x91\\:\\\xe6\x9d\xa8\xe6\xac\xa2\\"},
-      {"\xed\x81\xac\xeb\xa1\xac\\x08\\t\\n\\x0b\\x0c\\r",
-       "\xed\x81\xac\xeb\xa1\xac\010\011\012\013\014\015"}
-  };
-
-  for (const epair& val : oct_values) {
-    std::string escaped = absl::CEscape(val.unescaped);
-    EXPECT_EQ(escaped, val.escaped);
-  }
-  for (const epair& val : hex_values) {
-    std::string escaped = absl::CHexEscape(val.unescaped);
-    EXPECT_EQ(escaped, val.escaped);
-  }
-  for (const epair& val : utf8_oct_values) {
-    std::string escaped = absl::Utf8SafeCEscape(val.unescaped);
-    EXPECT_EQ(escaped, val.escaped);
-  }
-  for (const epair& val : utf8_hex_values) {
-    std::string escaped = absl::Utf8SafeCHexEscape(val.unescaped);
-    EXPECT_EQ(escaped, val.escaped);
-  }
-}
-
-TEST(Unescape, BasicFunction) {
-  epair tests[] =
-    {{"", ""},
-     {"\\u0030", "0"},
-     {"\\u00A3", "\xC2\xA3"},
-     {"\\u22FD", "\xE2\x8B\xBD"},
-     {"\\U00010000", "\xF0\x90\x80\x80"},
-     {"\\U0010FFFD", "\xF4\x8F\xBF\xBD"}};
-  for (const epair& val : tests) {
-    std::string out;
-    EXPECT_TRUE(absl::CUnescape(val.escaped, &out));
-    EXPECT_EQ(out, val.unescaped);
-  }
-  std::string bad[] = {"\\u1",         // too short
-                       "\\U1",         // too short
-                       "\\Uffffff",    // exceeds 0x10ffff (largest Unicode)
-                       "\\U00110000",  // exceeds 0x10ffff (largest Unicode)
-                       "\\uD835",      // surrogate character (D800-DFFF)
-                       "\\U0000DD04",  // surrogate character (D800-DFFF)
-                       "\\777",        // exceeds 0xff
-                       "\\xABCD"};     // exceeds 0xff
-  for (const std::string& e : bad) {
-    std::string error;
-    std::string out;
-    EXPECT_FALSE(absl::CUnescape(e, &out, &error));
-    EXPECT_FALSE(error.empty());
-
-    out.erase();
-    EXPECT_FALSE(absl::CUnescape(e, &out));
-  }
-}
-
-class CUnescapeTest : public testing::Test {
- protected:
-  static const char kStringWithMultipleOctalNulls[];
-  static const char kStringWithMultipleHexNulls[];
-  static const char kStringWithMultipleUnicodeNulls[];
-
-  std::string result_string_;
-};
-
-const char CUnescapeTest::kStringWithMultipleOctalNulls[] =
-    "\\0\\n"    // null escape \0 plus newline
-    "0\\n"      // just a number 0 (not a null escape) plus newline
-    "\\00\\12"  // null escape \00 plus octal newline code
-    "\\000";    // null escape \000
-
-// This has the same ingredients as kStringWithMultipleOctalNulls
-// but with \x hex escapes instead of octal escapes.
-const char CUnescapeTest::kStringWithMultipleHexNulls[] =
-    "\\x0\\n"
-    "0\\n"
-    "\\x00\\xa"
-    "\\x000";
-
-const char CUnescapeTest::kStringWithMultipleUnicodeNulls[] =
-    "\\u0000\\n"    // short-form (4-digit) null escape plus newline
-    "0\\n"          // just a number 0 (not a null escape) plus newline
-    "\\U00000000";  // long-form (8-digit) null escape
-
-TEST_F(CUnescapeTest, Unescapes1CharOctalNull) {
-  std::string original_string = "\\0";
-  EXPECT_TRUE(absl::CUnescape(original_string, &result_string_));
-  EXPECT_EQ(std::string("\0", 1), result_string_);
-}
-
-TEST_F(CUnescapeTest, Unescapes2CharOctalNull) {
-  std::string original_string = "\\00";
-  EXPECT_TRUE(absl::CUnescape(original_string, &result_string_));
-  EXPECT_EQ(std::string("\0", 1), result_string_);
-}
-
-TEST_F(CUnescapeTest, Unescapes3CharOctalNull) {
-  std::string original_string = "\\000";
-  EXPECT_TRUE(absl::CUnescape(original_string, &result_string_));
-  EXPECT_EQ(std::string("\0", 1), result_string_);
-}
-
-TEST_F(CUnescapeTest, Unescapes1CharHexNull) {
-  std::string original_string = "\\x0";
-  EXPECT_TRUE(absl::CUnescape(original_string, &result_string_));
-  EXPECT_EQ(std::string("\0", 1), result_string_);
-}
-
-TEST_F(CUnescapeTest, Unescapes2CharHexNull) {
-  std::string original_string = "\\x00";
-  EXPECT_TRUE(absl::CUnescape(original_string, &result_string_));
-  EXPECT_EQ(std::string("\0", 1), result_string_);
-}
-
-TEST_F(CUnescapeTest, Unescapes3CharHexNull) {
-  std::string original_string = "\\x000";
-  EXPECT_TRUE(absl::CUnescape(original_string, &result_string_));
-  EXPECT_EQ(std::string("\0", 1), result_string_);
-}
-
-TEST_F(CUnescapeTest, Unescapes4CharUnicodeNull) {
-  std::string original_string = "\\u0000";
-  EXPECT_TRUE(absl::CUnescape(original_string, &result_string_));
-  EXPECT_EQ(std::string("\0", 1), result_string_);
-}
-
-TEST_F(CUnescapeTest, Unescapes8CharUnicodeNull) {
-  std::string original_string = "\\U00000000";
-  EXPECT_TRUE(absl::CUnescape(original_string, &result_string_));
-  EXPECT_EQ(std::string("\0", 1), result_string_);
-}
-
-TEST_F(CUnescapeTest, UnescapesMultipleOctalNulls) {
-  std::string original_string(kStringWithMultipleOctalNulls);
-  EXPECT_TRUE(absl::CUnescape(original_string, &result_string_));
-  // All escapes, including newlines and null escapes, should have been
-  // converted to the equivalent characters.
-  EXPECT_EQ(std::string("\0\n"
-                        "0\n"
-                        "\0\n"
-                        "\0",
-                        7),
-            result_string_);
-}
-
-
-TEST_F(CUnescapeTest, UnescapesMultipleHexNulls) {
-  std::string original_string(kStringWithMultipleHexNulls);
-  EXPECT_TRUE(absl::CUnescape(original_string, &result_string_));
-  EXPECT_EQ(std::string("\0\n"
-                        "0\n"
-                        "\0\n"
-                        "\0",
-                        7),
-            result_string_);
-}
-
-TEST_F(CUnescapeTest, UnescapesMultipleUnicodeNulls) {
-  std::string original_string(kStringWithMultipleUnicodeNulls);
-  EXPECT_TRUE(absl::CUnescape(original_string, &result_string_));
-  EXPECT_EQ(std::string("\0\n"
-                        "0\n"
-                        "\0",
-                        5),
-            result_string_);
-}
-
-static struct {
-  absl::string_view plaintext;
-  absl::string_view cyphertext;
-} const base64_tests[] = {
-    // Empty string.
-    {{"", 0}, {"", 0}},
-    {{nullptr, 0},
-     {"", 0}},  // if length is zero, plaintext ptr must be ignored!
-
-    // Basic bit patterns;
-    // values obtained with "echo -n '...' | uuencode -m test"
-
-    {{"\000", 1}, "AA=="},
-    {{"\001", 1}, "AQ=="},
-    {{"\002", 1}, "Ag=="},
-    {{"\004", 1}, "BA=="},
-    {{"\010", 1}, "CA=="},
-    {{"\020", 1}, "EA=="},
-    {{"\040", 1}, "IA=="},
-    {{"\100", 1}, "QA=="},
-    {{"\200", 1}, "gA=="},
-
-    {{"\377", 1}, "/w=="},
-    {{"\376", 1}, "/g=="},
-    {{"\375", 1}, "/Q=="},
-    {{"\373", 1}, "+w=="},
-    {{"\367", 1}, "9w=="},
-    {{"\357", 1}, "7w=="},
-    {{"\337", 1}, "3w=="},
-    {{"\277", 1}, "vw=="},
-    {{"\177", 1}, "fw=="},
-    {{"\000\000", 2}, "AAA="},
-    {{"\000\001", 2}, "AAE="},
-    {{"\000\002", 2}, "AAI="},
-    {{"\000\004", 2}, "AAQ="},
-    {{"\000\010", 2}, "AAg="},
-    {{"\000\020", 2}, "ABA="},
-    {{"\000\040", 2}, "ACA="},
-    {{"\000\100", 2}, "AEA="},
-    {{"\000\200", 2}, "AIA="},
-    {{"\001\000", 2}, "AQA="},
-    {{"\002\000", 2}, "AgA="},
-    {{"\004\000", 2}, "BAA="},
-    {{"\010\000", 2}, "CAA="},
-    {{"\020\000", 2}, "EAA="},
-    {{"\040\000", 2}, "IAA="},
-    {{"\100\000", 2}, "QAA="},
-    {{"\200\000", 2}, "gAA="},
-
-    {{"\377\377", 2}, "//8="},
-    {{"\377\376", 2}, "//4="},
-    {{"\377\375", 2}, "//0="},
-    {{"\377\373", 2}, "//s="},
-    {{"\377\367", 2}, "//c="},
-    {{"\377\357", 2}, "/+8="},
-    {{"\377\337", 2}, "/98="},
-    {{"\377\277", 2}, "/78="},
-    {{"\377\177", 2}, "/38="},
-    {{"\376\377", 2}, "/v8="},
-    {{"\375\377", 2}, "/f8="},
-    {{"\373\377", 2}, "+/8="},
-    {{"\367\377", 2}, "9/8="},
-    {{"\357\377", 2}, "7/8="},
-    {{"\337\377", 2}, "3/8="},
-    {{"\277\377", 2}, "v/8="},
-    {{"\177\377", 2}, "f/8="},
-
-    {{"\000\000\000", 3}, "AAAA"},
-    {{"\000\000\001", 3}, "AAAB"},
-    {{"\000\000\002", 3}, "AAAC"},
-    {{"\000\000\004", 3}, "AAAE"},
-    {{"\000\000\010", 3}, "AAAI"},
-    {{"\000\000\020", 3}, "AAAQ"},
-    {{"\000\000\040", 3}, "AAAg"},
-    {{"\000\000\100", 3}, "AABA"},
-    {{"\000\000\200", 3}, "AACA"},
-    {{"\000\001\000", 3}, "AAEA"},
-    {{"\000\002\000", 3}, "AAIA"},
-    {{"\000\004\000", 3}, "AAQA"},
-    {{"\000\010\000", 3}, "AAgA"},
-    {{"\000\020\000", 3}, "ABAA"},
-    {{"\000\040\000", 3}, "ACAA"},
-    {{"\000\100\000", 3}, "AEAA"},
-    {{"\000\200\000", 3}, "AIAA"},
-    {{"\001\000\000", 3}, "AQAA"},
-    {{"\002\000\000", 3}, "AgAA"},
-    {{"\004\000\000", 3}, "BAAA"},
-    {{"\010\000\000", 3}, "CAAA"},
-    {{"\020\000\000", 3}, "EAAA"},
-    {{"\040\000\000", 3}, "IAAA"},
-    {{"\100\000\000", 3}, "QAAA"},
-    {{"\200\000\000", 3}, "gAAA"},
-
-    {{"\377\377\377", 3}, "////"},
-    {{"\377\377\376", 3}, "///+"},
-    {{"\377\377\375", 3}, "///9"},
-    {{"\377\377\373", 3}, "///7"},
-    {{"\377\377\367", 3}, "///3"},
-    {{"\377\377\357", 3}, "///v"},
-    {{"\377\377\337", 3}, "///f"},
-    {{"\377\377\277", 3}, "//+/"},
-    {{"\377\377\177", 3}, "//9/"},
-    {{"\377\376\377", 3}, "//7/"},
-    {{"\377\375\377", 3}, "//3/"},
-    {{"\377\373\377", 3}, "//v/"},
-    {{"\377\367\377", 3}, "//f/"},
-    {{"\377\357\377", 3}, "/+//"},
-    {{"\377\337\377", 3}, "/9//"},
-    {{"\377\277\377", 3}, "/7//"},
-    {{"\377\177\377", 3}, "/3//"},
-    {{"\376\377\377", 3}, "/v//"},
-    {{"\375\377\377", 3}, "/f//"},
-    {{"\373\377\377", 3}, "+///"},
-    {{"\367\377\377", 3}, "9///"},
-    {{"\357\377\377", 3}, "7///"},
-    {{"\337\377\377", 3}, "3///"},
-    {{"\277\377\377", 3}, "v///"},
-    {{"\177\377\377", 3}, "f///"},
-
-    // Random numbers: values obtained with
-    //
-    //  #! /bin/bash
-    //  dd bs=$1 count=1 if=/dev/random of=/tmp/bar.random
-    //  od -N $1 -t o1 /tmp/bar.random
-    //  uuencode -m test < /tmp/bar.random
-    //
-    // where $1 is the number of bytes (2, 3)
-
-    {{"\243\361", 2}, "o/E="},
-    {{"\024\167", 2}, "FHc="},
-    {{"\313\252", 2}, "y6o="},
-    {{"\046\041", 2}, "JiE="},
-    {{"\145\236", 2}, "ZZ4="},
-    {{"\254\325", 2}, "rNU="},
-    {{"\061\330", 2}, "Mdg="},
-    {{"\245\032", 2}, "pRo="},
-    {{"\006\000", 2}, "BgA="},
-    {{"\375\131", 2}, "/Vk="},
-    {{"\303\210", 2}, "w4g="},
-    {{"\040\037", 2}, "IB8="},
-    {{"\261\372", 2}, "sfo="},
-    {{"\335\014", 2}, "3Qw="},
-    {{"\233\217", 2}, "m48="},
-    {{"\373\056", 2}, "+y4="},
-    {{"\247\232", 2}, "p5o="},
-    {{"\107\053", 2}, "Rys="},
-    {{"\204\077", 2}, "hD8="},
-    {{"\276\211", 2}, "vok="},
-    {{"\313\110", 2}, "y0g="},
-    {{"\363\376", 2}, "8/4="},
-    {{"\251\234", 2}, "qZw="},
-    {{"\103\262", 2}, "Q7I="},
-    {{"\142\312", 2}, "Yso="},
-    {{"\067\211", 2}, "N4k="},
-    {{"\220\001", 2}, "kAE="},
-    {{"\152\240", 2}, "aqA="},
-    {{"\367\061", 2}, "9zE="},
-    {{"\133\255", 2}, "W60="},
-    {{"\176\035", 2}, "fh0="},
-    {{"\032\231", 2}, "Gpk="},
-
-    {{"\013\007\144", 3}, "Cwdk"},
-    {{"\030\112\106", 3}, "GEpG"},
-    {{"\047\325\046", 3}, "J9Um"},
-    {{"\310\160\022", 3}, "yHAS"},
-    {{"\131\100\237", 3}, "WUCf"},
-    {{"\064\342\134", 3}, "NOJc"},
-    {{"\010\177\004", 3}, "CH8E"},
-    {{"\345\147\205", 3}, "5WeF"},
-    {{"\300\343\360", 3}, "wOPw"},
-    {{"\061\240\201", 3}, "MaCB"},
-    {{"\225\333\044", 3}, "ldsk"},
-    {{"\215\137\352", 3}, "jV/q"},
-    {{"\371\147\160", 3}, "+Wdw"},
-    {{"\030\320\051", 3}, "GNAp"},
-    {{"\044\174\241", 3}, "JHyh"},
-    {{"\260\127\037", 3}, "sFcf"},
-    {{"\111\045\033", 3}, "SSUb"},
-    {{"\202\114\107", 3}, "gkxH"},
-    {{"\057\371\042", 3}, "L/ki"},
-    {{"\223\247\244", 3}, "k6ek"},
-    {{"\047\216\144", 3}, "J45k"},
-    {{"\203\070\327", 3}, "gzjX"},
-    {{"\247\140\072", 3}, "p2A6"},
-    {{"\124\115\116", 3}, "VE1O"},
-    {{"\157\162\050", 3}, "b3Io"},
-    {{"\357\223\004", 3}, "75ME"},
-    {{"\052\117\156", 3}, "Kk9u"},
-    {{"\347\154\000", 3}, "52wA"},
-    {{"\303\012\142", 3}, "wwpi"},
-    {{"\060\035\362", 3}, "MB3y"},
-    {{"\130\226\361", 3}, "WJbx"},
-    {{"\173\013\071", 3}, "ews5"},
-    {{"\336\004\027", 3}, "3gQX"},
-    {{"\357\366\234", 3}, "7/ac"},
-    {{"\353\304\111", 3}, "68RJ"},
-    {{"\024\264\131", 3}, "FLRZ"},
-    {{"\075\114\251", 3}, "PUyp"},
-    {{"\315\031\225", 3}, "zRmV"},
-    {{"\154\201\276", 3}, "bIG+"},
-    {{"\200\066\072", 3}, "gDY6"},
-    {{"\142\350\267", 3}, "Yui3"},
-    {{"\033\000\166", 3}, "GwB2"},
-    {{"\210\055\077", 3}, "iC0/"},
-    {{"\341\037\124", 3}, "4R9U"},
-    {{"\161\103\152", 3}, "cUNq"},
-    {{"\270\142\131", 3}, "uGJZ"},
-    {{"\337\076\074", 3}, "3z48"},
-    {{"\375\106\362", 3}, "/Uby"},
-    {{"\227\301\127", 3}, "l8FX"},
-    {{"\340\002\234", 3}, "4AKc"},
-    {{"\121\064\033", 3}, "UTQb"},
-    {{"\157\134\143", 3}, "b1xj"},
-    {{"\247\055\327", 3}, "py3X"},
-    {{"\340\142\005", 3}, "4GIF"},
-    {{"\060\260\143", 3}, "MLBj"},
-    {{"\075\203\170", 3}, "PYN4"},
-    {{"\143\160\016", 3}, "Y3AO"},
-    {{"\313\013\063", 3}, "ywsz"},
-    {{"\174\236\135", 3}, "fJ5d"},
-    {{"\103\047\026", 3}, "QycW"},
-    {{"\365\005\343", 3}, "9QXj"},
-    {{"\271\160\223", 3}, "uXCT"},
-    {{"\362\255\172", 3}, "8q16"},
-    {{"\113\012\015", 3}, "SwoN"},
-
-    // various lengths, generated by this python script:
-    //
-    // from std::string import lowercase as lc
-    // for i in range(27):
-    //   print '{ %2d, "%s",%s "%s" },' % (i, lc[:i], ' ' * (26-i),
-    //                                     lc[:i].encode('base64').strip())
-
-    {{"", 0}, {"", 0}},
-    {"a", "YQ=="},
-    {"ab", "YWI="},
-    {"abc", "YWJj"},
-    {"abcd", "YWJjZA=="},
-    {"abcde", "YWJjZGU="},
-    {"abcdef", "YWJjZGVm"},
-    {"abcdefg", "YWJjZGVmZw=="},
-    {"abcdefgh", "YWJjZGVmZ2g="},
-    {"abcdefghi", "YWJjZGVmZ2hp"},
-    {"abcdefghij", "YWJjZGVmZ2hpag=="},
-    {"abcdefghijk", "YWJjZGVmZ2hpams="},
-    {"abcdefghijkl", "YWJjZGVmZ2hpamts"},
-    {"abcdefghijklm", "YWJjZGVmZ2hpamtsbQ=="},
-    {"abcdefghijklmn", "YWJjZGVmZ2hpamtsbW4="},
-    {"abcdefghijklmno", "YWJjZGVmZ2hpamtsbW5v"},
-    {"abcdefghijklmnop", "YWJjZGVmZ2hpamtsbW5vcA=="},
-    {"abcdefghijklmnopq", "YWJjZGVmZ2hpamtsbW5vcHE="},
-    {"abcdefghijklmnopqr", "YWJjZGVmZ2hpamtsbW5vcHFy"},
-    {"abcdefghijklmnopqrs", "YWJjZGVmZ2hpamtsbW5vcHFycw=="},
-    {"abcdefghijklmnopqrst", "YWJjZGVmZ2hpamtsbW5vcHFyc3Q="},
-    {"abcdefghijklmnopqrstu", "YWJjZGVmZ2hpamtsbW5vcHFyc3R1"},
-    {"abcdefghijklmnopqrstuv", "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dg=="},
-    {"abcdefghijklmnopqrstuvw", "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnc="},
-    {"abcdefghijklmnopqrstuvwx", "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4"},
-    {"abcdefghijklmnopqrstuvwxy", "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eQ=="},
-    {"abcdefghijklmnopqrstuvwxyz", "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo="},
-};
-
-template <typename StringType>
-void TestEscapeAndUnescape() {
-  // Check the short strings; this tests the math (and boundaries)
-  for (const auto& tc : base64_tests) {
-    StringType encoded("this junk should be ignored");
-    absl::Base64Escape(tc.plaintext, &encoded);
-    EXPECT_EQ(encoded, tc.cyphertext);
-    EXPECT_EQ(absl::Base64Escape(tc.plaintext), tc.cyphertext);
-
-    StringType decoded("this junk should be ignored");
-    EXPECT_TRUE(absl::Base64Unescape(encoded, &decoded));
-    EXPECT_EQ(decoded, tc.plaintext);
-
-    StringType websafe(tc.cyphertext);
-    for (int c = 0; c < websafe.size(); ++c) {
-      if ('+' == websafe[c]) websafe[c] = '-';
-      if ('/' == websafe[c]) websafe[c] = '_';
-      if ('=' == websafe[c]) {
-        websafe.resize(c);
-        break;
-      }
-    }
-
-    encoded = "this junk should be ignored";
-    absl::WebSafeBase64Escape(tc.plaintext, &encoded);
-    EXPECT_EQ(encoded, websafe);
-    EXPECT_EQ(absl::WebSafeBase64Escape(tc.plaintext), websafe);
-
-    // Let's try the string version of the decoder
-    decoded = "this junk should be ignored";
-    EXPECT_TRUE(absl::WebSafeBase64Unescape(websafe, &decoded));
-    EXPECT_EQ(decoded, tc.plaintext);
-  }
-
-  // Now try the long strings, this tests the streaming
-  for (const auto& tc : absl::strings_internal::base64_strings()) {
-    StringType buffer;
-    absl::WebSafeBase64Escape(tc.plaintext, &buffer);
-    EXPECT_EQ(tc.cyphertext, buffer);
-    EXPECT_EQ(absl::WebSafeBase64Escape(tc.plaintext), tc.cyphertext);
-  }
-
-  // Verify the behavior when decoding bad data
-  {
-    absl::string_view data_set[] = {"ab-/", absl::string_view("\0bcd", 4),
-                                    absl::string_view("abc.\0", 5)};
-    for (absl::string_view bad_data : data_set) {
-      StringType buf;
-      EXPECT_FALSE(absl::Base64Unescape(bad_data, &buf));
-      EXPECT_FALSE(absl::WebSafeBase64Unescape(bad_data, &buf));
-      EXPECT_TRUE(buf.empty());
-    }
-  }
-}
-
-TEST(Base64, EscapeAndUnescape) {
-  TestEscapeAndUnescape<std::string>();
-}
-
-TEST(Base64, DISABLED_HugeData) {
-  const size_t kSize = size_t(3) * 1000 * 1000 * 1000;
-  static_assert(kSize % 3 == 0, "kSize must be divisible by 3");
-  const std::string huge(kSize, 'x');
-
-  std::string escaped;
-  absl::Base64Escape(huge, &escaped);
-
-  // Generates the string that should match a base64 encoded "xxx..." string.
-  // "xxx" in base64 is "eHh4".
-  std::string expected_encoding;
-  expected_encoding.reserve(kSize / 3 * 4);
-  for (size_t i = 0; i < kSize / 3; ++i) {
-    expected_encoding.append("eHh4");
-  }
-  EXPECT_EQ(expected_encoding, escaped);
-
-  std::string unescaped;
-  EXPECT_TRUE(absl::Base64Unescape(escaped, &unescaped));
-  EXPECT_EQ(huge, unescaped);
-}
-
-TEST(HexAndBack, HexStringToBytes_and_BytesToHexString) {
-  std::string hex_mixed = "0123456789abcdefABCDEF";
-  std::string bytes_expected = "\x01\x23\x45\x67\x89\xab\xcd\xef\xAB\xCD\xEF";
-  std::string hex_only_lower = "0123456789abcdefabcdef";
-
-  std::string bytes_result = absl::HexStringToBytes(hex_mixed);
-  EXPECT_EQ(bytes_expected, bytes_result);
-
-  std::string prefix_valid = hex_mixed + "?";
-  std::string prefix_valid_result = absl::HexStringToBytes(
-      absl::string_view(prefix_valid.data(), prefix_valid.size() - 1));
-  EXPECT_EQ(bytes_expected, prefix_valid_result);
-
-  std::string infix_valid = "?" + hex_mixed + "???";
-  std::string infix_valid_result = absl::HexStringToBytes(
-      absl::string_view(infix_valid.data() + 1, hex_mixed.size()));
-  EXPECT_EQ(bytes_expected, infix_valid_result);
-
-  std::string hex_result = absl::BytesToHexString(bytes_expected);
-  EXPECT_EQ(hex_only_lower, hex_result);
-}
-
-}  // namespace