diff options
-rw-r--r-- | googletest/include/gtest/gtest-printers.h | 7 | ||||
-rw-r--r-- | googletest/test/googletest-overload-addressof-operator-test.cc | 91 | ||||
-rw-r--r-- | googletest/test/googletest-printers-test.cc | 59 |
3 files changed, 63 insertions, 94 deletions
diff --git a/googletest/include/gtest/gtest-printers.h b/googletest/include/gtest/gtest-printers.h index 5a3ca821..56a05450 100644 --- a/googletest/include/gtest/gtest-printers.h +++ b/googletest/include/gtest/gtest-printers.h @@ -151,9 +151,10 @@ class TypeWithoutFormatter { public: // This default version is called when kTypeKind is kOtherType. static void PrintValue(const T& value, ::std::ostream* os) { - PrintBytesInObjectTo(static_cast<const unsigned char*>( - reinterpret_cast<const void*>( - std::addressof(value))), sizeof(value), os); + PrintBytesInObjectTo( + static_cast<const unsigned char*>( + reinterpret_cast<const void*>(std::addressof(value))), + sizeof(value), os); } }; diff --git a/googletest/test/googletest-overload-addressof-operator-test.cc b/googletest/test/googletest-overload-addressof-operator-test.cc deleted file mode 100644 index e8355e57..00000000 --- a/googletest/test/googletest-overload-addressof-operator-test.cc +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2008, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// This file tests EXPECT_EQ works when used with type that has overloaded & -// operator. - -#include <gtest/gtest.h> -#include <string> - -class string_ref; - -/** - * This is a synthetic pointer to a fixed size string. - */ -class string_ptr { - public: - string_ptr(const char *data, size_t size) : data_(data), size_(size) {} - - string_ptr &operator++() noexcept { - data_ += size_; - return *this; - } - - string_ref operator*() const noexcept; - - private: - const char *data_; - size_t size_; -}; - -/** - * This is a synthetic reference of a fixed size string. - */ -class string_ref { - public: - string_ref(const char *data, size_t size) : data_(data), size_(size) {} - - string_ptr operator&() const noexcept { return {data_, size_}; } - - bool operator==(const char *s) const noexcept { - if (size_ > 0 && data_[size_ - 1] != 0) { - return std::string(data_, size_) == std::string(s); - } else { - return std::string(data_) == std::string(s); - } - } - - private: - const char *data_; - size_t size_; -}; - -string_ref string_ptr::operator*() const noexcept { return {data_, size_}; } - -TEST(string_ref, compare) { - const char *s = "alex\0davidjohn\0"; - string_ptr ptr(s, 5); - EXPECT_EQ(*ptr, "alex"); - EXPECT_TRUE(*ptr == "alex"); - ++ptr; - EXPECT_EQ(*ptr, "david"); - EXPECT_TRUE(*ptr == "david"); - ++ptr; - EXPECT_EQ(*ptr, "john"); -} diff --git a/googletest/test/googletest-printers-test.cc b/googletest/test/googletest-printers-test.cc index d896c241..4bdc9add 100644 --- a/googletest/test/googletest-printers-test.cc +++ b/googletest/test/googletest-printers-test.cc @@ -1556,6 +1556,65 @@ TEST(PrintOneofTest, Basic) { PrintToString(Type(NonPrintable{}))); } #endif // GTEST_HAS_ABSL +namespace { +class string_ref; + +/** + * This is a synthetic pointer to a fixed size string. + */ +class string_ptr { + public: + string_ptr(const char* data, size_t size) : data_(data), size_(size) {} + + string_ptr& operator++() noexcept { + data_ += size_; + return *this; + } + + string_ref operator*() const noexcept; + + private: + const char* data_; + size_t size_; +}; + +/** + * This is a synthetic reference of a fixed size string. + */ +class string_ref { + public: + string_ref(const char* data, size_t size) : data_(data), size_(size) {} + + string_ptr operator&() const noexcept { return {data_, size_}; } // NOLINT + + bool operator==(const char* s) const noexcept { + if (size_ > 0 && data_[size_ - 1] != 0) { + return std::string(data_, size_) == std::string(s); + } else { + return std::string(data_) == std::string(s); + } + } + + private: + const char* data_; + size_t size_; +}; + +string_ref string_ptr::operator*() const noexcept { return {data_, size_}; } + +TEST(string_ref, compare) { + const char* s = "alex\0davidjohn\0"; + string_ptr ptr(s, 5); + EXPECT_EQ(*ptr, "alex"); + EXPECT_TRUE(*ptr == "alex"); + ++ptr; + EXPECT_EQ(*ptr, "david"); + EXPECT_TRUE(*ptr == "david"); + ++ptr; + EXPECT_EQ(*ptr, "john"); +} + +} // namespace } // namespace gtest_printers_test } // namespace testing |