mirror of
https://github.com/google/googletest.git
synced 2025-12-21 11:04:54 +08:00
Merge branch 'google:main' into master
This commit is contained in:
commit
433e8fce8f
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
set -euox pipefail
|
set -euox pipefail
|
||||||
|
|
||||||
readonly LINUX_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20210617"
|
readonly LINUX_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20220113"
|
||||||
readonly LINUX_GCC_FLOOR_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-floor:20210617"
|
readonly LINUX_GCC_FLOOR_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-floor:20210617"
|
||||||
|
|
||||||
if [[ -z ${GTEST_ROOT:-} ]]; then
|
if [[ -z ${GTEST_ROOT:-} ]]; then
|
||||||
|
|||||||
@ -369,8 +369,8 @@ Usually, if your action is for a particular function type, defining it using
|
|||||||
different types (e.g. if you are defining `Return(*value*)`),
|
different types (e.g. if you are defining `Return(*value*)`),
|
||||||
`MakePolymorphicAction()` is easiest. Sometimes you want precise control on what
|
`MakePolymorphicAction()` is easiest. Sometimes you want precise control on what
|
||||||
types of functions the action can be used in, and implementing `ActionInterface`
|
types of functions the action can be used in, and implementing `ActionInterface`
|
||||||
is the way to go here. See the implementation of `Return()` in
|
is the way to go here. See the implementation of `Return()` in `gmock-actions.h`
|
||||||
`testing/base/public/gmock-actions.h` for an example.
|
for an example.
|
||||||
|
|
||||||
### I use SetArgPointee() in WillOnce(), but gcc complains about "conflicting return type specified". What does it mean?
|
### I use SetArgPointee() in WillOnce(), but gcc complains about "conflicting return type specified". What does it mean?
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,6 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
// Google Mock - a framework for writing C++ mock classes.
|
// Google Mock - a framework for writing C++ mock classes.
|
||||||
//
|
//
|
||||||
// The ACTION* family of macros can be used in a namespace scope to
|
// The ACTION* family of macros can be used in a namespace scope to
|
||||||
@ -125,6 +124,9 @@
|
|||||||
// To learn more about using these macros, please search for 'ACTION' on
|
// To learn more about using these macros, please search for 'ACTION' on
|
||||||
// https://github.com/google/googletest/blob/master/docs/gmock_cook_book.md
|
// https://github.com/google/googletest/blob/master/docs/gmock_cook_book.md
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gmock/gmock.h"
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
|
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
|
||||||
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
|
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
|
||||||
|
|
||||||
|
|||||||
@ -27,13 +27,15 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
// Google Mock - a framework for writing C++ mock classes.
|
// Google Mock - a framework for writing C++ mock classes.
|
||||||
//
|
//
|
||||||
// This file implements some commonly used cardinalities. More
|
// This file implements some commonly used cardinalities. More
|
||||||
// cardinalities can be defined by the user implementing the
|
// cardinalities can be defined by the user implementing the
|
||||||
// CardinalityInterface interface if necessary.
|
// CardinalityInterface interface if necessary.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gmock/gmock.h"
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
|
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
|
||||||
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
|
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
|
||||||
|
|
||||||
|
|||||||
@ -31,6 +31,9 @@
|
|||||||
//
|
//
|
||||||
// This file implements MOCK_METHOD.
|
// This file implements MOCK_METHOD.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gmock/gmock.h"
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_FUNCTION_MOCKER_H_ // NOLINT
|
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_FUNCTION_MOCKER_H_ // NOLINT
|
||||||
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_FUNCTION_MOCKER_H_ // NOLINT
|
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_FUNCTION_MOCKER_H_ // NOLINT
|
||||||
|
|
||||||
|
|||||||
@ -249,6 +249,9 @@
|
|||||||
// See googletest/include/gtest/gtest-matchers.h for the definition of class
|
// See googletest/include/gtest/gtest-matchers.h for the definition of class
|
||||||
// Matcher, class MatcherInterface, and others.
|
// Matcher, class MatcherInterface, and others.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gmock/gmock.h"
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_
|
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_
|
||||||
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_
|
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_
|
||||||
|
|
||||||
|
|||||||
@ -27,11 +27,13 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
// Google Mock - a framework for writing C++ mock classes.
|
// Google Mock - a framework for writing C++ mock classes.
|
||||||
//
|
//
|
||||||
// This file implements some commonly used variadic actions.
|
// This file implements some commonly used variadic actions.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gmock/gmock.h"
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
|
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
|
||||||
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
|
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,6 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
// Google Mock - a framework for writing C++ mock classes.
|
// Google Mock - a framework for writing C++ mock classes.
|
||||||
//
|
//
|
||||||
// This file implements some matchers that depend on gmock-matchers.h.
|
// This file implements some matchers that depend on gmock-matchers.h.
|
||||||
@ -35,6 +34,9 @@
|
|||||||
// Note that tests are implemented in gmock-matchers_test.cc rather than
|
// Note that tests are implemented in gmock-matchers_test.cc rather than
|
||||||
// gmock-more-matchers-test.cc.
|
// gmock-more-matchers-test.cc.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gmock/gmock.h"
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_MATCHERS_H_
|
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_MATCHERS_H_
|
||||||
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_MATCHERS_H_
|
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_MATCHERS_H_
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,6 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
// Implements class templates NiceMock, NaggyMock, and StrictMock.
|
// Implements class templates NiceMock, NaggyMock, and StrictMock.
|
||||||
//
|
//
|
||||||
// Given a mock class MockFoo that is created using Google Mock,
|
// Given a mock class MockFoo that is created using Google Mock,
|
||||||
@ -58,6 +57,9 @@
|
|||||||
// In particular, nesting NiceMock, NaggyMock, and StrictMock is NOT
|
// In particular, nesting NiceMock, NaggyMock, and StrictMock is NOT
|
||||||
// supported.
|
// supported.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gmock/gmock.h"
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_NICE_STRICT_H_
|
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_NICE_STRICT_H_
|
||||||
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_NICE_STRICT_H_
|
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_NICE_STRICT_H_
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,6 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
// Google Mock - a framework for writing C++ mock classes.
|
// Google Mock - a framework for writing C++ mock classes.
|
||||||
//
|
//
|
||||||
// This file implements the ON_CALL() and EXPECT_CALL() macros.
|
// This file implements the ON_CALL() and EXPECT_CALL() macros.
|
||||||
@ -56,6 +55,9 @@
|
|||||||
// where all clauses are optional, and .InSequence()/.After()/
|
// where all clauses are optional, and .InSequence()/.After()/
|
||||||
// .WillOnce() can appear any number of times.
|
// .WillOnce() can appear any number of times.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gmock/gmock.h"
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
|
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
|
||||||
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
|
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,6 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
// Google Mock - a framework for writing C++ mock classes.
|
// Google Mock - a framework for writing C++ mock classes.
|
||||||
//
|
//
|
||||||
// This is the main header file a user should include.
|
// This is the main header file a user should include.
|
||||||
@ -62,6 +61,7 @@
|
|||||||
#include "gmock/gmock-more-matchers.h"
|
#include "gmock/gmock-more-matchers.h"
|
||||||
#include "gmock/gmock-nice-strict.h"
|
#include "gmock/gmock-nice-strict.h"
|
||||||
#include "gmock/internal/gmock-internal-utils.h"
|
#include "gmock/internal/gmock-internal-utils.h"
|
||||||
|
#include "gmock/internal/gmock-port.h"
|
||||||
|
|
||||||
// Declares Google Mock flags that we want a user to use programmatically.
|
// Declares Google Mock flags that we want a user to use programmatically.
|
||||||
GMOCK_DECLARE_bool_(catch_leaked_mocks);
|
GMOCK_DECLARE_bool_(catch_leaked_mocks);
|
||||||
|
|||||||
@ -1,3 +1,6 @@
|
|||||||
|
// IWYU pragma: private, include "gmock/gmock.h"
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_
|
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_
|
||||||
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_
|
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_
|
||||||
|
|
||||||
|
|||||||
@ -26,9 +26,12 @@
|
|||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
|
||||||
// Injection point for custom user configurations. See README for details
|
// Injection point for custom user configurations. See README for details
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gmock/gmock.h"
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
|
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
|
||||||
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
|
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
|
||||||
#endif // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
|
#endif // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
|
||||||
|
|||||||
@ -26,11 +26,14 @@
|
|||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
|
||||||
// Injection point for custom user configurations. See README for details
|
// Injection point for custom user configurations. See README for details
|
||||||
//
|
//
|
||||||
// ** Custom implementation starts here **
|
// ** Custom implementation starts here **
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gmock/gmock.h"
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_PORT_H_
|
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_PORT_H_
|
||||||
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_PORT_H_
|
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_PORT_H_
|
||||||
|
|
||||||
|
|||||||
@ -27,13 +27,15 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
// Google Mock - a framework for writing C++ mock classes.
|
// Google Mock - a framework for writing C++ mock classes.
|
||||||
//
|
//
|
||||||
// This file defines some utilities useful for implementing Google
|
// This file defines some utilities useful for implementing Google
|
||||||
// Mock. They are subject to change without notice, so please DO NOT
|
// Mock. They are subject to change without notice, so please DO NOT
|
||||||
// USE THEM IN USER CODE.
|
// USE THEM IN USER CODE.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gmock/gmock.h"
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
|
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
|
||||||
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
|
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,6 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
//
|
|
||||||
// Low-level types and utilities for porting Google Mock to various
|
// Low-level types and utilities for porting Google Mock to various
|
||||||
// platforms. All macros ending with _ and symbols defined in an
|
// platforms. All macros ending with _ and symbols defined in an
|
||||||
// internal namespace are subject to change without notice. Code
|
// internal namespace are subject to change without notice. Code
|
||||||
@ -35,6 +34,9 @@
|
|||||||
// end with _ are part of Google Mock's public API and can be used by
|
// end with _ are part of Google Mock's public API and can be used by
|
||||||
// code outside Google Mock.
|
// code outside Google Mock.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gmock/gmock.h"
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
|
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
|
||||||
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
|
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
|
||||||
|
|
||||||
|
|||||||
232
googletest/include/gtest/gtest-assertion-result.h
Normal file
232
googletest/include/gtest/gtest-assertion-result.h
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
// Copyright 2005, 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.
|
||||||
|
|
||||||
|
// The Google C++ Testing and Mocking Framework (Google Test)
|
||||||
|
//
|
||||||
|
// This file implements the AssertionResult type.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gtest/gtest.h"
|
||||||
|
// IWYU pragma: friend gtest/.*
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
|
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_ASSERTION_RESULT_H_
|
||||||
|
#define GOOGLETEST_INCLUDE_GTEST_GTEST_ASSERTION_RESULT_H_
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
#include <ostream>
|
||||||
|
#include <string>
|
||||||
|
#include <type_traits>
|
||||||
|
|
||||||
|
#include "gtest/gtest-message.h"
|
||||||
|
#include "gtest/internal/gtest-port.h"
|
||||||
|
|
||||||
|
namespace testing {
|
||||||
|
|
||||||
|
// A class for indicating whether an assertion was successful. When
|
||||||
|
// the assertion wasn't successful, the AssertionResult object
|
||||||
|
// remembers a non-empty message that describes how it failed.
|
||||||
|
//
|
||||||
|
// To create an instance of this class, use one of the factory functions
|
||||||
|
// (AssertionSuccess() and AssertionFailure()).
|
||||||
|
//
|
||||||
|
// This class is useful for two purposes:
|
||||||
|
// 1. Defining predicate functions to be used with Boolean test assertions
|
||||||
|
// EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts
|
||||||
|
// 2. Defining predicate-format functions to be
|
||||||
|
// used with predicate assertions (ASSERT_PRED_FORMAT*, etc).
|
||||||
|
//
|
||||||
|
// For example, if you define IsEven predicate:
|
||||||
|
//
|
||||||
|
// testing::AssertionResult IsEven(int n) {
|
||||||
|
// if ((n % 2) == 0)
|
||||||
|
// return testing::AssertionSuccess();
|
||||||
|
// else
|
||||||
|
// return testing::AssertionFailure() << n << " is odd";
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// Then the failed expectation EXPECT_TRUE(IsEven(Fib(5)))
|
||||||
|
// will print the message
|
||||||
|
//
|
||||||
|
// Value of: IsEven(Fib(5))
|
||||||
|
// Actual: false (5 is odd)
|
||||||
|
// Expected: true
|
||||||
|
//
|
||||||
|
// instead of a more opaque
|
||||||
|
//
|
||||||
|
// Value of: IsEven(Fib(5))
|
||||||
|
// Actual: false
|
||||||
|
// Expected: true
|
||||||
|
//
|
||||||
|
// in case IsEven is a simple Boolean predicate.
|
||||||
|
//
|
||||||
|
// If you expect your predicate to be reused and want to support informative
|
||||||
|
// messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up
|
||||||
|
// about half as often as positive ones in our tests), supply messages for
|
||||||
|
// both success and failure cases:
|
||||||
|
//
|
||||||
|
// testing::AssertionResult IsEven(int n) {
|
||||||
|
// if ((n % 2) == 0)
|
||||||
|
// return testing::AssertionSuccess() << n << " is even";
|
||||||
|
// else
|
||||||
|
// return testing::AssertionFailure() << n << " is odd";
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print
|
||||||
|
//
|
||||||
|
// Value of: IsEven(Fib(6))
|
||||||
|
// Actual: true (8 is even)
|
||||||
|
// Expected: false
|
||||||
|
//
|
||||||
|
// NB: Predicates that support negative Boolean assertions have reduced
|
||||||
|
// performance in positive ones so be careful not to use them in tests
|
||||||
|
// that have lots (tens of thousands) of positive Boolean assertions.
|
||||||
|
//
|
||||||
|
// To use this class with EXPECT_PRED_FORMAT assertions such as:
|
||||||
|
//
|
||||||
|
// // Verifies that Foo() returns an even number.
|
||||||
|
// EXPECT_PRED_FORMAT1(IsEven, Foo());
|
||||||
|
//
|
||||||
|
// you need to define:
|
||||||
|
//
|
||||||
|
// testing::AssertionResult IsEven(const char* expr, int n) {
|
||||||
|
// if ((n % 2) == 0)
|
||||||
|
// return testing::AssertionSuccess();
|
||||||
|
// else
|
||||||
|
// return testing::AssertionFailure()
|
||||||
|
// << "Expected: " << expr << " is even\n Actual: it's " << n;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// If Foo() returns 5, you will see the following message:
|
||||||
|
//
|
||||||
|
// Expected: Foo() is even
|
||||||
|
// Actual: it's 5
|
||||||
|
//
|
||||||
|
class GTEST_API_ AssertionResult {
|
||||||
|
public:
|
||||||
|
// Copy constructor.
|
||||||
|
// Used in EXPECT_TRUE/FALSE(assertion_result).
|
||||||
|
AssertionResult(const AssertionResult& other);
|
||||||
|
|
||||||
|
// C4800 is a level 3 warning in Visual Studio 2015 and earlier.
|
||||||
|
// This warning is not emitted in Visual Studio 2017.
|
||||||
|
// This warning is off by default starting in Visual Studio 2019 but can be
|
||||||
|
// enabled with command-line options.
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER < 1910 || _MSC_VER >= 1920)
|
||||||
|
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4800 /* forcing value to bool */)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Used in the EXPECT_TRUE/FALSE(bool_expression).
|
||||||
|
//
|
||||||
|
// T must be contextually convertible to bool.
|
||||||
|
//
|
||||||
|
// The second parameter prevents this overload from being considered if
|
||||||
|
// the argument is implicitly convertible to AssertionResult. In that case
|
||||||
|
// we want AssertionResult's copy constructor to be used.
|
||||||
|
template <typename T>
|
||||||
|
explicit AssertionResult(
|
||||||
|
const T& success,
|
||||||
|
typename std::enable_if<
|
||||||
|
!std::is_convertible<T, AssertionResult>::value>::type*
|
||||||
|
/*enabler*/
|
||||||
|
= nullptr)
|
||||||
|
: success_(success) {}
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER < 1910 || _MSC_VER >= 1920)
|
||||||
|
GTEST_DISABLE_MSC_WARNINGS_POP_()
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Assignment operator.
|
||||||
|
AssertionResult& operator=(AssertionResult other) {
|
||||||
|
swap(other);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns true if and only if the assertion succeeded.
|
||||||
|
operator bool() const { return success_; } // NOLINT
|
||||||
|
|
||||||
|
// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
|
||||||
|
AssertionResult operator!() const;
|
||||||
|
|
||||||
|
// Returns the text streamed into this AssertionResult. Test assertions
|
||||||
|
// use it when they fail (i.e., the predicate's outcome doesn't match the
|
||||||
|
// assertion's expectation). When nothing has been streamed into the
|
||||||
|
// object, returns an empty string.
|
||||||
|
const char* message() const {
|
||||||
|
return message_.get() != nullptr ? message_->c_str() : "";
|
||||||
|
}
|
||||||
|
// Deprecated; please use message() instead.
|
||||||
|
const char* failure_message() const { return message(); }
|
||||||
|
|
||||||
|
// Streams a custom failure message into this object.
|
||||||
|
template <typename T>
|
||||||
|
AssertionResult& operator<<(const T& value) {
|
||||||
|
AppendMessage(Message() << value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allows streaming basic output manipulators such as endl or flush into
|
||||||
|
// this object.
|
||||||
|
AssertionResult& operator<<(
|
||||||
|
::std::ostream& (*basic_manipulator)(::std::ostream& stream)) {
|
||||||
|
AppendMessage(Message() << basic_manipulator);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
// Appends the contents of message to message_.
|
||||||
|
void AppendMessage(const Message& a_message) {
|
||||||
|
if (message_.get() == nullptr) message_.reset(new ::std::string);
|
||||||
|
message_->append(a_message.GetString().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Swap the contents of this AssertionResult with other.
|
||||||
|
void swap(AssertionResult& other);
|
||||||
|
|
||||||
|
// Stores result of the assertion predicate.
|
||||||
|
bool success_;
|
||||||
|
// Stores the message describing the condition in case the expectation
|
||||||
|
// construct is not satisfied with the predicate's outcome.
|
||||||
|
// Referenced via a pointer to avoid taking too much stack frame space
|
||||||
|
// with test assertions.
|
||||||
|
std::unique_ptr< ::std::string> message_;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Makes a successful assertion result.
|
||||||
|
GTEST_API_ AssertionResult AssertionSuccess();
|
||||||
|
|
||||||
|
// Makes a failed assertion result.
|
||||||
|
GTEST_API_ AssertionResult AssertionFailure();
|
||||||
|
|
||||||
|
// Makes a failed assertion result with the given failure message.
|
||||||
|
// Deprecated; use AssertionFailure() << msg.
|
||||||
|
GTEST_API_ AssertionResult AssertionFailure(const Message& msg);
|
||||||
|
|
||||||
|
} // namespace testing
|
||||||
|
|
||||||
|
#endif // GOOGLETEST_INCLUDE_GTEST_GTEST_ASSERTION_RESULT_H_
|
||||||
@ -27,13 +27,16 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
//
|
|
||||||
// The Google C++ Testing and Mocking Framework (Google Test)
|
// The Google C++ Testing and Mocking Framework (Google Test)
|
||||||
//
|
//
|
||||||
// This header file defines the public API for death tests. It is
|
// This header file defines the public API for death tests. It is
|
||||||
// #included by gtest.h so a user doesn't need to include this
|
// #included by gtest.h so a user doesn't need to include this
|
||||||
// directly.
|
// directly.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gtest/gtest.h"
|
||||||
|
// IWYU pragma: friend gtest/.*
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
|
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
|
||||||
#define GOOGLETEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
|
#define GOOGLETEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
|
||||||
|
|
||||||
|
|||||||
@ -32,6 +32,10 @@
|
|||||||
// This file implements just enough of the matcher interface to allow
|
// This file implements just enough of the matcher interface to allow
|
||||||
// EXPECT_DEATH and friends to accept a matcher argument.
|
// EXPECT_DEATH and friends to accept a matcher argument.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gtest/gtest.h"
|
||||||
|
// IWYU pragma: friend gtest/.*
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_MATCHERS_H_
|
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_MATCHERS_H_
|
||||||
#define GOOGLETEST_INCLUDE_GTEST_GTEST_MATCHERS_H_
|
#define GOOGLETEST_INCLUDE_GTEST_GTEST_MATCHERS_H_
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,6 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
//
|
|
||||||
// The Google C++ Testing and Mocking Framework (Google Test)
|
// The Google C++ Testing and Mocking Framework (Google Test)
|
||||||
//
|
//
|
||||||
// This header file defines the Message class.
|
// This header file defines the Message class.
|
||||||
@ -42,6 +41,10 @@
|
|||||||
// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
|
// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
|
||||||
// program!
|
// program!
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gtest/gtest.h"
|
||||||
|
// IWYU pragma: friend gtest/.*
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
|
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
|
||||||
#define GOOGLETEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
|
#define GOOGLETEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
|
||||||
|
|
||||||
|
|||||||
@ -26,9 +26,14 @@
|
|||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
|
||||||
// Macros and functions for implementing parameterized tests
|
// Macros and functions for implementing parameterized tests
|
||||||
// in Google C++ Testing and Mocking Framework (Google Test)
|
// in Google C++ Testing and Mocking Framework (Google Test)
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gtest/gtest.h"
|
||||||
|
// IWYU pragma: friend gtest/.*
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
|
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
|
||||||
#define GOOGLETEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
|
#define GOOGLETEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,6 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
// Google Test - The Google C++ Testing and Mocking Framework
|
// Google Test - The Google C++ Testing and Mocking Framework
|
||||||
//
|
//
|
||||||
// This file implements a universal value printer that can print a
|
// This file implements a universal value printer that can print a
|
||||||
@ -95,6 +94,10 @@
|
|||||||
// being defined as many user-defined container types don't have
|
// being defined as many user-defined container types don't have
|
||||||
// value_type.
|
// value_type.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gtest/gtest.h"
|
||||||
|
// IWYU pragma: friend gtest/.*
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
|
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
|
||||||
#define GOOGLETEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
|
#define GOOGLETEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,6 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
//
|
|
||||||
// Utilities for testing Google Test itself and code that uses Google Test
|
// Utilities for testing Google Test itself and code that uses Google Test
|
||||||
// (e.g. frameworks built on top of Google Test).
|
// (e.g. frameworks built on top of Google Test).
|
||||||
|
|
||||||
|
|||||||
@ -27,6 +27,10 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gtest/gtest.h"
|
||||||
|
// IWYU pragma: friend gtest/.*
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
|
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
|
||||||
#define GOOGLETEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
|
#define GOOGLETEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
|
||||||
|
|
||||||
|
|||||||
@ -27,6 +27,10 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gtest/gtest.h"
|
||||||
|
// IWYU pragma: friend gtest/.*
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
|
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
|
||||||
#define GOOGLETEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
|
#define GOOGLETEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,6 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
//
|
|
||||||
// The Google C++ Testing and Mocking Framework (Google Test)
|
// The Google C++ Testing and Mocking Framework (Google Test)
|
||||||
//
|
//
|
||||||
// This header file defines the public API for Google Test. It should be
|
// This header file defines the public API for Google Test. It should be
|
||||||
@ -57,16 +56,18 @@
|
|||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "gtest/internal/gtest-internal.h"
|
#include "gtest/gtest-assertion-result.h"
|
||||||
#include "gtest/internal/gtest-string.h"
|
|
||||||
#include "gtest/gtest-death-test.h"
|
#include "gtest/gtest-death-test.h"
|
||||||
#include "gtest/gtest-matchers.h"
|
#include "gtest/gtest-matchers.h"
|
||||||
#include "gtest/gtest-message.h"
|
#include "gtest/gtest-message.h"
|
||||||
#include "gtest/gtest-param-test.h"
|
#include "gtest/gtest-param-test.h"
|
||||||
#include "gtest/gtest-printers.h"
|
#include "gtest/gtest-printers.h"
|
||||||
#include "gtest/gtest_prod.h"
|
|
||||||
#include "gtest/gtest-test-part.h"
|
#include "gtest/gtest-test-part.h"
|
||||||
#include "gtest/gtest-typed-test.h"
|
#include "gtest/gtest-typed-test.h"
|
||||||
|
#include "gtest/gtest_pred_impl.h"
|
||||||
|
#include "gtest/gtest_prod.h"
|
||||||
|
#include "gtest/internal/gtest-internal.h"
|
||||||
|
#include "gtest/internal/gtest-string.h"
|
||||||
|
|
||||||
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
|
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
|
||||||
/* class A needs to have dll-interface to be used by clients of class B */)
|
/* class A needs to have dll-interface to be used by clients of class B */)
|
||||||
@ -204,193 +205,6 @@ using TestCase = TestSuite;
|
|||||||
class TestInfo;
|
class TestInfo;
|
||||||
class UnitTest;
|
class UnitTest;
|
||||||
|
|
||||||
// A class for indicating whether an assertion was successful. When
|
|
||||||
// the assertion wasn't successful, the AssertionResult object
|
|
||||||
// remembers a non-empty message that describes how it failed.
|
|
||||||
//
|
|
||||||
// To create an instance of this class, use one of the factory functions
|
|
||||||
// (AssertionSuccess() and AssertionFailure()).
|
|
||||||
//
|
|
||||||
// This class is useful for two purposes:
|
|
||||||
// 1. Defining predicate functions to be used with Boolean test assertions
|
|
||||||
// EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts
|
|
||||||
// 2. Defining predicate-format functions to be
|
|
||||||
// used with predicate assertions (ASSERT_PRED_FORMAT*, etc).
|
|
||||||
//
|
|
||||||
// For example, if you define IsEven predicate:
|
|
||||||
//
|
|
||||||
// testing::AssertionResult IsEven(int n) {
|
|
||||||
// if ((n % 2) == 0)
|
|
||||||
// return testing::AssertionSuccess();
|
|
||||||
// else
|
|
||||||
// return testing::AssertionFailure() << n << " is odd";
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// Then the failed expectation EXPECT_TRUE(IsEven(Fib(5)))
|
|
||||||
// will print the message
|
|
||||||
//
|
|
||||||
// Value of: IsEven(Fib(5))
|
|
||||||
// Actual: false (5 is odd)
|
|
||||||
// Expected: true
|
|
||||||
//
|
|
||||||
// instead of a more opaque
|
|
||||||
//
|
|
||||||
// Value of: IsEven(Fib(5))
|
|
||||||
// Actual: false
|
|
||||||
// Expected: true
|
|
||||||
//
|
|
||||||
// in case IsEven is a simple Boolean predicate.
|
|
||||||
//
|
|
||||||
// If you expect your predicate to be reused and want to support informative
|
|
||||||
// messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up
|
|
||||||
// about half as often as positive ones in our tests), supply messages for
|
|
||||||
// both success and failure cases:
|
|
||||||
//
|
|
||||||
// testing::AssertionResult IsEven(int n) {
|
|
||||||
// if ((n % 2) == 0)
|
|
||||||
// return testing::AssertionSuccess() << n << " is even";
|
|
||||||
// else
|
|
||||||
// return testing::AssertionFailure() << n << " is odd";
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print
|
|
||||||
//
|
|
||||||
// Value of: IsEven(Fib(6))
|
|
||||||
// Actual: true (8 is even)
|
|
||||||
// Expected: false
|
|
||||||
//
|
|
||||||
// NB: Predicates that support negative Boolean assertions have reduced
|
|
||||||
// performance in positive ones so be careful not to use them in tests
|
|
||||||
// that have lots (tens of thousands) of positive Boolean assertions.
|
|
||||||
//
|
|
||||||
// To use this class with EXPECT_PRED_FORMAT assertions such as:
|
|
||||||
//
|
|
||||||
// // Verifies that Foo() returns an even number.
|
|
||||||
// EXPECT_PRED_FORMAT1(IsEven, Foo());
|
|
||||||
//
|
|
||||||
// you need to define:
|
|
||||||
//
|
|
||||||
// testing::AssertionResult IsEven(const char* expr, int n) {
|
|
||||||
// if ((n % 2) == 0)
|
|
||||||
// return testing::AssertionSuccess();
|
|
||||||
// else
|
|
||||||
// return testing::AssertionFailure()
|
|
||||||
// << "Expected: " << expr << " is even\n Actual: it's " << n;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// If Foo() returns 5, you will see the following message:
|
|
||||||
//
|
|
||||||
// Expected: Foo() is even
|
|
||||||
// Actual: it's 5
|
|
||||||
//
|
|
||||||
class GTEST_API_ AssertionResult {
|
|
||||||
public:
|
|
||||||
// Copy constructor.
|
|
||||||
// Used in EXPECT_TRUE/FALSE(assertion_result).
|
|
||||||
AssertionResult(const AssertionResult& other);
|
|
||||||
|
|
||||||
// C4800 is a level 3 warning in Visual Studio 2015 and earlier.
|
|
||||||
// This warning is not emitted in Visual Studio 2017.
|
|
||||||
// This warning is off by default starting in Visual Studio 2019 but can be
|
|
||||||
// enabled with command-line options.
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER < 1910 || _MSC_VER >= 1920)
|
|
||||||
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4800 /* forcing value to bool */)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Used in the EXPECT_TRUE/FALSE(bool_expression).
|
|
||||||
//
|
|
||||||
// T must be contextually convertible to bool.
|
|
||||||
//
|
|
||||||
// The second parameter prevents this overload from being considered if
|
|
||||||
// the argument is implicitly convertible to AssertionResult. In that case
|
|
||||||
// we want AssertionResult's copy constructor to be used.
|
|
||||||
template <typename T>
|
|
||||||
explicit AssertionResult(
|
|
||||||
const T& success,
|
|
||||||
typename std::enable_if<
|
|
||||||
!std::is_convertible<T, AssertionResult>::value>::type*
|
|
||||||
/*enabler*/
|
|
||||||
= nullptr)
|
|
||||||
: success_(success) {}
|
|
||||||
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER < 1910 || _MSC_VER >= 1920)
|
|
||||||
GTEST_DISABLE_MSC_WARNINGS_POP_()
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Assignment operator.
|
|
||||||
AssertionResult& operator=(AssertionResult other) {
|
|
||||||
swap(other);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Returns true if and only if the assertion succeeded.
|
|
||||||
operator bool() const { return success_; } // NOLINT
|
|
||||||
|
|
||||||
// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
|
|
||||||
AssertionResult operator!() const;
|
|
||||||
|
|
||||||
// Returns the text streamed into this AssertionResult. Test assertions
|
|
||||||
// use it when they fail (i.e., the predicate's outcome doesn't match the
|
|
||||||
// assertion's expectation). When nothing has been streamed into the
|
|
||||||
// object, returns an empty string.
|
|
||||||
const char* message() const {
|
|
||||||
return message_.get() != nullptr ? message_->c_str() : "";
|
|
||||||
}
|
|
||||||
// Deprecated; please use message() instead.
|
|
||||||
const char* failure_message() const { return message(); }
|
|
||||||
|
|
||||||
// Streams a custom failure message into this object.
|
|
||||||
template <typename T> AssertionResult& operator<<(const T& value) {
|
|
||||||
AppendMessage(Message() << value);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Allows streaming basic output manipulators such as endl or flush into
|
|
||||||
// this object.
|
|
||||||
AssertionResult& operator<<(
|
|
||||||
::std::ostream& (*basic_manipulator)(::std::ostream& stream)) {
|
|
||||||
AppendMessage(Message() << basic_manipulator);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
// Appends the contents of message to message_.
|
|
||||||
void AppendMessage(const Message& a_message) {
|
|
||||||
if (message_.get() == nullptr) message_.reset(new ::std::string);
|
|
||||||
message_->append(a_message.GetString().c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Swap the contents of this AssertionResult with other.
|
|
||||||
void swap(AssertionResult& other);
|
|
||||||
|
|
||||||
// Stores result of the assertion predicate.
|
|
||||||
bool success_;
|
|
||||||
// Stores the message describing the condition in case the expectation
|
|
||||||
// construct is not satisfied with the predicate's outcome.
|
|
||||||
// Referenced via a pointer to avoid taking too much stack frame space
|
|
||||||
// with test assertions.
|
|
||||||
std::unique_ptr< ::std::string> message_;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Makes a successful assertion result.
|
|
||||||
GTEST_API_ AssertionResult AssertionSuccess();
|
|
||||||
|
|
||||||
// Makes a failed assertion result.
|
|
||||||
GTEST_API_ AssertionResult AssertionFailure();
|
|
||||||
|
|
||||||
// Makes a failed assertion result with the given failure message.
|
|
||||||
// Deprecated; use AssertionFailure() << msg.
|
|
||||||
GTEST_API_ AssertionResult AssertionFailure(const Message& msg);
|
|
||||||
|
|
||||||
} // namespace testing
|
|
||||||
|
|
||||||
// Includes the auto-generated header that implements a family of generic
|
|
||||||
// predicate assertion macros. This include comes late because it relies on
|
|
||||||
// APIs declared above.
|
|
||||||
#include "gtest/gtest_pred_impl.h"
|
|
||||||
|
|
||||||
namespace testing {
|
|
||||||
|
|
||||||
// The abstract class that all tests inherit from.
|
// The abstract class that all tests inherit from.
|
||||||
//
|
//
|
||||||
// In Google Test, a unit test program contains one or many TestSuites, and
|
// In Google Test, a unit test program contains one or many TestSuites, and
|
||||||
|
|||||||
@ -32,10 +32,16 @@
|
|||||||
//
|
//
|
||||||
// Implements a family of generic predicate assertion macros.
|
// Implements a family of generic predicate assertion macros.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gtest/gtest.h"
|
||||||
|
// IWYU pragma: friend gtest/.*
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
|
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
|
||||||
#define GOOGLETEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
|
#define GOOGLETEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
|
||||||
|
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest-assertion-result.h"
|
||||||
|
#include "gtest/internal/gtest-internal.h"
|
||||||
|
#include "gtest/internal/gtest-port.h"
|
||||||
|
|
||||||
namespace testing {
|
namespace testing {
|
||||||
|
|
||||||
|
|||||||
@ -27,8 +27,8 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
//
|
// Google C++ Testing and Mocking Framework definitions useful in production
|
||||||
// Google C++ Testing and Mocking Framework definitions useful in production code.
|
// code.
|
||||||
|
|
||||||
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PROD_H_
|
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PROD_H_
|
||||||
#define GOOGLETEST_INCLUDE_GTEST_GTEST_PROD_H_
|
#define GOOGLETEST_INCLUDE_GTEST_GTEST_PROD_H_
|
||||||
|
|||||||
@ -26,12 +26,16 @@
|
|||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
|
||||||
// The Google C++ Testing and Mocking Framework (Google Test)
|
// The Google C++ Testing and Mocking Framework (Google Test)
|
||||||
//
|
//
|
||||||
// This header file defines internal utilities needed for implementing
|
// This header file defines internal utilities needed for implementing
|
||||||
// death tests. They are subject to change without notice.
|
// death tests. They are subject to change without notice.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gtest/gtest.h"
|
||||||
|
// IWYU pragma: friend gtest/.*
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
|
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
|
||||||
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
|
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
|
||||||
|
|
||||||
|
|||||||
@ -26,7 +26,7 @@
|
|||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
|
||||||
// Google Test filepath utilities
|
// Google Test filepath utilities
|
||||||
//
|
//
|
||||||
// This header file declares classes and functions used internally by
|
// This header file declares classes and functions used internally by
|
||||||
@ -35,6 +35,10 @@
|
|||||||
// This file is #included in gtest/internal/gtest-internal.h.
|
// This file is #included in gtest/internal/gtest-internal.h.
|
||||||
// Do not include this header file separately!
|
// Do not include this header file separately!
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gtest/gtest.h"
|
||||||
|
// IWYU pragma: friend gtest/.*
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
|
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
|
||||||
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
|
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
|
||||||
|
|
||||||
|
|||||||
@ -26,12 +26,16 @@
|
|||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
|
||||||
// The Google C++ Testing and Mocking Framework (Google Test)
|
// The Google C++ Testing and Mocking Framework (Google Test)
|
||||||
//
|
//
|
||||||
// This header file declares functions and macros used internally by
|
// This header file declares functions and macros used internally by
|
||||||
// Google Test. They are subject to change without notice.
|
// Google Test. They are subject to change without notice.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gtest/gtest.h"
|
||||||
|
// IWYU pragma: friend gtest/.*
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
|
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
|
||||||
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
|
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
|
||||||
|
|
||||||
|
|||||||
@ -27,9 +27,12 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
// Type and function utilities for implementing parameterized tests.
|
// Type and function utilities for implementing parameterized tests.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gtest/gtest.h"
|
||||||
|
// IWYU pragma: friend gtest/.*
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
|
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
|
||||||
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
|
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
|
||||||
|
|
||||||
|
|||||||
@ -26,7 +26,7 @@
|
|||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
|
||||||
// The Google C++ Testing and Mocking Framework (Google Test)
|
// The Google C++ Testing and Mocking Framework (Google Test)
|
||||||
//
|
//
|
||||||
// This header file defines the GTEST_OS_* macro.
|
// This header file defines the GTEST_OS_* macro.
|
||||||
|
|||||||
@ -26,7 +26,7 @@
|
|||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
|
||||||
// Low-level types and utilities for porting Google Test to various
|
// Low-level types and utilities for porting Google Test to various
|
||||||
// platforms. All macros ending with _ and symbols defined in an
|
// platforms. All macros ending with _ and symbols defined in an
|
||||||
// internal namespace are subject to change without notice. Code
|
// internal namespace are subject to change without notice. Code
|
||||||
@ -38,6 +38,10 @@
|
|||||||
// files are expected to #include this. Therefore, it cannot #include
|
// files are expected to #include this. Therefore, it cannot #include
|
||||||
// any other Google Test header.
|
// any other Google Test header.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gtest/gtest.h"
|
||||||
|
// IWYU pragma: friend gtest/.*
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
|
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
|
||||||
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
|
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
|
||||||
|
|
||||||
|
|||||||
@ -26,7 +26,7 @@
|
|||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
|
||||||
// The Google C++ Testing and Mocking Framework (Google Test)
|
// The Google C++ Testing and Mocking Framework (Google Test)
|
||||||
//
|
//
|
||||||
// This header file declares the String class and functions used internally by
|
// This header file declares the String class and functions used internally by
|
||||||
@ -36,6 +36,10 @@
|
|||||||
// This header file is #included by gtest-internal.h.
|
// This header file is #included by gtest-internal.h.
|
||||||
// It should not be #included by other files.
|
// It should not be #included by other files.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gtest/gtest.h"
|
||||||
|
// IWYU pragma: friend gtest/.*
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
|
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
|
||||||
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
|
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
|
||||||
|
|
||||||
|
|||||||
@ -30,6 +30,10 @@
|
|||||||
// Type utilities needed for implementing typed and type-parameterized
|
// Type utilities needed for implementing typed and type-parameterized
|
||||||
// tests.
|
// tests.
|
||||||
|
|
||||||
|
// IWYU pragma: private, include "gtest/gtest.h"
|
||||||
|
// IWYU pragma: friend gtest/.*
|
||||||
|
// IWYU pragma: friend gmock/.*
|
||||||
|
|
||||||
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
|
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
|
||||||
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
|
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
|
||||||
|
|
||||||
|
|||||||
@ -39,6 +39,7 @@
|
|||||||
|
|
||||||
// The following lines pull in the real gtest *.cc files.
|
// The following lines pull in the real gtest *.cc files.
|
||||||
#include "src/gtest.cc"
|
#include "src/gtest.cc"
|
||||||
|
#include "src/gtest-assertion-result.cc"
|
||||||
#include "src/gtest-death-test.cc"
|
#include "src/gtest-death-test.cc"
|
||||||
#include "src/gtest-filepath.cc"
|
#include "src/gtest-filepath.cc"
|
||||||
#include "src/gtest-matchers.cc"
|
#include "src/gtest-matchers.cc"
|
||||||
|
|||||||
81
googletest/src/gtest-assertion-result.cc
Normal file
81
googletest/src/gtest-assertion-result.cc
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
// Copyright 2005, 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.
|
||||||
|
|
||||||
|
// The Google C++ Testing and Mocking Framework (Google Test)
|
||||||
|
//
|
||||||
|
// This file defines the AssertionResult type.
|
||||||
|
|
||||||
|
#include "gtest/gtest-assertion-result.h"
|
||||||
|
|
||||||
|
#include <utility>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "gtest/gtest-message.h"
|
||||||
|
|
||||||
|
namespace testing {
|
||||||
|
|
||||||
|
// AssertionResult constructors.
|
||||||
|
// Used in EXPECT_TRUE/FALSE(assertion_result).
|
||||||
|
AssertionResult::AssertionResult(const AssertionResult& other)
|
||||||
|
: success_(other.success_),
|
||||||
|
message_(other.message_.get() != nullptr
|
||||||
|
? new ::std::string(*other.message_)
|
||||||
|
: static_cast< ::std::string*>(nullptr)) {}
|
||||||
|
|
||||||
|
// Swaps two AssertionResults.
|
||||||
|
void AssertionResult::swap(AssertionResult& other) {
|
||||||
|
using std::swap;
|
||||||
|
swap(success_, other.success_);
|
||||||
|
swap(message_, other.message_);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
|
||||||
|
AssertionResult AssertionResult::operator!() const {
|
||||||
|
AssertionResult negation(!success_);
|
||||||
|
if (message_.get() != nullptr) negation << *message_;
|
||||||
|
return negation;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Makes a successful assertion result.
|
||||||
|
AssertionResult AssertionSuccess() {
|
||||||
|
return AssertionResult(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Makes a failed assertion result.
|
||||||
|
AssertionResult AssertionFailure() {
|
||||||
|
return AssertionResult(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Makes a failed assertion result with the given failure message.
|
||||||
|
// Deprecated; use AssertionFailure() << message.
|
||||||
|
AssertionResult AssertionFailure(const Message& message) {
|
||||||
|
return AssertionFailure() << message;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace testing
|
||||||
@ -31,8 +31,6 @@
|
|||||||
// The Google C++ Testing and Mocking Framework (Google Test)
|
// The Google C++ Testing and Mocking Framework (Google Test)
|
||||||
|
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
#include "gtest/internal/custom/gtest.h"
|
|
||||||
#include "gtest/gtest-spi.h"
|
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
@ -54,6 +52,10 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include "gtest/gtest-assertion-result.h"
|
||||||
|
#include "gtest/gtest-spi.h"
|
||||||
|
#include "gtest/internal/custom/gtest.h"
|
||||||
|
|
||||||
#if GTEST_OS_LINUX
|
#if GTEST_OS_LINUX
|
||||||
|
|
||||||
# include <fcntl.h> // NOLINT
|
# include <fcntl.h> // NOLINT
|
||||||
@ -1207,44 +1209,6 @@ std::string Message::GetString() const {
|
|||||||
return internal::StringStreamToString(ss_.get());
|
return internal::StringStreamToString(ss_.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
// AssertionResult constructors.
|
|
||||||
// Used in EXPECT_TRUE/FALSE(assertion_result).
|
|
||||||
AssertionResult::AssertionResult(const AssertionResult& other)
|
|
||||||
: success_(other.success_),
|
|
||||||
message_(other.message_.get() != nullptr
|
|
||||||
? new ::std::string(*other.message_)
|
|
||||||
: static_cast< ::std::string*>(nullptr)) {}
|
|
||||||
|
|
||||||
// Swaps two AssertionResults.
|
|
||||||
void AssertionResult::swap(AssertionResult& other) {
|
|
||||||
using std::swap;
|
|
||||||
swap(success_, other.success_);
|
|
||||||
swap(message_, other.message_);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
|
|
||||||
AssertionResult AssertionResult::operator!() const {
|
|
||||||
AssertionResult negation(!success_);
|
|
||||||
if (message_.get() != nullptr) negation << *message_;
|
|
||||||
return negation;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Makes a successful assertion result.
|
|
||||||
AssertionResult AssertionSuccess() {
|
|
||||||
return AssertionResult(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Makes a failed assertion result.
|
|
||||||
AssertionResult AssertionFailure() {
|
|
||||||
return AssertionResult(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Makes a failed assertion result with the given failure message.
|
|
||||||
// Deprecated; use AssertionFailure() << message.
|
|
||||||
AssertionResult AssertionFailure(const Message& message) {
|
|
||||||
return AssertionFailure() << message;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace internal {
|
namespace internal {
|
||||||
|
|
||||||
namespace edit_distance {
|
namespace edit_distance {
|
||||||
@ -4093,8 +4057,9 @@ std::string XmlUnitTestResultPrinter::EscapeXml(
|
|||||||
m << '"';
|
m << '"';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (IsValidXmlCharacter(ch)) {
|
if (IsValidXmlCharacter(static_cast<unsigned char>(ch))) {
|
||||||
if (is_attribute && IsNormalizableWhitespace(ch))
|
if (is_attribute &&
|
||||||
|
IsNormalizableWhitespace(static_cast<unsigned char>(ch)))
|
||||||
m << "&#x" << String::FormatByte(static_cast<unsigned char>(ch))
|
m << "&#x" << String::FormatByte(static_cast<unsigned char>(ch))
|
||||||
<< ";";
|
<< ";";
|
||||||
else
|
else
|
||||||
@ -4115,7 +4080,7 @@ std::string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(
|
|||||||
std::string output;
|
std::string output;
|
||||||
output.reserve(str.size());
|
output.reserve(str.size());
|
||||||
for (std::string::const_iterator it = str.begin(); it != str.end(); ++it)
|
for (std::string::const_iterator it = str.begin(); it != str.end(); ++it)
|
||||||
if (IsValidXmlCharacter(*it))
|
if (IsValidXmlCharacter(static_cast<unsigned char>(*it)))
|
||||||
output.push_back(*it);
|
output.push_back(*it);
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user