Compare commits
35 Commits
4422C11159
...
9A681768AA
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c370cf063b | ||
|
|
95a8864c05 | ||
|
|
8026417d21 | ||
|
|
ae8d1fc81b | ||
|
|
52825d78aa | ||
|
|
11a9482f84 | ||
|
|
b155875f32 | ||
|
|
b8a92f7c86 | ||
|
|
34e92be31c | ||
|
|
39803f3c51 | ||
|
|
0361bdf591 | ||
|
|
db13ff1f0b | ||
|
|
be74b4b2e0 | ||
|
|
7a8a5bcec0 | ||
|
|
a32a200094 | ||
|
|
51545ee515 | ||
|
|
5a62d400e0 | ||
|
|
838a32845c | ||
|
|
679bfec6db | ||
|
|
af71b6607f | ||
|
|
717ce7feb8 | ||
|
|
a909becdc5 | ||
|
|
298a40f023 | ||
|
|
bbbc5d8a4b | ||
|
|
e0c80b0a6e | ||
|
|
6748df1eab | ||
|
|
21d276b5c4 | ||
|
|
2241be0c3f | ||
|
|
6a9d6d5c28 | ||
|
|
200ff59949 | ||
|
|
4bf466236d | ||
|
|
50cfbb726b | ||
|
|
dcdb65065f | ||
|
|
0c469a5a06 | ||
|
|
f79ac2ce0e |
@@ -102,6 +102,10 @@ runs tests from your binary in parallel to provide significant speed-up.
|
||||
is a VS Code extension allowing to view Google Tests in a tree view, and
|
||||
run/debug your tests.
|
||||
|
||||
[Catch2 and Google Test Explorer](https://github.com/matepek/vscode-catch2-test-adapter)
|
||||
is a VS Code extension allowing to view Google Tests in a tree view, and
|
||||
run/debug your tests.
|
||||
|
||||
[Cornichon](https://pypi.org/project/cornichon/) is a small Gherkin DSL parser
|
||||
that generates stub code for Google Test.
|
||||
|
||||
|
||||
@@ -266,7 +266,7 @@ Matcher | Description
|
||||
| `IsTrue()` | `argument` evaluates to `true` in a Boolean context. |
|
||||
| `IsNull()` | `argument` is a `NULL` pointer (raw or smart). |
|
||||
| `NotNull()` | `argument` is a non-null pointer (raw or smart). |
|
||||
| `Optional(m)` | `argument` is `optional<>` that contains a value matching `m`. |
|
||||
| `Optional(m)` | `argument` is `optional<>` that contains a value matching `m`. (For testing whether an `optional<>` is set, check for equality with `nullopt`. You may need to use `Eq(nullopt)` if the inner type doesn't have `==`.)|
|
||||
| `VariantWith<T>(m)` | `argument` is `variant<>` that holds the alternative of type T with a value matching `m`. |
|
||||
| `Ref(variable)` | `argument` is a reference to `variable`. |
|
||||
| `TypedEq<type>(value)` | `argument` has type `type` and is equal to `value`. You may need to use this instead of `Eq(value)` when the mock function is overloaded. |
|
||||
@@ -278,6 +278,12 @@ copy constructor, try wrap it in `ByRef()`, e.g.
|
||||
`Eq(ByRef(non_copyable_value))`. If you do that, make sure `non_copyable_value`
|
||||
is not changed afterwards, or the meaning of your matcher will be changed.
|
||||
|
||||
`IsTrue` and `IsFalse` are useful when you need to use a matcher, or for types
|
||||
that can be explicitly converted to Boolean, but are not implicitly converted to
|
||||
Boolean. In other cases, you can use the basic
|
||||
[`EXPECT_TRUE` and `EXPECT_FALSE`](../../googletest/docs/primer#basic-assertions)
|
||||
assertions.
|
||||
|
||||
#### Floating-Point Matchers {#FpMatchers}
|
||||
|
||||
<!-- mdformat off(no multiline tables) -->
|
||||
|
||||
@@ -162,8 +162,8 @@ GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned int, 0U);
|
||||
GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed int, 0);
|
||||
GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned long, 0UL); // NOLINT
|
||||
GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed long, 0L); // NOLINT
|
||||
GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(UInt64, 0);
|
||||
GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(Int64, 0);
|
||||
GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned long long, 0); // NOLINT
|
||||
GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed long long, 0); // NOLINT
|
||||
GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(float, 0);
|
||||
GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(double, 0);
|
||||
|
||||
@@ -916,7 +916,8 @@ struct WithArgsAction {
|
||||
// We use the conversion operator to detect the signature of the inner Action.
|
||||
template <typename R, typename... Args>
|
||||
operator Action<R(Args...)>() const { // NOLINT
|
||||
Action<R(typename std::tuple_element<I, std::tuple<Args...>>::type...)>
|
||||
using TupleType = std::tuple<Args...>;
|
||||
Action<R(typename std::tuple_element<I, TupleType>::type...)>
|
||||
converted(action);
|
||||
|
||||
return [converted](Args... args) -> R {
|
||||
|
||||
@@ -1638,7 +1638,7 @@ struct AdlTag {};
|
||||
// InvokeArgumentAdl - a helper for InvokeArgument.
|
||||
// The basic overloads are provided here for generic functors.
|
||||
// Overloads for other custom-callables are provided in the
|
||||
// internal/custom/callback-actions.h header.
|
||||
// internal/custom/gmock-generated-actions.h header.
|
||||
|
||||
template <typename R, typename F>
|
||||
R InvokeArgumentAdl(AdlTag, F f) {
|
||||
|
||||
@@ -564,7 +564,7 @@ struct AdlTag {};
|
||||
// InvokeArgumentAdl - a helper for InvokeArgument.
|
||||
// The basic overloads are provided here for generic functors.
|
||||
// Overloads for other custom-callables are provided in the
|
||||
// internal/custom/callback-actions.h header.
|
||||
// internal/custom/gmock-generated-actions.h header.
|
||||
|
||||
$range i 0..n
|
||||
$for i
|
||||
|
||||
@@ -247,56 +247,43 @@ inline Matcher<T> MatcherCast(const M& matcher) {
|
||||
return internal::MatcherCastImpl<T, M>::Cast(matcher);
|
||||
}
|
||||
|
||||
// Implements SafeMatcherCast().
|
||||
//
|
||||
// FIXME: The intermediate SafeMatcherCastImpl class was introduced as a
|
||||
// workaround for a compiler bug, and can now be removed.
|
||||
template <typename T>
|
||||
class SafeMatcherCastImpl {
|
||||
public:
|
||||
// This overload handles polymorphic matchers and values only since
|
||||
// monomorphic matchers are handled by the next one.
|
||||
template <typename M>
|
||||
static inline Matcher<T> Cast(const M& polymorphic_matcher_or_value) {
|
||||
return internal::MatcherCastImpl<T, M>::Cast(polymorphic_matcher_or_value);
|
||||
}
|
||||
|
||||
// This overload handles monomorphic matchers.
|
||||
//
|
||||
// In general, if type T can be implicitly converted to type U, we can
|
||||
// safely convert a Matcher<U> to a Matcher<T> (i.e. Matcher is
|
||||
// contravariant): just keep a copy of the original Matcher<U>, convert the
|
||||
// argument from type T to U, and then pass it to the underlying Matcher<U>.
|
||||
// The only exception is when U is a reference and T is not, as the
|
||||
// underlying Matcher<U> may be interested in the argument's address, which
|
||||
// is not preserved in the conversion from T to U.
|
||||
template <typename U>
|
||||
static inline Matcher<T> Cast(const Matcher<U>& matcher) {
|
||||
// Enforce that T can be implicitly converted to U.
|
||||
GTEST_COMPILE_ASSERT_((std::is_convertible<T, U>::value),
|
||||
"T must be implicitly convertible to U");
|
||||
// Enforce that we are not converting a non-reference type T to a reference
|
||||
// type U.
|
||||
GTEST_COMPILE_ASSERT_(
|
||||
std::is_reference<T>::value || !std::is_reference<U>::value,
|
||||
cannot_convert_non_reference_arg_to_reference);
|
||||
// In case both T and U are arithmetic types, enforce that the
|
||||
// conversion is not lossy.
|
||||
typedef GTEST_REMOVE_REFERENCE_AND_CONST_(T) RawT;
|
||||
typedef GTEST_REMOVE_REFERENCE_AND_CONST_(U) RawU;
|
||||
const bool kTIsOther = GMOCK_KIND_OF_(RawT) == internal::kOther;
|
||||
const bool kUIsOther = GMOCK_KIND_OF_(RawU) == internal::kOther;
|
||||
GTEST_COMPILE_ASSERT_(
|
||||
kTIsOther || kUIsOther ||
|
||||
(internal::LosslessArithmeticConvertible<RawT, RawU>::value),
|
||||
conversion_of_arithmetic_types_must_be_lossless);
|
||||
return MatcherCast<T>(matcher);
|
||||
}
|
||||
};
|
||||
|
||||
// This overload handles polymorphic matchers and values only since
|
||||
// monomorphic matchers are handled by the next one.
|
||||
template <typename T, typename M>
|
||||
inline Matcher<T> SafeMatcherCast(const M& polymorphic_matcher) {
|
||||
return SafeMatcherCastImpl<T>::Cast(polymorphic_matcher);
|
||||
inline Matcher<T> SafeMatcherCast(const M& polymorphic_matcher_or_value) {
|
||||
return MatcherCast<T>(polymorphic_matcher_or_value);
|
||||
}
|
||||
|
||||
// This overload handles monomorphic matchers.
|
||||
//
|
||||
// In general, if type T can be implicitly converted to type U, we can
|
||||
// safely convert a Matcher<U> to a Matcher<T> (i.e. Matcher is
|
||||
// contravariant): just keep a copy of the original Matcher<U>, convert the
|
||||
// argument from type T to U, and then pass it to the underlying Matcher<U>.
|
||||
// The only exception is when U is a reference and T is not, as the
|
||||
// underlying Matcher<U> may be interested in the argument's address, which
|
||||
// is not preserved in the conversion from T to U.
|
||||
template <typename T, typename U>
|
||||
inline Matcher<T> SafeMatcherCast(const Matcher<U>& matcher) {
|
||||
// Enforce that T can be implicitly converted to U.
|
||||
GTEST_COMPILE_ASSERT_((std::is_convertible<T, U>::value),
|
||||
"T must be implicitly convertible to U");
|
||||
// Enforce that we are not converting a non-reference type T to a reference
|
||||
// type U.
|
||||
GTEST_COMPILE_ASSERT_(
|
||||
std::is_reference<T>::value || !std::is_reference<U>::value,
|
||||
cannot_convert_non_reference_arg_to_reference);
|
||||
// In case both T and U are arithmetic types, enforce that the
|
||||
// conversion is not lossy.
|
||||
typedef GTEST_REMOVE_REFERENCE_AND_CONST_(T) RawT;
|
||||
typedef GTEST_REMOVE_REFERENCE_AND_CONST_(U) RawU;
|
||||
constexpr bool kTIsOther = GMOCK_KIND_OF_(RawT) == internal::kOther;
|
||||
constexpr bool kUIsOther = GMOCK_KIND_OF_(RawU) == internal::kOther;
|
||||
GTEST_COMPILE_ASSERT_(
|
||||
kTIsOther || kUIsOther ||
|
||||
(internal::LosslessArithmeticConvertible<RawT, RawU>::value),
|
||||
conversion_of_arithmetic_types_must_be_lossless);
|
||||
return MatcherCast<T>(matcher);
|
||||
}
|
||||
|
||||
// A<T>() returns a matcher that matches any value of type T.
|
||||
@@ -4057,11 +4044,7 @@ template <typename Container>
|
||||
inline PolymorphicMatcher<internal::ContainerEqMatcher<
|
||||
typename std::remove_const<Container>::type>>
|
||||
ContainerEq(const Container& rhs) {
|
||||
// This following line is for working around a bug in MSVC 8.0,
|
||||
// which causes Container to be a const type sometimes.
|
||||
typedef typename std::remove_const<Container>::type RawContainer;
|
||||
return MakePolymorphicMatcher(
|
||||
internal::ContainerEqMatcher<RawContainer>(rhs));
|
||||
return MakePolymorphicMatcher(internal::ContainerEqMatcher<Container>(rhs));
|
||||
}
|
||||
|
||||
// Returns a matcher that matches a container that, when sorted using
|
||||
@@ -4094,12 +4077,8 @@ template <typename TupleMatcher, typename Container>
|
||||
inline internal::PointwiseMatcher<TupleMatcher,
|
||||
typename std::remove_const<Container>::type>
|
||||
Pointwise(const TupleMatcher& tuple_matcher, const Container& rhs) {
|
||||
// This following line is for working around a bug in MSVC 8.0,
|
||||
// which causes Container to be a const type sometimes (e.g. when
|
||||
// rhs is a const int[])..
|
||||
typedef typename std::remove_const<Container>::type RawContainer;
|
||||
return internal::PointwiseMatcher<TupleMatcher, RawContainer>(
|
||||
tuple_matcher, rhs);
|
||||
return internal::PointwiseMatcher<TupleMatcher, Container>(tuple_matcher,
|
||||
rhs);
|
||||
}
|
||||
|
||||
|
||||
@@ -4130,14 +4109,9 @@ inline internal::UnorderedElementsAreArrayMatcher<
|
||||
typename std::remove_const<RhsContainer>::type>::type::value_type>>
|
||||
UnorderedPointwise(const Tuple2Matcher& tuple2_matcher,
|
||||
const RhsContainer& rhs_container) {
|
||||
// This following line is for working around a bug in MSVC 8.0,
|
||||
// which causes RhsContainer to be a const type sometimes (e.g. when
|
||||
// rhs_container is a const int[]).
|
||||
typedef typename std::remove_const<RhsContainer>::type RawRhsContainer;
|
||||
|
||||
// RhsView allows the same code to handle RhsContainer being a
|
||||
// STL-style container and it being a native C-style array.
|
||||
typedef typename internal::StlContainerView<RawRhsContainer> RhsView;
|
||||
typedef typename internal::StlContainerView<RhsContainer> RhsView;
|
||||
typedef typename RhsView::type RhsStlContainer;
|
||||
typedef typename RhsStlContainer::value_type Second;
|
||||
const RhsStlContainer& rhs_stl_container =
|
||||
|
||||
@@ -136,15 +136,13 @@ GMOCK_DECLARE_KIND_(int, kInteger);
|
||||
GMOCK_DECLARE_KIND_(unsigned int, kInteger);
|
||||
GMOCK_DECLARE_KIND_(long, kInteger); // NOLINT
|
||||
GMOCK_DECLARE_KIND_(unsigned long, kInteger); // NOLINT
|
||||
GMOCK_DECLARE_KIND_(long long, kInteger); // NOLINT
|
||||
GMOCK_DECLARE_KIND_(unsigned long long, kInteger); // NOLINT
|
||||
|
||||
#if GMOCK_WCHAR_T_IS_NATIVE_
|
||||
GMOCK_DECLARE_KIND_(wchar_t, kInteger);
|
||||
#endif
|
||||
|
||||
// Non-standard integer types.
|
||||
GMOCK_DECLARE_KIND_(Int64, kInteger);
|
||||
GMOCK_DECLARE_KIND_(UInt64, kInteger);
|
||||
|
||||
// All standard floating-point types.
|
||||
GMOCK_DECLARE_KIND_(float, kFloatingPoint);
|
||||
GMOCK_DECLARE_KIND_(double, kFloatingPoint);
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <cstdint>
|
||||
#include <iostream>
|
||||
|
||||
// Most of the utilities needed for porting Google Mock are also
|
||||
@@ -69,8 +70,7 @@
|
||||
|
||||
// Macros for declaring flags.
|
||||
# define GMOCK_DECLARE_bool_(name) extern GTEST_API_ bool GMOCK_FLAG(name)
|
||||
# define GMOCK_DECLARE_int32_(name) \
|
||||
extern GTEST_API_ ::testing::internal::Int32 GMOCK_FLAG(name)
|
||||
# define GMOCK_DECLARE_int32_(name) extern GTEST_API_ int32_t GMOCK_FLAG(name)
|
||||
# define GMOCK_DECLARE_string_(name) \
|
||||
extern GTEST_API_ ::std::string GMOCK_FLAG(name)
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
# define GMOCK_DEFINE_bool_(name, default_val, doc) \
|
||||
GTEST_API_ bool GMOCK_FLAG(name) = (default_val)
|
||||
# define GMOCK_DEFINE_int32_(name, default_val, doc) \
|
||||
GTEST_API_ ::testing::internal::Int32 GMOCK_FLAG(name) = (default_val)
|
||||
GTEST_API_ int32_t GMOCK_FLAG(name) = (default_val)
|
||||
# define GMOCK_DEFINE_string_(name, default_val, doc) \
|
||||
GTEST_API_ ::std::string GMOCK_FLAG(name) = (default_val)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Please Note:
|
||||
|
||||
Files in this directory are no longer supported by the maintainers. They
|
||||
represent mosty historical artifacts and supported by the community only. There
|
||||
represent mostly historical artifacts and supported by the community only. There
|
||||
is no guarantee whatsoever that these scripts still work.
|
||||
|
||||
@@ -48,21 +48,14 @@ void loop() { RUN_ALL_TESTS(); }
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
// MS C++ compiler/linker has a bug on Windows (not on Windows CE), which
|
||||
// causes a link error when _tmain is defined in a static library and UNICODE
|
||||
// is enabled. For this reason instead of _tmain, main function is used on
|
||||
// Windows. See the following link to track the current status of this bug:
|
||||
// https://web.archive.org/web/20170912203238/connect.microsoft.com/VisualStudio/feedback/details/394464/wmain-link-error-in-the-static-library
|
||||
// // NOLINT
|
||||
#if GTEST_OS_WINDOWS_MOBILE
|
||||
#if __MSC_VER
|
||||
# include <tchar.h> // NOLINT
|
||||
|
||||
GTEST_API_ int _tmain(int argc, TCHAR** argv) {
|
||||
#else
|
||||
GTEST_API_ int main(int argc, char** argv) {
|
||||
#endif // GTEST_OS_WINDOWS_MOBILE
|
||||
std::cout << "Running main() from gmock_main.cc\n";
|
||||
#endif // __MSC_VER
|
||||
std::cout << "Running main() from " << __FILE__ << '\n';
|
||||
// Since Google Mock depends on Google Test, InitGoogleMock() is
|
||||
// also responsible for initializing Google Test. Therefore there's
|
||||
// no need for calling testing::InitGoogleTest() separately.
|
||||
|
||||
@@ -80,8 +80,6 @@ using testing::SetArgumentPointee;
|
||||
using testing::Unused;
|
||||
using testing::WithArgs;
|
||||
using testing::internal::BuiltInDefaultValue;
|
||||
using testing::internal::Int64;
|
||||
using testing::internal::UInt64;
|
||||
|
||||
#if !GTEST_OS_WINDOWS_MOBILE
|
||||
using testing::SetErrnoAndReturn;
|
||||
@@ -123,8 +121,9 @@ TEST(BuiltInDefaultValueTest, IsZeroForNumericTypes) {
|
||||
EXPECT_EQ(0U, BuiltInDefaultValue<unsigned long>::Get()); // NOLINT
|
||||
EXPECT_EQ(0, BuiltInDefaultValue<signed long>::Get()); // NOLINT
|
||||
EXPECT_EQ(0, BuiltInDefaultValue<long>::Get()); // NOLINT
|
||||
EXPECT_EQ(0U, BuiltInDefaultValue<UInt64>::Get());
|
||||
EXPECT_EQ(0, BuiltInDefaultValue<Int64>::Get());
|
||||
EXPECT_EQ(0U, BuiltInDefaultValue<unsigned long long>::Get()); // NOLINT
|
||||
EXPECT_EQ(0, BuiltInDefaultValue<signed long long>::Get()); // NOLINT
|
||||
EXPECT_EQ(0, BuiltInDefaultValue<long long>::Get()); // NOLINT
|
||||
EXPECT_EQ(0, BuiltInDefaultValue<float>::Get());
|
||||
EXPECT_EQ(0, BuiltInDefaultValue<double>::Get());
|
||||
}
|
||||
@@ -147,8 +146,9 @@ TEST(BuiltInDefaultValueTest, ExistsForNumericTypes) {
|
||||
EXPECT_TRUE(BuiltInDefaultValue<unsigned long>::Exists()); // NOLINT
|
||||
EXPECT_TRUE(BuiltInDefaultValue<signed long>::Exists()); // NOLINT
|
||||
EXPECT_TRUE(BuiltInDefaultValue<long>::Exists()); // NOLINT
|
||||
EXPECT_TRUE(BuiltInDefaultValue<UInt64>::Exists());
|
||||
EXPECT_TRUE(BuiltInDefaultValue<Int64>::Exists());
|
||||
EXPECT_TRUE(BuiltInDefaultValue<unsigned long long>::Exists()); // NOLINT
|
||||
EXPECT_TRUE(BuiltInDefaultValue<signed long long>::Exists()); // NOLINT
|
||||
EXPECT_TRUE(BuiltInDefaultValue<long long>::Exists()); // NOLINT
|
||||
EXPECT_TRUE(BuiltInDefaultValue<float>::Exists());
|
||||
EXPECT_TRUE(BuiltInDefaultValue<double>::Exists());
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <cstdint>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <sstream>
|
||||
@@ -172,9 +173,9 @@ TEST(KindOfTest, Integer) {
|
||||
EXPECT_EQ(kInteger, GMOCK_KIND_OF_(unsigned int)); // NOLINT
|
||||
EXPECT_EQ(kInteger, GMOCK_KIND_OF_(long)); // NOLINT
|
||||
EXPECT_EQ(kInteger, GMOCK_KIND_OF_(unsigned long)); // NOLINT
|
||||
EXPECT_EQ(kInteger, GMOCK_KIND_OF_(long long)); // NOLINT
|
||||
EXPECT_EQ(kInteger, GMOCK_KIND_OF_(unsigned long long)); // NOLINT
|
||||
EXPECT_EQ(kInteger, GMOCK_KIND_OF_(wchar_t)); // NOLINT
|
||||
EXPECT_EQ(kInteger, GMOCK_KIND_OF_(Int64)); // NOLINT
|
||||
EXPECT_EQ(kInteger, GMOCK_KIND_OF_(UInt64)); // NOLINT
|
||||
EXPECT_EQ(kInteger, GMOCK_KIND_OF_(size_t)); // NOLINT
|
||||
#if GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_CYGWIN
|
||||
// ssize_t is not defined on Windows and possibly some other OSes.
|
||||
@@ -222,11 +223,12 @@ TEST(LosslessArithmeticConvertibleTest, IntegerToInteger) {
|
||||
EXPECT_TRUE((LosslessArithmeticConvertible<unsigned char, int>::value));
|
||||
|
||||
// Unsigned => larger unsigned is fine.
|
||||
EXPECT_TRUE(
|
||||
(LosslessArithmeticConvertible<unsigned short, UInt64>::value)); // NOLINT
|
||||
EXPECT_TRUE((LosslessArithmeticConvertible<
|
||||
unsigned short, uint64_t>::value)); // NOLINT
|
||||
|
||||
// Signed => unsigned is not fine.
|
||||
EXPECT_FALSE((LosslessArithmeticConvertible<short, UInt64>::value)); // NOLINT
|
||||
EXPECT_FALSE((LosslessArithmeticConvertible<
|
||||
short, uint64_t>::value)); // NOLINT
|
||||
EXPECT_FALSE((LosslessArithmeticConvertible<
|
||||
signed char, unsigned int>::value)); // NOLINT
|
||||
|
||||
@@ -242,12 +244,12 @@ TEST(LosslessArithmeticConvertibleTest, IntegerToInteger) {
|
||||
EXPECT_FALSE((LosslessArithmeticConvertible<
|
||||
unsigned char, signed char>::value));
|
||||
EXPECT_FALSE((LosslessArithmeticConvertible<int, unsigned int>::value));
|
||||
EXPECT_FALSE((LosslessArithmeticConvertible<UInt64, Int64>::value));
|
||||
EXPECT_FALSE((LosslessArithmeticConvertible<uint64_t, int64_t>::value));
|
||||
|
||||
// Larger size => smaller size is not fine.
|
||||
EXPECT_FALSE((LosslessArithmeticConvertible<long, char>::value)); // NOLINT
|
||||
EXPECT_FALSE((LosslessArithmeticConvertible<int, signed char>::value));
|
||||
EXPECT_FALSE((LosslessArithmeticConvertible<Int64, unsigned int>::value));
|
||||
EXPECT_FALSE((LosslessArithmeticConvertible<int64_t, unsigned int>::value));
|
||||
}
|
||||
|
||||
TEST(LosslessArithmeticConvertibleTest, IntegerToFloatingPoint) {
|
||||
@@ -266,7 +268,7 @@ TEST(LosslessArithmeticConvertibleTest, FloatingPointToBool) {
|
||||
|
||||
TEST(LosslessArithmeticConvertibleTest, FloatingPointToInteger) {
|
||||
EXPECT_FALSE((LosslessArithmeticConvertible<float, long>::value)); // NOLINT
|
||||
EXPECT_FALSE((LosslessArithmeticConvertible<double, Int64>::value));
|
||||
EXPECT_FALSE((LosslessArithmeticConvertible<double, int64_t>::value));
|
||||
EXPECT_FALSE((LosslessArithmeticConvertible<long double, int>::value));
|
||||
}
|
||||
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
#include <time.h>
|
||||
|
||||
#include <array>
|
||||
#include <cstdint>
|
||||
#include <deque>
|
||||
#include <forward_list>
|
||||
#include <functional>
|
||||
@@ -2987,18 +2988,13 @@ TEST(MatcherAssertionTest, WorksWhenMatcherIsNotSatisfied) {
|
||||
static unsigned short n; // NOLINT
|
||||
n = 5;
|
||||
|
||||
// VC++ prior to version 8.0 SP1 has a bug where it will not see any
|
||||
// functions declared in the namespace scope from within nested classes.
|
||||
// EXPECT/ASSERT_(NON)FATAL_FAILURE macros use nested classes so that all
|
||||
// namespace-level functions invoked inside them need to be explicitly
|
||||
// resolved.
|
||||
EXPECT_FATAL_FAILURE(ASSERT_THAT(n, ::testing::Gt(10)),
|
||||
EXPECT_FATAL_FAILURE(ASSERT_THAT(n, Gt(10)),
|
||||
"Value of: n\n"
|
||||
"Expected: is > 10\n"
|
||||
" Actual: 5" + OfType("unsigned short"));
|
||||
n = 0;
|
||||
EXPECT_NONFATAL_FAILURE(
|
||||
EXPECT_THAT(n, ::testing::AllOf(::testing::Le(7), ::testing::Ge(5))),
|
||||
EXPECT_THAT(n, AllOf(Le(7), Ge(5))),
|
||||
"Value of: n\n"
|
||||
"Expected: (is <= 7) and (is >= 5)\n"
|
||||
" Actual: 0" + OfType("unsigned short"));
|
||||
@@ -3012,11 +3008,11 @@ TEST(MatcherAssertionTest, WorksForByRefArguments) {
|
||||
static int n;
|
||||
n = 0;
|
||||
EXPECT_THAT(n, AllOf(Le(7), Ref(n)));
|
||||
EXPECT_FATAL_FAILURE(ASSERT_THAT(n, ::testing::Not(::testing::Ref(n))),
|
||||
EXPECT_FATAL_FAILURE(ASSERT_THAT(n, Not(Ref(n))),
|
||||
"Value of: n\n"
|
||||
"Expected: does not reference the variable @");
|
||||
// Tests the "Actual" part.
|
||||
EXPECT_FATAL_FAILURE(ASSERT_THAT(n, ::testing::Not(::testing::Ref(n))),
|
||||
EXPECT_FATAL_FAILURE(ASSERT_THAT(n, Not(Ref(n))),
|
||||
"Actual: 0" + OfType("int") + ", which is located @");
|
||||
}
|
||||
|
||||
@@ -6028,9 +6024,9 @@ TEST_P(BipartiteRandomTest, LargerNets) {
|
||||
int iters = GetParam().second;
|
||||
MatchMatrix graph(static_cast<size_t>(nodes), static_cast<size_t>(nodes));
|
||||
|
||||
auto seed = static_cast<testing::internal::UInt32>(GTEST_FLAG(random_seed));
|
||||
auto seed = static_cast<uint32_t>(GTEST_FLAG(random_seed));
|
||||
if (seed == 0) {
|
||||
seed = static_cast<testing::internal::UInt32>(time(nullptr));
|
||||
seed = static_cast<uint32_t>(time(nullptr));
|
||||
}
|
||||
|
||||
for (; iters > 0; --iters, ++seed) {
|
||||
|
||||
@@ -106,7 +106,7 @@ assertion* to get the function arguments printed for free:
|
||||
| Fatal assertion | Nonfatal assertion | Verifies |
|
||||
| --------------------------------- | --------------------------------- | --------------------------- |
|
||||
| `ASSERT_PRED1(pred1, val1)` | `EXPECT_PRED1(pred1, val1)` | `pred1(val1)` is true |
|
||||
| `ASSERT_PRED2(pred2, val1, val2)` | `EXPECT_PRED2(pred2, val1, val2)` | `pred1(val1, val2)` is true |
|
||||
| `ASSERT_PRED2(pred2, val1, val2)` | `EXPECT_PRED2(pred2, val1, val2)` | `pred2(val1, val2)` is true |
|
||||
| `...` | `...` | `...` |
|
||||
|
||||
<!-- mdformat on-->
|
||||
@@ -1231,7 +1231,7 @@ environment, which knows how to set-up and tear-down:
|
||||
```c++
|
||||
class Environment : public ::testing::Environment {
|
||||
public:
|
||||
virtual ~Environment() {}
|
||||
~Environment() override {}
|
||||
|
||||
// Override this to define how to set up the environment.
|
||||
void SetUp() override {}
|
||||
|
||||
@@ -261,7 +261,7 @@ TEST(TestSuiteName, TestName) {
|
||||
|
||||
`TEST()` arguments go from general to specific. The *first* argument is the name
|
||||
of the test suite, and the *second* argument is the test's name within the test
|
||||
case. Both names must be valid C++ identifiers, and they should not contain
|
||||
suite. Both names must be valid C++ identifiers, and they should not contain
|
||||
any underscores (`_`). A test's *full name* consists of its containing test suite and
|
||||
its individual name. Tests from different test suites can have the same
|
||||
individual name.
|
||||
|
||||
@@ -266,10 +266,8 @@ void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) {
|
||||
// 7.3.4-1 [namespace.udir]. This allows us to fall back onto
|
||||
// testing::internal2::operator<< in case T doesn't come with a <<
|
||||
// operator.
|
||||
//
|
||||
// We cannot write 'using ::testing::internal2::operator<<;', which
|
||||
// gcc 3.3 fails to compile due to a compiler bug.
|
||||
using namespace ::testing::internal2; // NOLINT
|
||||
|
||||
using ::testing::internal2::operator<<;
|
||||
|
||||
// Assuming T is defined in namespace foo, in the next statement,
|
||||
// the compiler will consider all of:
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
#include <ctype.h>
|
||||
#include <float.h>
|
||||
#include <string.h>
|
||||
#include <cstdint>
|
||||
#include <iomanip>
|
||||
#include <limits>
|
||||
#include <map>
|
||||
@@ -842,18 +843,18 @@ struct GTEST_API_ TrueWithString {
|
||||
// but it's good enough for our purposes.
|
||||
class GTEST_API_ Random {
|
||||
public:
|
||||
static const UInt32 kMaxRange = 1u << 31;
|
||||
static const uint32_t kMaxRange = 1u << 31;
|
||||
|
||||
explicit Random(UInt32 seed) : state_(seed) {}
|
||||
explicit Random(uint32_t seed) : state_(seed) {}
|
||||
|
||||
void Reseed(UInt32 seed) { state_ = seed; }
|
||||
void Reseed(uint32_t seed) { state_ = seed; }
|
||||
|
||||
// Generates a random number from [0, range). Crashes if 'range' is
|
||||
// 0 or greater than kMaxRange.
|
||||
UInt32 Generate(UInt32 range);
|
||||
uint32_t Generate(uint32_t range);
|
||||
|
||||
private:
|
||||
UInt32 state_;
|
||||
uint32_t state_;
|
||||
GTEST_DISALLOW_COPY_AND_ASSIGN_(Random);
|
||||
};
|
||||
|
||||
@@ -1185,7 +1186,7 @@ struct FlatTupleBase<FlatTuple<T...>, IndexSequence<Idx...>>
|
||||
|
||||
// Analog to std::tuple but with different tradeoffs.
|
||||
// This class minimizes the template instantiation depth, thus allowing more
|
||||
// elements that std::tuple would. std::tuple has been seen to require an
|
||||
// elements than std::tuple would. std::tuple has been seen to require an
|
||||
// instantiation depth of more than 10x the number of elements in some
|
||||
// implementations.
|
||||
// FlatTuple and ElemFromList are not recursive and have a fixed depth
|
||||
@@ -1196,7 +1197,8 @@ template <typename... T>
|
||||
class FlatTuple
|
||||
: private FlatTupleBase<FlatTuple<T...>,
|
||||
typename MakeIndexSequence<sizeof...(T)>::type> {
|
||||
using Indices = typename FlatTuple::FlatTupleBase::Indices;
|
||||
using Indices = typename FlatTupleBase<
|
||||
FlatTuple<T...>, typename MakeIndexSequence<sizeof...(T)>::type>::Indices;
|
||||
|
||||
public:
|
||||
FlatTuple() = default;
|
||||
|
||||
@@ -223,8 +223,7 @@
|
||||
//
|
||||
// Integer types:
|
||||
// TypeWithSize - maps an integer to a int type.
|
||||
// Int32, UInt32, Int64, UInt64, TimeInMillis
|
||||
// - integers of known sizes.
|
||||
// TimeInMillis - integers of known sizes.
|
||||
// BiggestInt - the biggest signed integer type.
|
||||
//
|
||||
// Command-line utilities:
|
||||
@@ -235,7 +234,7 @@
|
||||
// Environment variable utilities:
|
||||
// GetEnv() - gets the value of an environment variable.
|
||||
// BoolFromGTestEnv() - parses a bool environment variable.
|
||||
// Int32FromGTestEnv() - parses an Int32 environment variable.
|
||||
// Int32FromGTestEnv() - parses an int32_t environment variable.
|
||||
// StringFromGTestEnv() - parses a string environment variable.
|
||||
//
|
||||
// Deprecation warnings:
|
||||
@@ -248,6 +247,8 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <cstdint>
|
||||
#include <limits>
|
||||
#include <type_traits>
|
||||
|
||||
#ifndef _WIN32_WCE
|
||||
@@ -1876,12 +1877,9 @@ GTEST_API_ size_t GetThreadCount();
|
||||
#if GTEST_OS_WINDOWS
|
||||
# define GTEST_PATH_SEP_ "\\"
|
||||
# define GTEST_HAS_ALT_PATH_SEP_ 1
|
||||
// The biggest signed integer type the compiler supports.
|
||||
typedef __int64 BiggestInt;
|
||||
#else
|
||||
# define GTEST_PATH_SEP_ "/"
|
||||
# define GTEST_HAS_ALT_PATH_SEP_ 0
|
||||
typedef long long BiggestInt; // NOLINT
|
||||
#endif // GTEST_OS_WINDOWS
|
||||
|
||||
// Utilities for char.
|
||||
@@ -2084,15 +2082,13 @@ GTEST_DISABLE_MSC_DEPRECATED_POP_()
|
||||
# define GTEST_SNPRINTF_ snprintf
|
||||
#endif
|
||||
|
||||
// The maximum number a BiggestInt can represent. This definition
|
||||
// works no matter BiggestInt is represented in one's complement or
|
||||
// two's complement.
|
||||
// The biggest signed integer type the compiler supports.
|
||||
//
|
||||
// We cannot rely on numeric_limits in STL, as __int64 and long long
|
||||
// are not part of standard C++ and numeric_limits doesn't need to be
|
||||
// defined for them.
|
||||
const BiggestInt kMaxBiggestInt =
|
||||
~(static_cast<BiggestInt>(1) << (8*sizeof(BiggestInt) - 1));
|
||||
// long long is guaranteed to be at least 64-bits in C++11.
|
||||
using BiggestInt = long long; // NOLINT
|
||||
|
||||
// The maximum number a BiggestInt can represent.
|
||||
constexpr BiggestInt kMaxBiggestInt = (std::numeric_limits<BiggestInt>::max)();
|
||||
|
||||
// This template class serves as a compile-time function from size to
|
||||
// type. It maps a size in bytes to a primitive type with that
|
||||
@@ -2117,40 +2113,27 @@ class TypeWithSize {
|
||||
public:
|
||||
// This prevents the user from using TypeWithSize<N> with incorrect
|
||||
// values of N.
|
||||
typedef void UInt;
|
||||
using UInt = void;
|
||||
};
|
||||
|
||||
// The specialization for size 4.
|
||||
template <>
|
||||
class TypeWithSize<4> {
|
||||
public:
|
||||
// unsigned int has size 4 in both gcc and MSVC.
|
||||
//
|
||||
// As base/basictypes.h doesn't compile on Windows, we cannot use
|
||||
// uint32, uint64, and etc here.
|
||||
typedef int Int;
|
||||
typedef unsigned int UInt;
|
||||
using Int = std::int32_t;
|
||||
using UInt = std::uint32_t;
|
||||
};
|
||||
|
||||
// The specialization for size 8.
|
||||
template <>
|
||||
class TypeWithSize<8> {
|
||||
public:
|
||||
#if GTEST_OS_WINDOWS
|
||||
typedef __int64 Int;
|
||||
typedef unsigned __int64 UInt;
|
||||
#else
|
||||
typedef long long Int; // NOLINT
|
||||
typedef unsigned long long UInt; // NOLINT
|
||||
#endif // GTEST_OS_WINDOWS
|
||||
using Int = std::int64_t;
|
||||
using UInt = std::uint64_t;
|
||||
};
|
||||
|
||||
// Integer types of known sizes.
|
||||
typedef TypeWithSize<4>::Int Int32;
|
||||
typedef TypeWithSize<4>::UInt UInt32;
|
||||
typedef TypeWithSize<8>::Int Int64;
|
||||
typedef TypeWithSize<8>::UInt UInt64;
|
||||
typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds.
|
||||
using TimeInMillis = int64_t; // Represents time in milliseconds.
|
||||
|
||||
// Utilities for command line flags and environment variables.
|
||||
|
||||
@@ -2169,7 +2152,7 @@ typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds.
|
||||
// Macros for declaring flags.
|
||||
# define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name)
|
||||
# define GTEST_DECLARE_int32_(name) \
|
||||
GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name)
|
||||
GTEST_API_ extern std::int32_t GTEST_FLAG(name)
|
||||
# define GTEST_DECLARE_string_(name) \
|
||||
GTEST_API_ extern ::std::string GTEST_FLAG(name)
|
||||
|
||||
@@ -2177,7 +2160,7 @@ typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds.
|
||||
# define GTEST_DEFINE_bool_(name, default_val, doc) \
|
||||
GTEST_API_ bool GTEST_FLAG(name) = (default_val)
|
||||
# define GTEST_DEFINE_int32_(name, default_val, doc) \
|
||||
GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val)
|
||||
GTEST_API_ std::int32_t GTEST_FLAG(name) = (default_val)
|
||||
# define GTEST_DEFINE_string_(name, default_val, doc) \
|
||||
GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val)
|
||||
|
||||
@@ -2192,12 +2175,12 @@ typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds.
|
||||
// Parses 'str' for a 32-bit signed integer. If successful, writes the result
|
||||
// to *value and returns true; otherwise leaves *value unchanged and returns
|
||||
// false.
|
||||
bool ParseInt32(const Message& src_text, const char* str, Int32* value);
|
||||
bool ParseInt32(const Message& src_text, const char* str, int32_t* value);
|
||||
|
||||
// Parses a bool/Int32/string from the environment variable
|
||||
// Parses a bool/int32_t/string from the environment variable
|
||||
// corresponding to the given Google Test flag.
|
||||
bool BoolFromGTestEnv(const char* flag, bool default_val);
|
||||
GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val);
|
||||
GTEST_API_ int32_t Int32FromGTestEnv(const char* flag, int32_t default_val);
|
||||
std::string OutputFlagAlsoCheckEnvVar();
|
||||
const char* StringFromGTestEnv(const char* flag, const char* default_val);
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
#include "gtest/internal/gtest-port.h"
|
||||
@@ -152,7 +153,7 @@ class GTEST_API_ String {
|
||||
static std::string FormatHexInt(int value);
|
||||
|
||||
// Formats an int value as "%X".
|
||||
static std::string FormatHexUInt32(UInt32 value);
|
||||
static std::string FormatHexUInt32(uint32_t value);
|
||||
|
||||
// Formats a byte as "%02X".
|
||||
static std::string FormatByte(unsigned char value);
|
||||
|
||||
@@ -439,9 +439,8 @@ bool PredFunction%(n)s(%(tvs)s) {
|
||||
return %(v_sum)s > 0;
|
||||
}
|
||||
|
||||
// The following two functions are needed to circumvent a bug in
|
||||
// gcc 2.95.3, which sometimes has problem with the above template
|
||||
// function.
|
||||
// The following two functions are needed because a compiler doesn't have
|
||||
// a context yet to know which template function must be instantiated.
|
||||
bool PredFunction%(n)sInt(%(int_vs)s) {
|
||||
return %(v_sum)s > 0;
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
#include <string.h> // For memmove.
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
@@ -123,11 +124,11 @@ GTEST_API_ std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms);
|
||||
// On success, stores the value of the flag in *value, and returns
|
||||
// true. On failure, returns false without changing *value.
|
||||
GTEST_API_ bool ParseInt32Flag(
|
||||
const char* str, const char* flag, Int32* value);
|
||||
const char* str, const char* flag, int32_t* value);
|
||||
|
||||
// Returns a random seed in range [1, kMaxRandomSeed] based on the
|
||||
// given --gtest_random_seed flag value.
|
||||
inline int GetRandomSeedFromFlag(Int32 random_seed_flag) {
|
||||
inline int GetRandomSeedFromFlag(int32_t random_seed_flag) {
|
||||
const unsigned int raw_seed = (random_seed_flag == 0) ?
|
||||
static_cast<unsigned int>(GetTimeInMillis()) :
|
||||
static_cast<unsigned int>(random_seed_flag);
|
||||
@@ -213,10 +214,10 @@ class GTestFlagSaver {
|
||||
std::string output_;
|
||||
bool print_time_;
|
||||
bool print_utf8_;
|
||||
internal::Int32 random_seed_;
|
||||
internal::Int32 repeat_;
|
||||
int32_t random_seed_;
|
||||
int32_t repeat_;
|
||||
bool shuffle_;
|
||||
internal::Int32 stack_trace_depth_;
|
||||
int32_t stack_trace_depth_;
|
||||
std::string stream_result_to_;
|
||||
bool throw_on_failure_;
|
||||
} GTEST_ATTRIBUTE_UNUSED_;
|
||||
@@ -227,7 +228,7 @@ class GTestFlagSaver {
|
||||
// If the code_point is not a valid Unicode code point
|
||||
// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted
|
||||
// to "(Invalid Unicode 0xXXXXXXXX)".
|
||||
GTEST_API_ std::string CodePointToUtf8(UInt32 code_point);
|
||||
GTEST_API_ std::string CodePointToUtf8(uint32_t code_point);
|
||||
|
||||
// Converts a wide string to a narrow string in UTF-8 encoding.
|
||||
// The wide string is assumed to have the following encoding:
|
||||
@@ -260,10 +261,10 @@ GTEST_API_ bool ShouldShard(const char* total_shards_str,
|
||||
const char* shard_index_str,
|
||||
bool in_subprocess_for_death_test);
|
||||
|
||||
// Parses the environment variable var as an Int32. If it is unset,
|
||||
// returns default_val. If it is not an Int32, prints an error and
|
||||
// Parses the environment variable var as a 32-bit integer. If it is unset,
|
||||
// returns default_val. If it is not a 32-bit integer, prints an error and
|
||||
// and aborts.
|
||||
GTEST_API_ Int32 Int32FromEnvOrDie(const char* env_var, Int32 default_val);
|
||||
GTEST_API_ int32_t Int32FromEnvOrDie(const char* env_var, int32_t default_val);
|
||||
|
||||
// Given the total number of shards, the shard index, and the test id,
|
||||
// returns true if and only if the test should be run on this shard. The test id
|
||||
@@ -323,7 +324,7 @@ void ShuffleRange(internal::Random* random, int begin, int end,
|
||||
const int last_in_range = begin + range_width - 1;
|
||||
const int selected =
|
||||
begin +
|
||||
static_cast<int>(random->Generate(static_cast<UInt32>(range_width)));
|
||||
static_cast<int>(random->Generate(static_cast<uint32_t>(range_width)));
|
||||
std::swap((*v)[static_cast<size_t>(selected)],
|
||||
(*v)[static_cast<size_t>(last_in_range)]);
|
||||
}
|
||||
@@ -999,20 +1000,9 @@ bool ParseNaturalNumber(const ::std::string& str, Integer* number) {
|
||||
char* end;
|
||||
// BiggestConvertible is the largest integer type that system-provided
|
||||
// string-to-number conversion routines can return.
|
||||
using BiggestConvertible = unsigned long long; // NOLINT
|
||||
|
||||
# if GTEST_OS_WINDOWS && !defined(__GNUC__)
|
||||
|
||||
// MSVC and C++ Builder define __int64 instead of the standard long long.
|
||||
typedef unsigned __int64 BiggestConvertible;
|
||||
const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10);
|
||||
|
||||
# else
|
||||
|
||||
typedef unsigned long long BiggestConvertible; // NOLINT
|
||||
const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10);
|
||||
|
||||
# endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
|
||||
|
||||
const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); // NOLINT
|
||||
const bool parse_success = *end == '\0' && errno == 0;
|
||||
|
||||
GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed));
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <cstdint>
|
||||
#include <fstream>
|
||||
#include <memory>
|
||||
|
||||
@@ -536,6 +537,9 @@ class ThreadLocalRegistryImpl {
|
||||
// Returns a value that can be used to identify the thread from other threads.
|
||||
static ThreadLocalValueHolderBase* GetValueOnCurrentThread(
|
||||
const ThreadLocalBase* thread_local_instance) {
|
||||
#ifdef _MSC_VER
|
||||
MemoryIsNotDeallocated memory_is_not_deallocated;
|
||||
#endif // _MSC_VER
|
||||
DWORD current_thread = ::GetCurrentThreadId();
|
||||
MutexLock lock(&mutex_);
|
||||
ThreadIdToThreadLocals* const thread_to_thread_locals =
|
||||
@@ -1286,7 +1290,7 @@ static std::string FlagToEnvVar(const char* flag) {
|
||||
// Parses 'str' for a 32-bit signed integer. If successful, writes
|
||||
// the result to *value and returns true; otherwise leaves *value
|
||||
// unchanged and returns false.
|
||||
bool ParseInt32(const Message& src_text, const char* str, Int32* value) {
|
||||
bool ParseInt32(const Message& src_text, const char* str, int32_t* value) {
|
||||
// Parses the environment variable as a decimal integer.
|
||||
char* end = nullptr;
|
||||
const long long_value = strtol(str, &end, 10); // NOLINT
|
||||
@@ -1303,13 +1307,13 @@ bool ParseInt32(const Message& src_text, const char* str, Int32* value) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Is the parsed value in the range of an Int32?
|
||||
const Int32 result = static_cast<Int32>(long_value);
|
||||
// Is the parsed value in the range of an int32_t?
|
||||
const auto result = static_cast<int32_t>(long_value);
|
||||
if (long_value == LONG_MAX || long_value == LONG_MIN ||
|
||||
// The parsed value overflows as a long. (strtol() returns
|
||||
// LONG_MAX or LONG_MIN when the input overflows.)
|
||||
result != long_value
|
||||
// The parsed value overflows as an Int32.
|
||||
// The parsed value overflows as an int32_t.
|
||||
) {
|
||||
Message msg;
|
||||
msg << "WARNING: " << src_text
|
||||
@@ -1342,7 +1346,7 @@ bool BoolFromGTestEnv(const char* flag, bool default_value) {
|
||||
// Reads and returns a 32-bit integer stored in the environment
|
||||
// variable corresponding to the given flag; if it isn't set or
|
||||
// doesn't represent a valid 32-bit integer, returns default_value.
|
||||
Int32 Int32FromGTestEnv(const char* flag, Int32 default_value) {
|
||||
int32_t Int32FromGTestEnv(const char* flag, int32_t default_value) {
|
||||
#if defined(GTEST_GET_INT32_FROM_ENV_)
|
||||
return GTEST_GET_INT32_FROM_ENV_(flag, default_value);
|
||||
#else
|
||||
@@ -1353,7 +1357,7 @@ Int32 Int32FromGTestEnv(const char* flag, Int32 default_value) {
|
||||
return default_value;
|
||||
}
|
||||
|
||||
Int32 result = default_value;
|
||||
int32_t result = default_value;
|
||||
if (!ParseInt32(Message() << "Environment variable " << env_var,
|
||||
string_value, &result)) {
|
||||
printf("The default value %s is used.\n",
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
#include <wctype.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstdint>
|
||||
#include <iomanip>
|
||||
#include <limits>
|
||||
#include <list>
|
||||
@@ -333,10 +334,10 @@ namespace internal {
|
||||
// Generates a random number from [0, range), using a Linear
|
||||
// Congruential Generator (LCG). Crashes if 'range' is 0 or greater
|
||||
// than kMaxRange.
|
||||
UInt32 Random::Generate(UInt32 range) {
|
||||
uint32_t Random::Generate(uint32_t range) {
|
||||
// These constants are the same as are used in glibc's rand(3).
|
||||
// Use wider types than necessary to prevent unsigned overflow diagnostics.
|
||||
state_ = static_cast<UInt32>(1103515245ULL*state_ + 12345U) % kMaxRange;
|
||||
state_ = static_cast<uint32_t>(1103515245ULL*state_ + 12345U) % kMaxRange;
|
||||
|
||||
GTEST_CHECK_(range > 0)
|
||||
<< "Cannot generate a number in the range [0, 0).";
|
||||
@@ -1738,33 +1739,33 @@ AssertionResult IsHRESULTFailure(const char* expr, long hr) { // NOLINT
|
||||
// 17 - 21 bits 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
|
||||
|
||||
// The maximum code-point a one-byte UTF-8 sequence can represent.
|
||||
const UInt32 kMaxCodePoint1 = (static_cast<UInt32>(1) << 7) - 1;
|
||||
constexpr uint32_t kMaxCodePoint1 = (static_cast<uint32_t>(1) << 7) - 1;
|
||||
|
||||
// The maximum code-point a two-byte UTF-8 sequence can represent.
|
||||
const UInt32 kMaxCodePoint2 = (static_cast<UInt32>(1) << (5 + 6)) - 1;
|
||||
constexpr uint32_t kMaxCodePoint2 = (static_cast<uint32_t>(1) << (5 + 6)) - 1;
|
||||
|
||||
// The maximum code-point a three-byte UTF-8 sequence can represent.
|
||||
const UInt32 kMaxCodePoint3 = (static_cast<UInt32>(1) << (4 + 2*6)) - 1;
|
||||
constexpr uint32_t kMaxCodePoint3 = (static_cast<uint32_t>(1) << (4 + 2*6)) - 1;
|
||||
|
||||
// The maximum code-point a four-byte UTF-8 sequence can represent.
|
||||
const UInt32 kMaxCodePoint4 = (static_cast<UInt32>(1) << (3 + 3*6)) - 1;
|
||||
constexpr uint32_t kMaxCodePoint4 = (static_cast<uint32_t>(1) << (3 + 3*6)) - 1;
|
||||
|
||||
// Chops off the n lowest bits from a bit pattern. Returns the n
|
||||
// lowest bits. As a side effect, the original bit pattern will be
|
||||
// shifted to the right by n bits.
|
||||
inline UInt32 ChopLowBits(UInt32* bits, int n) {
|
||||
const UInt32 low_bits = *bits & ((static_cast<UInt32>(1) << n) - 1);
|
||||
inline uint32_t ChopLowBits(uint32_t* bits, int n) {
|
||||
const uint32_t low_bits = *bits & ((static_cast<uint32_t>(1) << n) - 1);
|
||||
*bits >>= n;
|
||||
return low_bits;
|
||||
}
|
||||
|
||||
// Converts a Unicode code point to a narrow string in UTF-8 encoding.
|
||||
// code_point parameter is of type UInt32 because wchar_t may not be
|
||||
// code_point parameter is of type uint32_t because wchar_t may not be
|
||||
// wide enough to contain a code point.
|
||||
// If the code_point is not a valid Unicode code point
|
||||
// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted
|
||||
// to "(Invalid Unicode 0xXXXXXXXX)".
|
||||
std::string CodePointToUtf8(UInt32 code_point) {
|
||||
std::string CodePointToUtf8(uint32_t code_point) {
|
||||
if (code_point > kMaxCodePoint4) {
|
||||
return "(Invalid Unicode 0x" + String::FormatHexUInt32(code_point) + ")";
|
||||
}
|
||||
@@ -1805,11 +1806,11 @@ inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
|
||||
}
|
||||
|
||||
// Creates a Unicode code point from UTF16 surrogate pair.
|
||||
inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first,
|
||||
wchar_t second) {
|
||||
const auto first_u = static_cast<UInt32>(first);
|
||||
const auto second_u = static_cast<UInt32>(second);
|
||||
const UInt32 mask = (1 << 10) - 1;
|
||||
inline uint32_t CreateCodePointFromUtf16SurrogatePair(wchar_t first,
|
||||
wchar_t second) {
|
||||
const auto first_u = static_cast<uint32_t>(first);
|
||||
const auto second_u = static_cast<uint32_t>(second);
|
||||
const uint32_t mask = (1 << 10) - 1;
|
||||
return (sizeof(wchar_t) == 2)
|
||||
? (((first_u & mask) << 10) | (second_u & mask)) + 0x10000
|
||||
:
|
||||
@@ -1837,7 +1838,7 @@ std::string WideStringToUtf8(const wchar_t* str, int num_chars) {
|
||||
|
||||
::std::stringstream stream;
|
||||
for (int i = 0; i < num_chars; ++i) {
|
||||
UInt32 unicode_code_point;
|
||||
uint32_t unicode_code_point;
|
||||
|
||||
if (str[i] == L'\0') {
|
||||
break;
|
||||
@@ -1846,7 +1847,7 @@ std::string WideStringToUtf8(const wchar_t* str, int num_chars) {
|
||||
str[i + 1]);
|
||||
i++;
|
||||
} else {
|
||||
unicode_code_point = static_cast<UInt32>(str[i]);
|
||||
unicode_code_point = static_cast<uint32_t>(str[i]);
|
||||
}
|
||||
|
||||
stream << CodePointToUtf8(unicode_code_point);
|
||||
@@ -1972,7 +1973,7 @@ std::string String::FormatIntWidth2(int value) {
|
||||
}
|
||||
|
||||
// Formats an int value as "%X".
|
||||
std::string String::FormatHexUInt32(UInt32 value) {
|
||||
std::string String::FormatHexUInt32(uint32_t value) {
|
||||
std::stringstream ss;
|
||||
ss << std::hex << std::uppercase << value;
|
||||
return ss.str();
|
||||
@@ -1980,7 +1981,7 @@ std::string String::FormatHexUInt32(UInt32 value) {
|
||||
|
||||
// Formats an int value as "%X".
|
||||
std::string String::FormatHexInt(int value) {
|
||||
return FormatHexUInt32(static_cast<UInt32>(value));
|
||||
return FormatHexUInt32(static_cast<uint32_t>(value));
|
||||
}
|
||||
|
||||
// Formats a byte as "%02X".
|
||||
@@ -3156,7 +3157,7 @@ void PrettyUnitTestResultPrinter::OnTestIterationStart(
|
||||
}
|
||||
|
||||
if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) {
|
||||
const Int32 shard_index = Int32FromEnvOrDie(kTestShardIndex, -1);
|
||||
const int32_t shard_index = Int32FromEnvOrDie(kTestShardIndex, -1);
|
||||
ColoredPrintf(COLOR_YELLOW,
|
||||
"Note: This is test shard %d of %s.\n",
|
||||
static_cast<int>(shard_index) + 1,
|
||||
@@ -5302,7 +5303,7 @@ bool UnitTestImpl::RunAllTests() {
|
||||
|
||||
// Shuffles test suites and tests if requested.
|
||||
if (has_tests_to_run && GTEST_FLAG(shuffle)) {
|
||||
random()->Reseed(static_cast<UInt32>(random_seed_));
|
||||
random()->Reseed(static_cast<uint32_t>(random_seed_));
|
||||
// This should be done before calling OnTestIterationStart(),
|
||||
// such that a test event listener can see the actual test order
|
||||
// in the event.
|
||||
@@ -5425,8 +5426,8 @@ bool ShouldShard(const char* total_shards_env,
|
||||
return false;
|
||||
}
|
||||
|
||||
const Int32 total_shards = Int32FromEnvOrDie(total_shards_env, -1);
|
||||
const Int32 shard_index = Int32FromEnvOrDie(shard_index_env, -1);
|
||||
const int32_t total_shards = Int32FromEnvOrDie(total_shards_env, -1);
|
||||
const int32_t shard_index = Int32FromEnvOrDie(shard_index_env, -1);
|
||||
|
||||
if (total_shards == -1 && shard_index == -1) {
|
||||
return false;
|
||||
@@ -5463,13 +5464,13 @@ bool ShouldShard(const char* total_shards_env,
|
||||
// Parses the environment variable var as an Int32. If it is unset,
|
||||
// returns default_val. If it is not an Int32, prints an error
|
||||
// and aborts.
|
||||
Int32 Int32FromEnvOrDie(const char* var, Int32 default_val) {
|
||||
int32_t Int32FromEnvOrDie(const char* var, int32_t default_val) {
|
||||
const char* str_val = posix::GetEnv(var);
|
||||
if (str_val == nullptr) {
|
||||
return default_val;
|
||||
}
|
||||
|
||||
Int32 result;
|
||||
int32_t result;
|
||||
if (!ParseInt32(Message() << "The value of environment variable " << var,
|
||||
str_val, &result)) {
|
||||
exit(EXIT_FAILURE);
|
||||
@@ -5493,9 +5494,9 @@ bool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id) {
|
||||
// https://github.com/google/googletest/blob/master/googletest/docs/advanced.md
|
||||
// . Returns the number of tests that should run.
|
||||
int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
|
||||
const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ?
|
||||
const int32_t total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ?
|
||||
Int32FromEnvOrDie(kTestTotalShards, -1) : -1;
|
||||
const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ?
|
||||
const int32_t shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ?
|
||||
Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
|
||||
|
||||
// num_runnable_tests are the number of tests that will
|
||||
@@ -5784,12 +5785,11 @@ static bool ParseBoolFlag(const char* str, const char* flag, bool* value) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Parses a string for an Int32 flag, in the form of
|
||||
// "--flag=value".
|
||||
// Parses a string for an int32_t flag, in the form of "--flag=value".
|
||||
//
|
||||
// On success, stores the value of the flag in *value, and returns
|
||||
// true. On failure, returns false without changing *value.
|
||||
bool ParseInt32Flag(const char* str, const char* flag, Int32* value) {
|
||||
bool ParseInt32Flag(const char* str, const char* flag, int32_t* value) {
|
||||
// Gets the value of the flag as a string.
|
||||
const char* const value_str = ParseFlagValue(str, flag, false);
|
||||
|
||||
@@ -5801,8 +5801,7 @@ bool ParseInt32Flag(const char* str, const char* flag, Int32* value) {
|
||||
value_str, value);
|
||||
}
|
||||
|
||||
// Parses a string for a string flag, in the form of
|
||||
// "--flag=value".
|
||||
// Parses a string for a string flag, in the form of "--flag=value".
|
||||
//
|
||||
// On success, stores the value of the flag in *value, and returns
|
||||
// true. On failure, returns false without changing *value.
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#include <cstdio>
|
||||
#include <iostream>
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
#if GTEST_OS_ESP8266 || GTEST_OS_ESP32
|
||||
@@ -45,9 +45,14 @@ void loop() { RUN_ALL_TESTS(); }
|
||||
#endif
|
||||
|
||||
#else
|
||||
#if __MSC_VER
|
||||
# include <tchar.h> // NOLINT
|
||||
|
||||
GTEST_API_ int main(int argc, char **argv) {
|
||||
printf("Running main() from %s\n", __FILE__);
|
||||
GTEST_API_ int _tmain(int argc, TCHAR** argv) {
|
||||
#else
|
||||
GTEST_API_ int main(int argc, char** argv) {
|
||||
#endif // __MSC_VER
|
||||
std::cout << "Running main() from " << __FILE__ << '\n';
|
||||
testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
"""Tests the text output of Google C++ Testing and Mocking Framework.
|
||||
r"""Tests the text output of Google C++ Testing and Mocking Framework.
|
||||
|
||||
To update the golden file:
|
||||
googletest_output_test.py --build_dir=BUILD/DIR --gengolden
|
||||
@@ -331,7 +331,7 @@ if __name__ == '__main__':
|
||||
if CAN_GENERATE_GOLDEN_FILE:
|
||||
output = GetOutputOfAllCommands()
|
||||
golden_file = open(GOLDEN_PATH, 'wb')
|
||||
golden_file.write(output)
|
||||
golden_file.write(output.encode())
|
||||
golden_file.close()
|
||||
else:
|
||||
message = (
|
||||
|
||||
@@ -33,11 +33,12 @@
|
||||
// This file tests the universal value printer.
|
||||
|
||||
#include <ctype.h>
|
||||
#include <limits.h>
|
||||
#include <string.h>
|
||||
#include <algorithm>
|
||||
#include <cstdint>
|
||||
#include <deque>
|
||||
#include <forward_list>
|
||||
#include <limits>
|
||||
#include <list>
|
||||
#include <map>
|
||||
#include <set>
|
||||
@@ -339,23 +340,25 @@ TEST(PrintBuiltInTypeTest, Wchar_t) {
|
||||
EXPECT_EQ("L'\\xC74D' (51021)", Print(static_cast<wchar_t>(0xC74D)));
|
||||
}
|
||||
|
||||
// Test that Int64 provides more storage than wchar_t.
|
||||
// Test that int64_t provides more storage than wchar_t.
|
||||
TEST(PrintTypeSizeTest, Wchar_t) {
|
||||
EXPECT_LT(sizeof(wchar_t), sizeof(testing::internal::Int64));
|
||||
EXPECT_LT(sizeof(wchar_t), sizeof(int64_t));
|
||||
}
|
||||
|
||||
// Various integer types.
|
||||
TEST(PrintBuiltInTypeTest, Integer) {
|
||||
EXPECT_EQ("'\\xFF' (255)", Print(static_cast<unsigned char>(255))); // uint8
|
||||
EXPECT_EQ("'\\x80' (-128)", Print(static_cast<signed char>(-128))); // int8
|
||||
EXPECT_EQ("65535", Print(USHRT_MAX)); // uint16
|
||||
EXPECT_EQ("-32768", Print(SHRT_MIN)); // int16
|
||||
EXPECT_EQ("4294967295", Print(UINT_MAX)); // uint32
|
||||
EXPECT_EQ("-2147483648", Print(INT_MIN)); // int32
|
||||
EXPECT_EQ("65535", Print(std::numeric_limits<uint16_t>::max())); // uint16
|
||||
EXPECT_EQ("-32768", Print(std::numeric_limits<int16_t>::min())); // int16
|
||||
EXPECT_EQ("4294967295",
|
||||
Print(std::numeric_limits<uint32_t>::max())); // uint32
|
||||
EXPECT_EQ("-2147483648",
|
||||
Print(std::numeric_limits<int32_t>::min())); // int32
|
||||
EXPECT_EQ("18446744073709551615",
|
||||
Print(static_cast<testing::internal::UInt64>(-1))); // uint64
|
||||
Print(std::numeric_limits<uint64_t>::max())); // uint64
|
||||
EXPECT_EQ("-9223372036854775808",
|
||||
Print(static_cast<testing::internal::Int64>(1) << 63)); // int64
|
||||
Print(std::numeric_limits<int64_t>::min())); // int64
|
||||
}
|
||||
|
||||
// Size types.
|
||||
@@ -977,9 +980,8 @@ TEST(PrintStdTupleTest, VariousSizes) {
|
||||
EXPECT_EQ("(false, 2, 3, 4)", Print(t4));
|
||||
|
||||
const char* const str = "8";
|
||||
::std::tuple<bool, char, short, testing::internal::Int32, // NOLINT
|
||||
testing::internal::Int64, float, double, const char*, void*,
|
||||
std::string>
|
||||
::std::tuple<bool, char, short, int32_t, int64_t, float, double, // NOLINT
|
||||
const char*, void*, std::string>
|
||||
t10(false, 'a', static_cast<short>(3), 4, 5, 1.5F, -2.5, str, // NOLINT
|
||||
nullptr, "10");
|
||||
EXPECT_EQ("(false, 'a' (97, 0x61), 3, 4, 5, 1.5, -2.5, " + PrintPointer(str) +
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// (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 is AUTOMATICALLY GENERATED on 01/02/2019 by command
|
||||
// This file is AUTOMATICALLY GENERATED on 11/05/2019 by command
|
||||
// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND!
|
||||
|
||||
// Regression test for gtest_pred_impl.h
|
||||
@@ -78,9 +78,8 @@ bool PredFunction1(T1 v1) {
|
||||
return v1 > 0;
|
||||
}
|
||||
|
||||
// The following two functions are needed to circumvent a bug in
|
||||
// gcc 2.95.3, which sometimes has problem with the above template
|
||||
// function.
|
||||
// The following two functions are needed because a compiler doesn't have
|
||||
// a context yet to know which template function must be instantiated.
|
||||
bool PredFunction1Int(int v1) {
|
||||
return v1 > 0;
|
||||
}
|
||||
@@ -465,9 +464,8 @@ bool PredFunction2(T1 v1, T2 v2) {
|
||||
return v1 + v2 > 0;
|
||||
}
|
||||
|
||||
// The following two functions are needed to circumvent a bug in
|
||||
// gcc 2.95.3, which sometimes has problem with the above template
|
||||
// function.
|
||||
// The following two functions are needed because a compiler doesn't have
|
||||
// a context yet to know which template function must be instantiated.
|
||||
bool PredFunction2Int(int v1, int v2) {
|
||||
return v1 + v2 > 0;
|
||||
}
|
||||
@@ -894,9 +892,8 @@ bool PredFunction3(T1 v1, T2 v2, T3 v3) {
|
||||
return v1 + v2 + v3 > 0;
|
||||
}
|
||||
|
||||
// The following two functions are needed to circumvent a bug in
|
||||
// gcc 2.95.3, which sometimes has problem with the above template
|
||||
// function.
|
||||
// The following two functions are needed because a compiler doesn't have
|
||||
// a context yet to know which template function must be instantiated.
|
||||
bool PredFunction3Int(int v1, int v2, int v3) {
|
||||
return v1 + v2 + v3 > 0;
|
||||
}
|
||||
@@ -1365,9 +1362,8 @@ bool PredFunction4(T1 v1, T2 v2, T3 v3, T4 v4) {
|
||||
return v1 + v2 + v3 + v4 > 0;
|
||||
}
|
||||
|
||||
// The following two functions are needed to circumvent a bug in
|
||||
// gcc 2.95.3, which sometimes has problem with the above template
|
||||
// function.
|
||||
// The following two functions are needed because a compiler doesn't have
|
||||
// a context yet to know which template function must be instantiated.
|
||||
bool PredFunction4Int(int v1, int v2, int v3, int v4) {
|
||||
return v1 + v2 + v3 + v4 > 0;
|
||||
}
|
||||
@@ -1878,9 +1874,8 @@ bool PredFunction5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) {
|
||||
return v1 + v2 + v3 + v4 + v5 > 0;
|
||||
}
|
||||
|
||||
// The following two functions are needed to circumvent a bug in
|
||||
// gcc 2.95.3, which sometimes has problem with the above template
|
||||
// function.
|
||||
// The following two functions are needed because a compiler doesn't have
|
||||
// a context yet to know which template function must be instantiated.
|
||||
bool PredFunction5Int(int v1, int v2, int v3, int v4, int v5) {
|
||||
return v1 + v2 + v3 + v4 + v5 > 0;
|
||||
}
|
||||
|
||||
@@ -60,6 +60,7 @@ TEST(CommandLineFlagsTest, CanBeAccessedInCodeOnceGTestHIsIncluded) {
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
|
||||
#include <cstdint>
|
||||
#include <map>
|
||||
#include <ostream>
|
||||
#include <type_traits>
|
||||
@@ -249,7 +250,6 @@ using testing::internal::GetTestTypeId;
|
||||
using testing::internal::GetTimeInMillis;
|
||||
using testing::internal::GetTypeId;
|
||||
using testing::internal::GetUnitTestImpl;
|
||||
using testing::internal::Int32;
|
||||
using testing::internal::Int32FromEnvOrDie;
|
||||
using testing::internal::IsAProtocolMessage;
|
||||
using testing::internal::IsContainer;
|
||||
@@ -271,7 +271,6 @@ using testing::internal::StreamableToString;
|
||||
using testing::internal::String;
|
||||
using testing::internal::TestEventListenersAccessor;
|
||||
using testing::internal::TestResultAccessor;
|
||||
using testing::internal::UInt32;
|
||||
using testing::internal::UnitTestImpl;
|
||||
using testing::internal::WideStringToUtf8;
|
||||
using testing::internal::edit_distance::CalculateOptimalEdits;
|
||||
@@ -788,7 +787,7 @@ TEST(RandomDeathTest, GeneratesCrashesOnInvalidRange) {
|
||||
}
|
||||
|
||||
TEST(RandomTest, GeneratesNumbersWithinRange) {
|
||||
const UInt32 kRange = 10000;
|
||||
constexpr uint32_t kRange = 10000;
|
||||
testing::internal::Random random(12345);
|
||||
for (int i = 0; i < 10; i++) {
|
||||
EXPECT_LT(random.Generate(kRange), kRange) << " for iteration " << i;
|
||||
@@ -801,10 +800,10 @@ TEST(RandomTest, GeneratesNumbersWithinRange) {
|
||||
}
|
||||
|
||||
TEST(RandomTest, RepeatsWhenReseeded) {
|
||||
const int kSeed = 123;
|
||||
const int kArraySize = 10;
|
||||
const UInt32 kRange = 10000;
|
||||
UInt32 values[kArraySize];
|
||||
constexpr int kSeed = 123;
|
||||
constexpr int kArraySize = 10;
|
||||
constexpr uint32_t kRange = 10000;
|
||||
uint32_t values[kArraySize];
|
||||
|
||||
testing::internal::Random random(kSeed);
|
||||
for (int i = 0; i < kArraySize; i++) {
|
||||
@@ -1772,7 +1771,7 @@ TEST(Int32FromGTestEnvTest, ParsesAndReturnsValidValue) {
|
||||
// Tests that ParseInt32Flag() returns false and doesn't change the
|
||||
// output value when the flag has wrong format
|
||||
TEST(ParseInt32FlagTest, ReturnsFalseForInvalidFlag) {
|
||||
Int32 value = 123;
|
||||
int32_t value = 123;
|
||||
EXPECT_FALSE(ParseInt32Flag("--a=100", "b", &value));
|
||||
EXPECT_EQ(123, value);
|
||||
|
||||
@@ -1785,7 +1784,7 @@ TEST(ParseInt32FlagTest, ReturnsFalseForInvalidFlag) {
|
||||
TEST(ParseInt32FlagTest, ReturnsDefaultWhenValueOverflows) {
|
||||
printf("(expecting 2 warnings)\n");
|
||||
|
||||
Int32 value = 123;
|
||||
int32_t value = 123;
|
||||
EXPECT_FALSE(ParseInt32Flag("--abc=12345678987654321", "abc", &value));
|
||||
EXPECT_EQ(123, value);
|
||||
|
||||
@@ -1799,7 +1798,7 @@ TEST(ParseInt32FlagTest, ReturnsDefaultWhenValueOverflows) {
|
||||
TEST(ParseInt32FlagTest, ReturnsDefaultWhenValueIsInvalid) {
|
||||
printf("(expecting 2 warnings)\n");
|
||||
|
||||
Int32 value = 123;
|
||||
int32_t value = 123;
|
||||
EXPECT_FALSE(ParseInt32Flag("--abc=A1", "abc", &value));
|
||||
EXPECT_EQ(123, value);
|
||||
|
||||
@@ -1811,7 +1810,7 @@ TEST(ParseInt32FlagTest, ReturnsDefaultWhenValueIsInvalid) {
|
||||
// returns true when the flag represents a valid decimal integer in
|
||||
// the range of an Int32.
|
||||
TEST(ParseInt32FlagTest, ParsesAndReturnsValidValue) {
|
||||
Int32 value = 123;
|
||||
int32_t value = 123;
|
||||
EXPECT_TRUE(ParseInt32Flag("--" GTEST_FLAG_PREFIX_ "abc=456", "abc", &value));
|
||||
EXPECT_EQ(456, value);
|
||||
|
||||
@@ -1834,7 +1833,7 @@ TEST(Int32FromEnvOrDieTest, ParsesAndReturnsValidValue) {
|
||||
#endif // !GTEST_OS_WINDOWS_MOBILE
|
||||
|
||||
// Tests that Int32FromEnvOrDie() aborts with an error message
|
||||
// if the variable is not an Int32.
|
||||
// if the variable is not an int32_t.
|
||||
TEST(Int32FromEnvOrDieDeathTest, AbortsOnFailure) {
|
||||
SetEnv(GTEST_FLAG_PREFIX_UPPER_ "VAR", "xxx");
|
||||
EXPECT_DEATH_IF_SUPPORTED(
|
||||
@@ -1843,7 +1842,7 @@ TEST(Int32FromEnvOrDieDeathTest, AbortsOnFailure) {
|
||||
}
|
||||
|
||||
// Tests that Int32FromEnvOrDie() aborts with an error message
|
||||
// if the variable cannot be represented by an Int32.
|
||||
// if the variable cannot be represented by an int32_t.
|
||||
TEST(Int32FromEnvOrDieDeathTest, AbortsOnInt32Overflow) {
|
||||
SetEnv(GTEST_FLAG_PREFIX_UPPER_ "VAR", "1234567891234567891234");
|
||||
EXPECT_DEATH_IF_SUPPORTED(
|
||||
@@ -5597,7 +5596,7 @@ struct Flags {
|
||||
|
||||
// Creates a Flags struct where the gtest_random_seed flag has the given
|
||||
// value.
|
||||
static Flags RandomSeed(Int32 random_seed) {
|
||||
static Flags RandomSeed(int32_t random_seed) {
|
||||
Flags flags;
|
||||
flags.random_seed = random_seed;
|
||||
return flags;
|
||||
@@ -5605,7 +5604,7 @@ struct Flags {
|
||||
|
||||
// Creates a Flags struct where the gtest_repeat flag has the given
|
||||
// value.
|
||||
static Flags Repeat(Int32 repeat) {
|
||||
static Flags Repeat(int32_t repeat) {
|
||||
Flags flags;
|
||||
flags.repeat = repeat;
|
||||
return flags;
|
||||
@@ -5621,7 +5620,7 @@ struct Flags {
|
||||
|
||||
// Creates a Flags struct where the GTEST_FLAG(stack_trace_depth) flag has
|
||||
// the given value.
|
||||
static Flags StackTraceDepth(Int32 stack_trace_depth) {
|
||||
static Flags StackTraceDepth(int32_t stack_trace_depth) {
|
||||
Flags flags;
|
||||
flags.stack_trace_depth = stack_trace_depth;
|
||||
return flags;
|
||||
@@ -5652,10 +5651,10 @@ struct Flags {
|
||||
bool list_tests;
|
||||
const char* output;
|
||||
bool print_time;
|
||||
Int32 random_seed;
|
||||
Int32 repeat;
|
||||
int32_t random_seed;
|
||||
int32_t repeat;
|
||||
bool shuffle;
|
||||
Int32 stack_trace_depth;
|
||||
int32_t stack_trace_depth;
|
||||
const char* stream_result_to;
|
||||
bool throw_on_failure;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user