Merge branch 'master' into unsigned-wchar
This commit is contained in:
@@ -5655,5 +5655,69 @@ TEST(UnorderedPointwiseTest, AllowsMonomorphicInnerMatcher) {
|
||||
EXPECT_THAT(lhs, UnorderedPointwise(m2, rhs));
|
||||
}
|
||||
|
||||
class SampleVariantIntString {
|
||||
public:
|
||||
SampleVariantIntString(int i) : i_(i), has_int_(true) {}
|
||||
SampleVariantIntString(const std::string& s) : s_(s), has_int_(false) {}
|
||||
|
||||
template <typename T>
|
||||
friend bool holds_alternative(const SampleVariantIntString& value) {
|
||||
return value.has_int_ == internal::IsSame<T, int>::value;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
friend const T& get(const SampleVariantIntString& value) {
|
||||
return value.get_impl(static_cast<T*>(NULL));
|
||||
}
|
||||
|
||||
private:
|
||||
const int& get_impl(int*) const { return i_; }
|
||||
const std::string& get_impl(std::string*) const { return s_; }
|
||||
|
||||
int i_;
|
||||
std::string s_;
|
||||
bool has_int_;
|
||||
};
|
||||
|
||||
TEST(VariantTest, DescribesSelf) {
|
||||
const Matcher<SampleVariantIntString> m = VariantWith<int>(Eq(1));
|
||||
EXPECT_THAT(Describe(m), ContainsRegex("is a variant<> with value of type "
|
||||
"'.*' and the value is equal to 1"));
|
||||
}
|
||||
|
||||
TEST(VariantTest, ExplainsSelf) {
|
||||
const Matcher<SampleVariantIntString> m = VariantWith<int>(Eq(1));
|
||||
EXPECT_THAT(Explain(m, SampleVariantIntString(1)),
|
||||
ContainsRegex("whose value 1"));
|
||||
EXPECT_THAT(Explain(m, SampleVariantIntString("A")),
|
||||
HasSubstr("whose value is not of type '"));
|
||||
EXPECT_THAT(Explain(m, SampleVariantIntString(2)),
|
||||
"whose value 2 doesn't match");
|
||||
}
|
||||
|
||||
TEST(VariantTest, FullMatch) {
|
||||
Matcher<SampleVariantIntString> m = VariantWith<int>(Eq(1));
|
||||
EXPECT_TRUE(m.Matches(SampleVariantIntString(1)));
|
||||
|
||||
m = VariantWith<std::string>(Eq("1"));
|
||||
EXPECT_TRUE(m.Matches(SampleVariantIntString("1")));
|
||||
}
|
||||
|
||||
TEST(VariantTest, TypeDoesNotMatch) {
|
||||
Matcher<SampleVariantIntString> m = VariantWith<int>(Eq(1));
|
||||
EXPECT_FALSE(m.Matches(SampleVariantIntString("1")));
|
||||
|
||||
m = VariantWith<std::string>(Eq("1"));
|
||||
EXPECT_FALSE(m.Matches(SampleVariantIntString(1)));
|
||||
}
|
||||
|
||||
TEST(VariantTest, InnerDoesNotMatch) {
|
||||
Matcher<SampleVariantIntString> m = VariantWith<int>(Eq(1));
|
||||
EXPECT_FALSE(m.Matches(SampleVariantIntString(2)));
|
||||
|
||||
m = VariantWith<std::string>(Eq("1"));
|
||||
EXPECT_FALSE(m.Matches(SampleVariantIntString("2")));
|
||||
}
|
||||
|
||||
} // namespace gmock_matchers_test
|
||||
} // namespace testing
|
||||
|
||||
@@ -120,13 +120,15 @@
|
||||
# include <errno.h>
|
||||
#endif
|
||||
|
||||
#include "gmock/internal/gmock-port.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "gtest/internal/gtest-port.h"
|
||||
|
||||
using testing::_;
|
||||
using testing::A;
|
||||
using testing::Action;
|
||||
using testing::AllOf;
|
||||
using testing::AnyOf;
|
||||
using testing::Assign;
|
||||
@@ -148,6 +150,8 @@ using testing::Invoke;
|
||||
using testing::InvokeArgument;
|
||||
using testing::InvokeWithoutArgs;
|
||||
using testing::IsNull;
|
||||
using testing::IsSubsetOf;
|
||||
using testing::IsSupersetOf;
|
||||
using testing::Le;
|
||||
using testing::Lt;
|
||||
using testing::Matcher;
|
||||
@@ -592,6 +596,22 @@ TEST(LinkTest, TestMatcherElementsAreArray) {
|
||||
ON_CALL(mock, VoidFromVector(ElementsAreArray(arr))).WillByDefault(Return());
|
||||
}
|
||||
|
||||
// Tests the linkage of the IsSubsetOf matcher.
|
||||
TEST(LinkTest, TestMatcherIsSubsetOf) {
|
||||
Mock mock;
|
||||
char arr[] = {'a', 'b'};
|
||||
|
||||
ON_CALL(mock, VoidFromVector(IsSubsetOf(arr))).WillByDefault(Return());
|
||||
}
|
||||
|
||||
// Tests the linkage of the IsSupersetOf matcher.
|
||||
TEST(LinkTest, TestMatcherIsSupersetOf) {
|
||||
Mock mock;
|
||||
char arr[] = {'a', 'b'};
|
||||
|
||||
ON_CALL(mock, VoidFromVector(IsSupersetOf(arr))).WillByDefault(Return());
|
||||
}
|
||||
|
||||
// Tests the linkage of the ContainerEq matcher.
|
||||
TEST(LinkTest, TestMatcherContainerEq) {
|
||||
Mock mock;
|
||||
|
||||
Reference in New Issue
Block a user