diff options
author | Tom Sepez <tsepez@chromium.org> | 2015-01-07 12:25:07 -0800 |
---|---|---|
committer | Tom Sepez <tsepez@chromium.org> | 2015-01-07 12:25:07 -0800 |
commit | 948095edfc04f35a69f15cd7d9926844ee0ac624 (patch) | |
tree | 37544706fb77d5cdf4b952a2745cfa570a7206a2 /testing/fx_string_testhelpers.cpp | |
parent | d12a4f465a0bcc8b233079ccd54bf7882f3532d5 (diff) | |
download | pdfium-948095edfc04f35a69f15cd7d9926844ee0ac624.tar.xz |
Add ostream helpers for FX String classes.
This allows integration with the gtest EXPECT_* macros.
R=brucedawson@chromium.org
Review URL: https://codereview.chromium.org/837843002
Diffstat (limited to 'testing/fx_string_testhelpers.cpp')
-rw-r--r-- | testing/fx_string_testhelpers.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/testing/fx_string_testhelpers.cpp b/testing/fx_string_testhelpers.cpp new file mode 100644 index 0000000000..1ee705fa4c --- /dev/null +++ b/testing/fx_string_testhelpers.cpp @@ -0,0 +1,47 @@ +// Copyright 2014 PDFium 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 "fx_string_testhelpers.h" + +#include <ios> +#include <iomanip> + +namespace { + +template <typename T> +std::ostream& output_string(std::ostream& out, const T& str) { + out << std::hex << std::setfill('0') << '"'; + for (size_t i = 0; i < str.GetLength(); ++i) { + unsigned int c = str.GetAt(i); + if (c >= 0x20 && c < 0x7F) { + out << static_cast<char>(c); + } else if (sizeof(typename T::value_type) == 1) { + out << "\\x" << std::setw(2) << c << std::setw(0); + } else if (c < 0x10000) { + out << "\\u" << std::setw(4) << c << std::setw(0); + } else { + out << "<invalid>"; + } + } + out << '"' << std::dec << std::setfill(' '); + return out; +} + +} // namespace + +std::ostream& operator<<(std::ostream& out, const CFX_ByteStringC& str) { + return output_string(out, str); +} + +std::ostream& operator<<(std::ostream& out, const CFX_ByteString& str) { + return output_string(out, str); +} + +std::ostream& operator<<(std::ostream& out, const CFX_WideStringC& str) { + return output_string(out, str); +} + +std::ostream& operator<<(std::ostream& out, const CFX_WideString& str) { + return output_string(out, str); +} |