Simplifies the definition of NativeArray. Works around a VC bug in StrictMock & NiceMock.
This commit is contained in:
@@ -70,42 +70,49 @@ class NiceMock : public MockClass {
|
||||
// We don't factor out the constructor body to a common method, as
|
||||
// we have to avoid a possible clash with members of MockClass.
|
||||
NiceMock() {
|
||||
Mock::AllowUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::AllowUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
// C++ doesn't (yet) allow inheritance of constructors, so we have
|
||||
// to define it for each arity.
|
||||
template <typename A1>
|
||||
explicit NiceMock(const A1& a1) : MockClass(a1) {
|
||||
Mock::AllowUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::AllowUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
template <typename A1, typename A2>
|
||||
NiceMock(const A1& a1, const A2& a2) : MockClass(a1, a2) {
|
||||
Mock::AllowUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::AllowUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1, typename A2, typename A3>
|
||||
NiceMock(const A1& a1, const A2& a2, const A3& a3) : MockClass(a1, a2, a3) {
|
||||
Mock::AllowUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::AllowUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1, typename A2, typename A3, typename A4>
|
||||
NiceMock(const A1& a1, const A2& a2, const A3& a3,
|
||||
const A4& a4) : MockClass(a1, a2, a3, a4) {
|
||||
Mock::AllowUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::AllowUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1, typename A2, typename A3, typename A4, typename A5>
|
||||
NiceMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
|
||||
const A5& a5) : MockClass(a1, a2, a3, a4, a5) {
|
||||
Mock::AllowUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::AllowUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1, typename A2, typename A3, typename A4, typename A5,
|
||||
typename A6>
|
||||
NiceMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
|
||||
const A5& a5, const A6& a6) : MockClass(a1, a2, a3, a4, a5, a6) {
|
||||
Mock::AllowUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::AllowUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1, typename A2, typename A3, typename A4, typename A5,
|
||||
@@ -113,7 +120,8 @@ class NiceMock : public MockClass {
|
||||
NiceMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
|
||||
const A5& a5, const A6& a6, const A7& a7) : MockClass(a1, a2, a3, a4, a5,
|
||||
a6, a7) {
|
||||
Mock::AllowUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::AllowUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1, typename A2, typename A3, typename A4, typename A5,
|
||||
@@ -121,7 +129,8 @@ class NiceMock : public MockClass {
|
||||
NiceMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
|
||||
const A5& a5, const A6& a6, const A7& a7, const A8& a8) : MockClass(a1,
|
||||
a2, a3, a4, a5, a6, a7, a8) {
|
||||
Mock::AllowUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::AllowUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1, typename A2, typename A3, typename A4, typename A5,
|
||||
@@ -129,7 +138,8 @@ class NiceMock : public MockClass {
|
||||
NiceMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
|
||||
const A5& a5, const A6& a6, const A7& a7, const A8& a8,
|
||||
const A9& a9) : MockClass(a1, a2, a3, a4, a5, a6, a7, a8, a9) {
|
||||
Mock::AllowUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::AllowUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1, typename A2, typename A3, typename A4, typename A5,
|
||||
@@ -137,11 +147,13 @@ class NiceMock : public MockClass {
|
||||
NiceMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
|
||||
const A5& a5, const A6& a6, const A7& a7, const A8& a8, const A9& a9,
|
||||
const A10& a10) : MockClass(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
|
||||
Mock::AllowUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::AllowUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
virtual ~NiceMock() {
|
||||
Mock::UnregisterCallReaction(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::UnregisterCallReaction(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -151,40 +163,47 @@ class StrictMock : public MockClass {
|
||||
// We don't factor out the constructor body to a common method, as
|
||||
// we have to avoid a possible clash with members of MockClass.
|
||||
StrictMock() {
|
||||
Mock::FailUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::FailUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1>
|
||||
explicit StrictMock(const A1& a1) : MockClass(a1) {
|
||||
Mock::FailUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::FailUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
template <typename A1, typename A2>
|
||||
StrictMock(const A1& a1, const A2& a2) : MockClass(a1, a2) {
|
||||
Mock::FailUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::FailUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1, typename A2, typename A3>
|
||||
StrictMock(const A1& a1, const A2& a2, const A3& a3) : MockClass(a1, a2, a3) {
|
||||
Mock::FailUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::FailUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1, typename A2, typename A3, typename A4>
|
||||
StrictMock(const A1& a1, const A2& a2, const A3& a3,
|
||||
const A4& a4) : MockClass(a1, a2, a3, a4) {
|
||||
Mock::FailUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::FailUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1, typename A2, typename A3, typename A4, typename A5>
|
||||
StrictMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
|
||||
const A5& a5) : MockClass(a1, a2, a3, a4, a5) {
|
||||
Mock::FailUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::FailUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1, typename A2, typename A3, typename A4, typename A5,
|
||||
typename A6>
|
||||
StrictMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
|
||||
const A5& a5, const A6& a6) : MockClass(a1, a2, a3, a4, a5, a6) {
|
||||
Mock::FailUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::FailUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1, typename A2, typename A3, typename A4, typename A5,
|
||||
@@ -192,7 +211,8 @@ class StrictMock : public MockClass {
|
||||
StrictMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
|
||||
const A5& a5, const A6& a6, const A7& a7) : MockClass(a1, a2, a3, a4, a5,
|
||||
a6, a7) {
|
||||
Mock::FailUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::FailUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1, typename A2, typename A3, typename A4, typename A5,
|
||||
@@ -200,7 +220,8 @@ class StrictMock : public MockClass {
|
||||
StrictMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
|
||||
const A5& a5, const A6& a6, const A7& a7, const A8& a8) : MockClass(a1,
|
||||
a2, a3, a4, a5, a6, a7, a8) {
|
||||
Mock::FailUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::FailUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1, typename A2, typename A3, typename A4, typename A5,
|
||||
@@ -208,7 +229,8 @@ class StrictMock : public MockClass {
|
||||
StrictMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
|
||||
const A5& a5, const A6& a6, const A7& a7, const A8& a8,
|
||||
const A9& a9) : MockClass(a1, a2, a3, a4, a5, a6, a7, a8, a9) {
|
||||
Mock::FailUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::FailUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1, typename A2, typename A3, typename A4, typename A5,
|
||||
@@ -216,11 +238,13 @@ class StrictMock : public MockClass {
|
||||
StrictMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
|
||||
const A5& a5, const A6& a6, const A7& a7, const A8& a8, const A9& a9,
|
||||
const A10& a10) : MockClass(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
|
||||
Mock::FailUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::FailUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
virtual ~StrictMock() {
|
||||
Mock::UnregisterCallReaction(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::UnregisterCallReaction(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -73,14 +73,16 @@ class NiceMock : public MockClass {
|
||||
// We don't factor out the constructor body to a common method, as
|
||||
// we have to avoid a possible clash with members of MockClass.
|
||||
NiceMock() {
|
||||
Mock::AllowUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::AllowUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
// C++ doesn't (yet) allow inheritance of constructors, so we have
|
||||
// to define it for each arity.
|
||||
template <typename A1>
|
||||
explicit NiceMock(const A1& a1) : MockClass(a1) {
|
||||
Mock::AllowUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::AllowUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
$range i 2..n
|
||||
@@ -88,13 +90,15 @@ $for i [[
|
||||
$range j 1..i
|
||||
template <$for j, [[typename A$j]]>
|
||||
NiceMock($for j, [[const A$j& a$j]]) : MockClass($for j, [[a$j]]) {
|
||||
Mock::AllowUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::AllowUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
|
||||
]]
|
||||
virtual ~NiceMock() {
|
||||
Mock::UnregisterCallReaction(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::UnregisterCallReaction(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -104,25 +108,29 @@ class StrictMock : public MockClass {
|
||||
// We don't factor out the constructor body to a common method, as
|
||||
// we have to avoid a possible clash with members of MockClass.
|
||||
StrictMock() {
|
||||
Mock::FailUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::FailUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
template <typename A1>
|
||||
explicit StrictMock(const A1& a1) : MockClass(a1) {
|
||||
Mock::FailUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::FailUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
$for i [[
|
||||
$range j 1..i
|
||||
template <$for j, [[typename A$j]]>
|
||||
StrictMock($for j, [[const A$j& a$j]]) : MockClass($for j, [[a$j]]) {
|
||||
Mock::FailUninterestingCalls(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::FailUninterestingCalls(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
|
||||
|
||||
]]
|
||||
virtual ~StrictMock() {
|
||||
Mock::UnregisterCallReaction(internal::implicit_cast<MockClass*>(this));
|
||||
::testing::Mock::UnregisterCallReaction(
|
||||
internal::implicit_cast<MockClass*>(this));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -581,21 +581,9 @@ class NativeArray {
|
||||
typedef Element value_type;
|
||||
typedef const Element* const_iterator;
|
||||
|
||||
// Constructs from a native array passed by reference.
|
||||
template <size_t N>
|
||||
NativeArray(const Element (&array)[N], RelationToSource relation) {
|
||||
Init(array, N, relation);
|
||||
}
|
||||
|
||||
// Constructs from a native array passed by a pointer and a size.
|
||||
// For generality we don't artificially restrict the types of the
|
||||
// pointer and the size.
|
||||
template <typename Pointer, typename Size>
|
||||
NativeArray(const ::std::tr1::tuple<Pointer, Size>& array,
|
||||
RelationToSource relation) {
|
||||
Init(internal::GetRawPointer(::std::tr1::get<0>(array)),
|
||||
::std::tr1::get<1>(array),
|
||||
relation);
|
||||
// Constructs from a native array.
|
||||
NativeArray(const Element* array, size_t count, RelationToSource relation) {
|
||||
Init(array, count, relation);
|
||||
}
|
||||
|
||||
// Copy constructor.
|
||||
@@ -691,10 +679,10 @@ class StlContainerView<Element[N]> {
|
||||
static const_reference ConstReference(const Element (&array)[N]) {
|
||||
// Ensures that Element is not a const type.
|
||||
testing::StaticAssertTypeEq<Element, RawElement>();
|
||||
return type(array, kReference);
|
||||
return type(array, N, kReference);
|
||||
}
|
||||
static type Copy(const Element (&array)[N]) {
|
||||
return type(array, kCopy);
|
||||
return type(array, N, kCopy);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -710,10 +698,12 @@ class StlContainerView< ::std::tr1::tuple<ElementPointer, Size> > {
|
||||
|
||||
static const_reference ConstReference(
|
||||
const ::std::tr1::tuple<ElementPointer, Size>& array) {
|
||||
return type(array, kReference);
|
||||
using ::std::tr1::get;
|
||||
return type(get<0>(array), get<1>(array), kReference);
|
||||
}
|
||||
static type Copy(const ::std::tr1::tuple<ElementPointer, Size>& array) {
|
||||
return type(array, kCopy);
|
||||
using ::std::tr1::get;
|
||||
return type(get<0>(array), get<1>(array), kCopy);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user