From a5c9431631c7305224c846e71b9c8f811c610f60 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Wed, 7 Jan 2015 12:28:56 -0800 Subject: Merge to XFA: Add ostream helpers for FX String classes. Original CL at https://codereview.chromium.org/837843002 TBR=brucedawson@chromium.org Review URL: https://codereview.chromium.org/809313008 --- testing/fx_string_testhelpers.cpp | 47 +++++++++++++++++++++++++++++++++++++++ testing/fx_string_testhelpers.h | 19 ++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 testing/fx_string_testhelpers.cpp create mode 100644 testing/fx_string_testhelpers.h (limited to 'testing') 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 +#include + +namespace { + +template +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(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 << ""; + } + } + 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); +} diff --git a/testing/fx_string_testhelpers.h b/testing/fx_string_testhelpers.h new file mode 100644 index 0000000000..7d0668817c --- /dev/null +++ b/testing/fx_string_testhelpers.h @@ -0,0 +1,19 @@ +// 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. + +#ifndef TESTING_FX_STRING_TESTHELPERS_H_ +#define TESTING_FX_STRING_TESTHELPERS_H_ + +#include + +#include "../core/include/fxcrt/fx_basic.h" + +// Output stream operator so GTEST macros work with FX strings. +std::ostream& operator<<(std::ostream& out, const CFX_ByteStringC& str); +std::ostream& operator<<(std::ostream& out, const CFX_ByteString& str); +std::ostream& operator<<(std::ostream& out, const CFX_WideStringC& str); +std::ostream& operator<<(std::ostream& out, const CFX_WideString& str); + +#endif // TESTING_FX_STR_TESTHELPERS_H_ + -- cgit v1.2.3