summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/HippoMocks/hippomocks.h')
-rw-r--r--3rdParty/HippoMocks/hippomocks.h608
1 files changed, 304 insertions, 304 deletions
diff --git a/3rdParty/HippoMocks/hippomocks.h b/3rdParty/HippoMocks/hippomocks.h
index 802d719..3483dce 100644
--- a/3rdParty/HippoMocks/hippomocks.h
+++ b/3rdParty/HippoMocks/hippomocks.h
@@ -4,19 +4,19 @@
#pragma GCC diagnostic ignored "-Wold-style-cast"
#pragma GCC diagnostic ignored "-Wnon-virtual-dtor"
#pragma clang diagnostic ignored "-Wshorten-64-to-32"
#pragma clang diagnostic ignored "-Wunreachable-code"
#ifndef EXCEPTION_BUFFER_SIZE
#define EXCEPTION_BUFFER_SIZE 65536
#endif
-#ifndef VIRT_FUNC_LIMIT
+#ifndef VIRT_FUNC_LIMIT
#define VIRT_FUNC_LIMIT 1024
#elif VIRT_FUNC_LIMIT > 1024
#error Adjust the code to support more than 1024 virtual functions before setting the VIRT_FUNC_LIMIT above 1024
#endif
#ifdef __EDG__
#define FUNCTION_BASE 3
#define FUNCTION_STRIDE 2
#else
@@ -24,21 +24,22 @@
#define FUNCTION_STRIDE 1
#endif
#include <list>
#include <map>
#include <memory>
#include <iostream>
#include <sstream>
#include <cstring>
+#include <string>
#ifdef _MSC_VER
-// these warnings are pointless and huge, and will confuse new users.
+// these warnings are pointless and huge, and will confuse new users.
#pragma warning(push)
// If you can't generate an assignment operator the least you can do is shut up.
#pragma warning(disable: 4512)
// Alignment not right in a union?
#pragma warning(disable: 4121)
// Template parameters have the tendency not to change between executions.
#pragma warning(disable: 4127)
// No deprecated warnings on functions that really aren't deprecated at all.
#pragma warning(disable: 4996)
@@ -50,73 +51,73 @@ enum RegistrationType {
Once,
DontCare
};
// base type
class base_mock {
public:
void destroy() { unwriteVft(); delete this; }
virtual ~base_mock() {}
- void *rewriteVft(void *newVf)
+ void *rewriteVft(void *newVf)
{
void *oldVf = *(void **)this;
*(void **)this = newVf;
return oldVf;
}
- void unwriteVft()
+ void unwriteVft()
{
*(void **)this = (*(void ***)this)[-1];
}
};
-class NullType
+class NullType
{
-public:
- bool operator==(const NullType &) const
+public:
+ bool operator==(const NullType &) const
{
- return true;
+ return true;
}
};
struct NotPrintable { template <typename T> NotPrintable(T const&) {} };
inline std::ostream &operator<<(std::ostream &os, NotPrintable const&)
{
os << "???";
return os;
}
template <typename T>
-struct printArg
+struct printArg
{
static inline void print(std::ostream &os, T arg, bool withComma)
{
if (withComma) os << ",";
os << arg;
}
};
template <>
struct printArg<NullType>
{
static void print(std::ostream &, NullType , bool)
{
}
};
-class base_tuple
+class base_tuple
{
protected:
- base_tuple()
+ base_tuple()
{
- }
-public:
- virtual ~base_tuple()
+ }
+public:
+ virtual ~base_tuple()
{
}
virtual bool operator==(const base_tuple &) const = 0;
virtual void printTo(std::ostream &os) const = 0;
};
template <typename X>
struct no_cref { typedef X type; };
@@ -133,21 +134,21 @@ inline bool operator==(NotComparable, NotComparable)
template <typename T>
struct comparer
{
static inline bool compare(T a, T b)
{
return a == b;
}
};
-template <typename A = NullType, typename B = NullType, typename C = NullType, typename D = NullType,
- typename E = NullType, typename F = NullType, typename G = NullType, typename H = NullType,
- typename I = NullType, typename J = NullType, typename K = NullType, typename L = NullType,
+template <typename A = NullType, typename B = NullType, typename C = NullType, typename D = NullType,
+ typename E = NullType, typename F = NullType, typename G = NullType, typename H = NullType,
+ typename I = NullType, typename J = NullType, typename K = NullType, typename L = NullType,
typename M = NullType, typename N = NullType, typename O = NullType, typename P = NullType>
class tuple : public base_tuple
{
public:
typename no_cref<A>::type a;
typename no_cref<B>::type b;
typename no_cref<C>::type c;
typename no_cref<D>::type d;
typename no_cref<E>::type e;
@@ -156,25 +157,25 @@ public:
typename no_cref<H>::type h;
typename no_cref<I>::type i;
typename no_cref<J>::type j;
typename no_cref<K>::type k;
typename no_cref<L>::type l;
typename no_cref<M>::type m;
typename no_cref<N>::type n;
typename no_cref<O>::type o;
typename no_cref<P>::type p;
- tuple(typename no_cref<A>::type a = typename no_cref<A>::type(), typename no_cref<B>::type b = typename no_cref<B>::type(),
- typename no_cref<C>::type c = typename no_cref<C>::type(), typename no_cref<D>::type d = typename no_cref<D>::type(),
- typename no_cref<E>::type e = typename no_cref<E>::type(), typename no_cref<F>::type f = typename no_cref<F>::type(),
+ tuple(typename no_cref<A>::type a = typename no_cref<A>::type(), typename no_cref<B>::type b = typename no_cref<B>::type(),
+ typename no_cref<C>::type c = typename no_cref<C>::type(), typename no_cref<D>::type d = typename no_cref<D>::type(),
+ typename no_cref<E>::type e = typename no_cref<E>::type(), typename no_cref<F>::type f = typename no_cref<F>::type(),
typename no_cref<G>::type g = typename no_cref<G>::type(), typename no_cref<H>::type h = typename no_cref<H>::type(),
- typename no_cref<I>::type i = typename no_cref<I>::type(), typename no_cref<J>::type j = typename no_cref<J>::type(),
- typename no_cref<K>::type k = typename no_cref<K>::type(), typename no_cref<L>::type l = typename no_cref<L>::type(),
- typename no_cref<M>::type m = typename no_cref<M>::type(), typename no_cref<N>::type n = typename no_cref<N>::type(),
+ typename no_cref<I>::type i = typename no_cref<I>::type(), typename no_cref<J>::type j = typename no_cref<J>::type(),
+ typename no_cref<K>::type k = typename no_cref<K>::type(), typename no_cref<L>::type l = typename no_cref<L>::type(),
+ typename no_cref<M>::type m = typename no_cref<M>::type(), typename no_cref<N>::type n = typename no_cref<N>::type(),
typename no_cref<O>::type o = typename no_cref<O>::type(), typename no_cref<P>::type p = typename no_cref<P>::type())
: a(a), b(b), c(c), d(d), e(e), f(f), g(g), h(h), i(i), j(j), k(k), l(l), m(m), n(n), o(o), p(p)
{}
bool operator==(const base_tuple &bo) const {
const tuple<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &to = (const tuple<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &)bo;
return (comparer<A>::compare(a, to.a) &&
comparer<B>::compare(b, to.b) &&
comparer<C>::compare(c, to.c) &&
comparer<D>::compare(d, to.d) &&
@@ -564,267 +565,267 @@ T getNonvirtualMemberFunctionAddress(U u)
template <typename T>
int getFunctionIndex(T func) {
func_index idx;
return ((&idx)->*reinterpret_cast<int (func_index::*)()>(func))() * FUNCTION_STRIDE + FUNCTION_BASE;
}
// mock types
template <class T>
-class mock : public base_mock
+class mock : public base_mock
{
friend class MockRepository;
unsigned char remaining[sizeof(T)];
void NotImplemented() { throw NotImplementedException(repo); }
protected:
void *oldVft;
void (*funcs[VIRT_FUNC_LIMIT])();
MockRepository *repo;
public:
int funcMap[VIRT_FUNC_LIMIT];
- mock(MockRepository *repo)
+ mock(MockRepository *repo)
: repo(repo)
{
- for (int i = 0; i < VIRT_FUNC_LIMIT; i++)
+ for (int i = 0; i < VIRT_FUNC_LIMIT; i++)
{
funcs[i] = getNonvirtualMemberFunctionAddress<void (*)()>(&mock<T>::NotImplemented);
funcMap[i] = -1;
}
memset(remaining, 0, sizeof(remaining));
oldVft = base_mock::rewriteVft(funcs);
}
- int translateX(int x)
+ int translateX(int x)
{
- for (int i = 0; i < VIRT_FUNC_LIMIT; i++)
+ for (int i = 0; i < VIRT_FUNC_LIMIT; i++)
{
if (funcMap[i] == x) return i;
}
return -1;
}
};
template <class T>
class classMock : public mock<T>
{
void *backupVft;
public:
- classMock(MockRepository *repo)
+ classMock(MockRepository *repo)
: mock<T>(repo)
{
mock<T>::oldVft = base_mock::rewriteVft((void *)mock<T>::funcs);
new(this)T();
backupVft = base_mock::rewriteVft((void *)mock<T>::funcs);
}
~classMock()
{
base_mock::rewriteVft(backupVft);
((T *)this)->~T();
}
};
//Type-safe exception wrapping
-class ExceptionHolder
-{
+class ExceptionHolder
+{
public:
virtual ~ExceptionHolder() {}
- virtual void rethrow() = 0;
+ virtual void rethrow() = 0;
};
template <class T>
class ExceptionWrapper : public ExceptionHolder {
T exception;
public:
ExceptionWrapper(T exception) : exception(exception) {}
void rethrow() { throw exception; }
};
// Do() function wrapping
class VirtualDestructable { public: virtual ~VirtualDestructable() {} };
template <typename Y>
-class TupleInvocable : public VirtualDestructable
+class TupleInvocable : public VirtualDestructable
{
public:
virtual Y operator()(const base_tuple &tupl) = 0;
};
template <typename Y,
- typename A = NullType, typename B = NullType, typename C = NullType, typename D = NullType,
- typename E = NullType, typename F = NullType, typename G = NullType, typename H = NullType,
- typename I = NullType, typename J = NullType, typename K = NullType, typename L = NullType,
+ typename A = NullType, typename B = NullType, typename C = NullType, typename D = NullType,
+ typename E = NullType, typename F = NullType, typename G = NullType, typename H = NullType,
+ typename I = NullType, typename J = NullType, typename K = NullType, typename L = NullType,
typename M = NullType, typename N = NullType, typename O = NullType, typename P = NullType>
class Invocable : public TupleInvocable<Y>
{
public:
virtual Y operator()(A a = A(), B b = B(), C c = C(), D d = D(), E e = E(), F f = F(), G g = G(), H h = H(), I i = I(), J j = J(), K k = K(), L l = L(), M m = M(), N n = N(), O o = O(), P p = P()) = 0;
virtual Y operator()(const base_tuple &tupl) {
const tuple<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &rTupl = reinterpret_cast<const tuple<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &>(tupl);
- return (*this)(rTupl.a, rTupl.b, rTupl.c, rTupl.d, rTupl.e, rTupl.f, rTupl.g, rTupl.h,
+ return (*this)(rTupl.a, rTupl.b, rTupl.c, rTupl.d, rTupl.e, rTupl.f, rTupl.g, rTupl.h,
rTupl.i, rTupl.j, rTupl.k, rTupl.l, rTupl.m, rTupl.n, rTupl.o, rTupl.p);
}
};
template <typename T, typename Y,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H,
- typename I, typename J, typename K, typename L,
+ typename A, typename B, typename C, typename D,
+ typename E, typename F, typename G, typename H,
+ typename I, typename J, typename K, typename L,
typename M, typename N, typename O, typename P>
class DoWrapper : public Invocable<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> {
T &t;
public:
DoWrapper(T &t) : t(t) {}
virtual Y operator()(A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m, N n, O o, P p)
{
return t(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
}
using Invocable<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P>::operator();
};
template <typename T, typename Y,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H,
- typename I, typename J, typename K, typename L,
+ typename A, typename B, typename C, typename D,
+ typename E, typename F, typename G, typename H,
+ typename I, typename J, typename K, typename L,
typename M, typename N, typename O>
class DoWrapper<T,Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,NullType> : public Invocable<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O> {
T &t;
public:
DoWrapper(T &t) : t(t) {}
virtual Y operator()(A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m, N n, O o, NullType)
{
return t(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o);
}
using Invocable<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O>::operator();
};
template <typename T, typename Y,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H,
- typename I, typename J, typename K, typename L,
+ typename A, typename B, typename C, typename D,
+ typename E, typename F, typename G, typename H,
+ typename I, typename J, typename K, typename L,
typename M, typename N>
class DoWrapper<T,Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,NullType,NullType> : public Invocable<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N> {
T &t;
public:
DoWrapper(T &t) : t(t) {}
virtual Y operator()(A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m, N n, NullType, NullType)
{
return t(a,b,c,d,e,f,g,h,i,j,k,l,m,n);
}
using Invocable<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N>::operator();
};
template <typename T, typename Y,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H,
- typename I, typename J, typename K, typename L,
+ typename A, typename B, typename C, typename D,
+ typename E, typename F, typename G, typename H,
+ typename I, typename J, typename K, typename L,
typename M>
class DoWrapper<T,Y,A,B,C,D,E,F,G,H,I,J,K,L,M,NullType,NullType,NullType> : public Invocable<Y,A,B,C,D,E,F,G,H,I,J,K,L,M> {
T &t;
public:
DoWrapper(T &t) : t(t) {}
virtual Y operator()(A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m, NullType, NullType, NullType)
{
return t(a,b,c,d,e,f,g,h,i,j,k,l,m);
}
using Invocable<Y,A,B,C,D,E,F,G,H,I,J,K,L,M>::operator();
};
template <typename T, typename Y,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H,
+ typename A, typename B, typename C, typename D,
+ typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L>
class DoWrapper<T,Y,A,B,C,D,E,F,G,H,I,J,K,L,NullType,NullType,NullType,NullType> : public Invocable<Y,A,B,C,D,E,F,G,H,I,J,K,L> {
T &t;
public:
DoWrapper(T &t) : t(t) {}
virtual Y operator()(A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, NullType, NullType, NullType, NullType)
{
return t(a,b,c,d,e,f,g,h,i,j,k,l);
}
using Invocable<Y,A,B,C,D,E,F,G,H,I,J,K,L>::operator();
};
template <typename T, typename Y,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H,
+ typename A, typename B, typename C, typename D,
+ typename E, typename F, typename G, typename H,
typename I, typename J, typename K>
class DoWrapper<T,Y,A,B,C,D,E,F,G,H,I,J,K,NullType,NullType,NullType,NullType,NullType> : public Invocable<Y,A,B,C,D,E,F,G,H,I,J,K> {
T &t;
public:
DoWrapper(T &t) : t(t) {}
virtual Y operator()(A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, NullType, NullType, NullType, NullType, NullType)
{
return t(a,b,c,d,e,f,g,h,i,j,k);
}
using Invocable<Y,A,B,C,D,E,F,G,H,I,J,K>::operator();
};
template <typename T, typename Y,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H,
+ typename A, typename B, typename C, typename D,
+ typename E, typename F, typename G, typename H,
typename I, typename J>
class DoWrapper<T,Y,A,B,C,D,E,F,G,H,I,J,NullType,NullType,NullType,NullType,NullType,NullType> : public Invocable<Y,A,B,C,D,E,F,G,H,I,J> {
T &t;
public:
DoWrapper(T &t) : t(t) {}
virtual Y operator()(A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, NullType, NullType, NullType, NullType, NullType, NullType)
{
return t(a,b,c,d,e,f,g,h,i,j);
}
using Invocable<Y,A,B,C,D,E,F,G,H,I,J>::operator();
};
template <typename T, typename Y,
- typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H,
+ typename A, typename B, typename C, typename D,
+ typename E, typename F, typename G, typename H,
typename I>
class DoWrapper<T,Y,A,B,C,D,E,F,G,H,I,NullType,NullType,NullType,NullType,NullType,NullType,NullType> : public Invocable<Y,A,B,C,D,E,F,G,H,I>{
T &t;
public:
DoWrapper(T &t) : t(t) {}
virtual Y operator()(A a, B b, C c, D d, E e, F f, G g, H h, I i, NullType, NullType, NullType, NullType, NullType, NullType, NullType)
{
return t(a,b,c,d,e,f,g,h,i);
}
using Invocable<Y,A,B,C,D,E,F,G,H,I>::operator();
};
template <typename T, typename Y,
- typename A, typename B, typename C, typename D,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H>
class DoWrapper<T,Y,A,B,C,D,E,F,G,H,NullType,NullType,NullType,NullType,NullType,NullType,NullType,NullType> : public Invocable<Y,A,B,C,D,E,F,G,H> {
T &t;
public:
DoWrapper(T &t) : t(t) {}
virtual Y operator()(A a, B b, C c, D d, E e, F f, G g, H h, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType)
{
return t(a,b,c,d,e,f,g,h);
}
using Invocable<Y,A,B,C,D,E,F,G,H>::operator();
};
template <typename T, typename Y,
- typename A, typename B, typename C, typename D,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G>
class DoWrapper<T,Y,A,B,C,D,E,F,G,NullType,NullType,NullType,NullType,NullType,NullType,NullType,NullType,NullType> : public Invocable<Y,A,B,C,D,E,F,G> {
T &t;
public:
DoWrapper(T &t) : t(t) {}
virtual Y operator()(A a, B b, C c, D d, E e, F f, G g, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType)
{
return t(a,b,c,d,e,f,g);
}
using Invocable<Y,A,B,C,D,E,F,G>::operator();
};
template <typename T, typename Y,
- typename A, typename B, typename C, typename D,
+ typename A, typename B, typename C, typename D,
typename E, typename F>
class DoWrapper<T,Y,A,B,C,D,E,F,NullType,NullType,NullType,NullType,NullType,NullType,NullType,NullType,NullType,NullType> : public Invocable<Y,A,B,C,D,E,F> {
T &t;
public:
DoWrapper(T &t) : t(t) {}
virtual Y operator()(A a, B b, C c, D d, E e, F f, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType)
{
return t(a,b,c,d,e,f);
}
using Invocable<Y,A,B,C,D,E,F>::operator();
};
template <typename T, typename Y,
- typename A, typename B, typename C, typename D,
+ typename A, typename B, typename C, typename D,
typename E>
class DoWrapper<T,Y,A,B,C,D,E,NullType,NullType,NullType,NullType,NullType,NullType,NullType,NullType,NullType,NullType,NullType> : public Invocable<Y,A,B,C,D,E> {
T &t;
public:
DoWrapper(T &t) : t(t) {}
virtual Y operator()(A a, B b, C c, D d, E e, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType)
{
return t(a,b,c,d,e);
}
@@ -910,90 +911,90 @@ public:
VirtualDestructable *functor;
int funcIndex;
std::list<Call *> previousCalls;
RegistrationType expectation;
bool satisfied;
int lineno;
const char *funcName;
const char *fileName;
protected:
- Call(RegistrationType expectation, base_mock *mock, int funcIndex, int X, const char *funcName, const char *fileName)
- : retVal(0),
- eHolder(0),
- mock(mock),
+ Call(RegistrationType expectation, base_mock *mock, int funcIndex, int X, const char *funcName, const char *fileName)
+ : retVal(0),
+ eHolder(0),
+ mock(mock),
functor(0),
- funcIndex(funcIndex),
+ funcIndex(funcIndex),
expectation(expectation),
satisfied(false),
lineno(X),
funcName(funcName),
fileName(fileName)
{
}
public:
virtual const base_tuple *getArgs() const = 0;
- virtual ~Call()
+ virtual ~Call()
{
delete eHolder;
delete functor;
delete retVal;
}
};
std::ostream &operator<<(std::ostream &os, const Call &call);
-template <typename Y,
- typename A = NullType, typename B = NullType, typename C = NullType, typename D = NullType,
- typename E = NullType, typename F = NullType, typename G = NullType, typename H = NullType,
- typename I = NullType, typename J = NullType, typename K = NullType, typename L = NullType,
+template <typename Y,
+ typename A = NullType, typename B = NullType, typename C = NullType, typename D = NullType,
+ typename E = NullType, typename F = NullType, typename G = NullType, typename H = NullType,
+ typename I = NullType, typename J = NullType, typename K = NullType, typename L = NullType,
typename M = NullType, typename N = NullType, typename O = NullType, typename P = NullType>
class TCall : public Call {
private:
tuple<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> *args;
public:
const base_tuple *getArgs() const { return args; }
TCall(RegistrationType expectation, base_mock *mock, int funcIndex, int X, const char *funcName, const char *fileName) : Call(expectation, mock, funcIndex, X, funcName, fileName), args(0) {}
~TCall() { delete args; }
bool matchesArgs(const base_tuple &tupl) { return !args || *args == reinterpret_cast<const tuple<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &>(tupl); }
- TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &With(A a = A(), B b = B(), C c = C(), D d = D(), E e = E(), F f = F(), G g = G(), H h = H(), I i = I(), J j = J(), K k = K(), L l = L(), M m = M(), N n = N(), O o = O(), P p = P()) {
- args = new tuple<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P>(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
- return *this;
+ TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &With(A a = A(), B b = B(), C c = C(), D d = D(), E e = E(), F f = F(), G g = G(), H h = H(), I i = I(), J j = J(), K k = K(), L l = L(), M m = M(), N n = N(), O o = O(), P p = P()) {
+ args = new tuple<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P>(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
+ return *this;
}
- TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &After(Call &call) {
+ TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &After(Call &call) {
previousCalls.push_back(&call);
- return *this;
+ return *this;
}
template <typename T>
Call &Do(T &function) { functor = new DoWrapper<T,Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P>(function); return *this; }
Call &Return(Y obj) { retVal = new ReturnValueWrapper<Y>(obj); return *this; }
template <typename Ex>
Call &Throw(Ex exception) { eHolder = new ExceptionWrapper<Ex>(exception); return *this; }
};
-template <typename A, typename B, typename C, typename D,
- typename E, typename F, typename G, typename H,
- typename I, typename J, typename K, typename L,
+template <typename A, typename B, typename C, typename D,
+ typename E, typename F, typename G, typename H,
+ typename I, typename J, typename K, typename L,
typename M, typename N, typename O, typename P>
class TCall<void,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> : public Call {
private:
tuple<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> *args;
public:
const base_tuple *getArgs() const { return args; }
TCall(RegistrationType expectation, base_mock *mock, int funcIndex, int X, const char *funcName, const char *fileName) : Call(expectation, mock, funcIndex, X, funcName, fileName), args(0) {}
~TCall() { delete args; }
bool matchesArgs(const base_tuple &tupl) { return (!args) || (*args == reinterpret_cast<const tuple<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &>(tupl)); }
- TCall<void,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &With(A a = A(), B b = B(), C c = C(), D d = D(), E e = E(), F f = F(), G g = G(), H h = H(), I i = I(), J j = J(), K k = K(), L l = L(), M m = M(), N n = N(), O o = O(), P p = P()) {
- args = new tuple<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P>(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
- return *this;
+ TCall<void,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &With(A a = A(), B b = B(), C c = C(), D d = D(), E e = E(), F f = F(), G g = G(), H h = H(), I i = I(), J j = J(), K k = K(), L l = L(), M m = M(), N n = N(), O o = O(), P p = P()) {
+ args = new tuple<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P>(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
+ return *this;
}
- TCall<void,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &After(Call &call) {
+ TCall<void,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &After(Call &call) {
previousCalls.push_back(&call);
- return *this;
+ return *this;
}
template <typename T>
Call &Do(T &function) { functor = new DoWrapper<T,void,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P>(function); return *this; }
template <typename Ex>
Call &Throw(Ex exception) { eHolder = new ExceptionWrapper<Ex>(exception); return *this; }
};
class MockRepository {
private:
@@ -1017,319 +1018,319 @@ public:
#define NeverCall(obj, func) RegisterExpect_<__LINE__, Never>(obj, &func, #func, __FILE__, __LINE__)
#define OnCallOverload(obj, func) RegisterExpect_<__LINE__, DontCare>(obj, func, #func, __FILE__, __LINE__)
#define ExpectCallOverload(obj, func) RegisterExpect_<__LINE__, Once>(obj, func, #func, __FILE__, __LINE__)
#define NeverCallOverload(obj, func) RegisterExpect_<__LINE__, Never>(obj, func, #func, __FILE__, __LINE__)
#endif
template <int X, RegistrationType expect, typename Z2, typename Y, typename Z>
TCall<Y> &RegisterExpect_(Z2 *mck, Y (Z::*func)(), const char *funcName, const char *fileName, unsigned long lineNo);
template <int X, RegistrationType expect, typename Z2, typename Y, typename Z, typename A>
TCall<Y,A> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A), const char *funcName, const char *fileName, unsigned long lineNo);
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
typename A, typename B>
TCall<Y,A,B> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B), const char *funcName, const char *fileName, unsigned long lineNo);
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
typename A, typename B, typename C>
TCall<Y,A,B,C> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C), const char *funcName, const char *fileName, unsigned long lineNo);
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
typename A, typename B, typename C, typename D>
TCall<Y,A,B,C,D> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D), const char *funcName, const char *fileName, unsigned long lineNo);
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E>
TCall<Y,A,B,C,D,E> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E), const char *funcName, const char *fileName, unsigned long lineNo);
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F>
TCall<Y,A,B,C,D,E,F> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F), const char *funcName, const char *fileName, unsigned long lineNo);
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G>
TCall<Y,A,B,C,D,E,F,G> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G), const char *funcName, const char *fileName, unsigned long lineNo);
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H>
TCall<Y,A,B,C,D,E,F,G,H> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H), const char *funcName, const char *fileName, unsigned long lineNo);
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I>
TCall<Y,A,B,C,D,E,F,G,H,I> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I), const char *funcName, const char *fileName, unsigned long lineNo);
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J>
TCall<Y,A,B,C,D,E,F,G,H,I,J> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J), const char *funcName, const char *fileName, unsigned long lineNo);
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K), const char *funcName, const char *fileName, unsigned long lineNo);
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L), const char *funcName, const char *fileName, unsigned long lineNo);
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M), const char *funcName, const char *fileName, unsigned long lineNo);
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M, typename N>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N), const char *funcName, const char *fileName, unsigned long lineNo);
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M, typename N, typename O>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O), const char *funcName, const char *fileName, unsigned long lineNo);
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M, typename N, typename O, typename P>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P), const char *funcName, const char *fileName, unsigned long lineNo);
//GCC 3.x doesn't seem to understand overloading on const or non-const member function. Volatile appears to work though.
#if !defined(__GNUC__) || __GNUC__ > 3
template <int X, RegistrationType expect, typename Z2, typename Y, typename Z>
TCall<Y> &RegisterExpect_(Z2 *mck, Y (Z::*func)() volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)())(func), funcName, fileName, lineNo); }
template <int X, RegistrationType expect, typename Z2, typename Y, typename Z, typename A>
TCall<Y,A> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A) volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
typename A, typename B>
TCall<Y,A,B> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B) volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
typename A, typename B, typename C>
TCall<Y,A,B,C> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C) volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
typename A, typename B, typename C, typename D>
TCall<Y,A,B,C,D> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D) volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E>
TCall<Y,A,B,C,D,E> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E) volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F>
TCall<Y,A,B,C,D,E,F> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F) volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G>
TCall<Y,A,B,C,D,E,F,G> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G) volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H>
TCall<Y,A,B,C,D,E,F,G,H> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H) volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I>
TCall<Y,A,B,C,D,E,F,G,H,I> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I) volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J>
TCall<Y,A,B,C,D,E,F,G,H,I,J> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J) volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K) volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L) volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K,L))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M) volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K,L,M))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M, typename N>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N) volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K,L,M,N))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M, typename N, typename O>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O) volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M, typename N, typename O, typename P>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P))(func), funcName, fileName, lineNo); }
template <int X, RegistrationType expect, typename Z2, typename Y, typename Z>
TCall<Y> &RegisterExpect_(Z2 *mck, Y (Z::*func)() const volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)())(func), funcName, fileName, lineNo); }
template <int X, RegistrationType expect, typename Z2, typename Y, typename Z, typename A>
TCall<Y,A> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A) const volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
typename A, typename B>
TCall<Y,A,B> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B) const volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
typename A, typename B, typename C>
TCall<Y,A,B,C> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C) const volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
typename A, typename B, typename C, typename D>
TCall<Y,A,B,C,D> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D) const volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E>
TCall<Y,A,B,C,D,E> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E) const volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F>
TCall<Y,A,B,C,D,E,F> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F) const volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G>
TCall<Y,A,B,C,D,E,F,G> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G) const volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H>
TCall<Y,A,B,C,D,E,F,G,H> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H) const volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I>
TCall<Y,A,B,C,D,E,F,G,H,I> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I) const volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J>
TCall<Y,A,B,C,D,E,F,G,H,I,J> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J) const volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K) const volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L) const volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K,L))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M) const volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K,L,M))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M, typename N>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N) const volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K,L,M,N))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M, typename N, typename O>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O) const volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M, typename N, typename O, typename P>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) const volatile, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P))(func), funcName, fileName, lineNo); }
template <int X, RegistrationType expect, typename Z2, typename Y, typename Z>
TCall<Y> &RegisterExpect_(Z2 *mck, Y (Z::*func)() const, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)())(func), funcName, fileName, lineNo); }
template <int X, RegistrationType expect, typename Z2, typename Y, typename Z, typename A>
TCall<Y,A> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A) const, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
typename A, typename B>
TCall<Y,A,B> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B) const, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
typename A, typename B, typename C>
TCall<Y,A,B,C> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C) const, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
typename A, typename B, typename C, typename D>
TCall<Y,A,B,C,D> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D) const, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E>
TCall<Y,A,B,C,D,E> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E) const, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F>
TCall<Y,A,B,C,D,E,F> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F) const, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G>
TCall<Y,A,B,C,D,E,F,G> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G) const, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H>
TCall<Y,A,B,C,D,E,F,G,H> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H) const, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I>
TCall<Y,A,B,C,D,E,F,G,H,I> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I) const, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J>
TCall<Y,A,B,C,D,E,F,G,H,I,J> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J) const, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K) const, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L) const, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K,L))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M) const, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K,L,M))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M, typename N>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N) const, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K,L,M,N))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M, typename N, typename O>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O) const, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O))(func), funcName, fileName, lineNo); }
- template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+ template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M, typename N, typename O, typename P>
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) const, const char *funcName, const char *fileName, unsigned long lineNo) { return RegisterExpect_<X,expect>(mck, (Y(Z::*)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P))(func), funcName, fileName, lineNo); }
#endif
template <typename Z>
void BasicRegisterExpect(mock<Z> *zMock, int funcIndex, void (base_mock::*func)(), int X);
template <typename Z>
Z DoExpectation(base_mock *mock, int funcno, const base_tuple &tuple);
- void DoVoidExpectation(base_mock *mock, int funcno, const base_tuple &tuple)
+ void DoVoidExpectation(base_mock *mock, int funcno, const base_tuple &tuple)
{
- for (std::list<Call *>::iterator i = expectations.begin(); i != expectations.end(); ++i)
+ for (std::list<Call *>::iterator i = expectations.begin(); i != expectations.end(); ++i)
{
Call *call = *i;
if (call->mock == mock &&
call->funcIndex == funcno &&
call->matchesArgs(tuple) &&
!call->satisfied)
{
bool allSatisfy = true;
for (std::list<Call *>::iterator callsBefore = call->previousCalls.begin();
@@ -1337,29 +1338,29 @@ public:
{
if (!(*callsBefore)->satisfied)
{
allSatisfy = false;
}
}
if (!allSatisfy) continue;
call->satisfied = true;
-
+
if (call->eHolder)
call->eHolder->rethrow();
if (call->functor != NULL)
(*(TupleInvocable<void> *)(call->functor))(tuple);
return;
}
}
- for (std::list<Call *>::iterator i = neverCalls.begin(); i != neverCalls.end(); ++i)
+ for (std::list<Call *>::iterator i = neverCalls.begin(); i != neverCalls.end(); ++i)
{
Call *call = *i;
if (call->mock == mock &&
call->funcIndex == funcno &&
call->matchesArgs(tuple))
{
bool allSatisfy = true;
for (std::list<Call *>::iterator callsBefore = call->previousCalls.begin();
callsBefore != call->previousCalls.end(); ++callsBefore)
@@ -1370,19 +1371,19 @@ public:
}
}
if (!allSatisfy) continue;
call->satisfied = true;
throw ExpectationException(this, call->getArgs(), call->funcName);
}
}
- for (std::list<Call *>::iterator i = optionals.begin(); i != optionals.end(); ++i)
+ for (std::list<Call *>::iterator i = optionals.begin(); i != optionals.end(); ++i)
{
Call *call = *i;
if (call->mock == mock &&
call->funcIndex == funcno &&
call->matchesArgs(tuple))
{
bool allSatisfy = true;
for (std::list<Call *>::iterator callsBefore = call->previousCalls.begin();
callsBefore != call->previousCalls.end(); ++callsBefore)
@@ -1400,92 +1401,92 @@ public:
call->eHolder->rethrow();
if (call->functor != NULL)
(*(TupleInvocable<void> *)(call->functor))(tuple);
return;
}
}
const char *funcName = NULL;
- for (std::list<Call *>::iterator i = expectations.begin(); i != expectations.end() && !funcName; ++i)
+ for (std::list<Call *>::iterator i = expectations.begin(); i != expectations.end() && !funcName; ++i)
{
Call *call = *i;
if (call->mock == mock &&
call->funcIndex == funcno)
funcName = call->funcName;
}
- for (std::list<Call *>::iterator i = optionals.begin(); i != optionals.end() && !funcName; ++i)
+ for (std::list<Call *>::iterator i = optionals.begin(); i != optionals.end() && !funcName; ++i)
{
Call *call = *i;
if (call->mock == mock &&
call->funcIndex == funcno)
funcName = call->funcName;
}
- for (std::list<Call *>::iterator i = neverCalls.begin(); i != neverCalls.end() && !funcName; ++i)
+ for (std::list<Call *>::iterator i = neverCalls.begin(); i != neverCalls.end() && !funcName; ++i)
{
Call *call = *i;
if (call->mock == mock &&
call->funcIndex == funcno)
funcName = call->funcName;
}
throw ExpectationException(this, &tuple, funcName);
}
- MockRepository()
+ MockRepository()
: autoExpect(true)
{
}
- ~MockRepository()
+ ~MockRepository()
{
if (!std::uncaught_exception())
VerifyAll();
reset();
- for (std::list<base_mock *>::iterator i = mocks.begin(); i != mocks.end(); i++)
+ for (std::list<base_mock *>::iterator i = mocks.begin(); i != mocks.end(); i++)
{
(*i)->destroy();
}
mocks.clear();
}
- void reset()
+ void reset()
{
- for (std::list<Call *>::iterator i = expectations.begin(); i != expectations.end(); i++)
+ for (std::list<Call *>::iterator i = expectations.begin(); i != expectations.end(); i++)
{
delete *i;
}
expectations.clear();
- for (std::list<Call *>::iterator i = neverCalls.begin(); i != neverCalls.end(); i++)
+ for (std::list<Call *>::iterator i = neverCalls.begin(); i != neverCalls.end(); i++)
{
delete *i;
}
neverCalls.clear();
- for (std::list<Call *>::iterator i = optionals.begin(); i != optionals.end(); i++)
+ for (std::list<Call *>::iterator i = optionals.begin(); i != optionals.end(); i++)
{
delete *i;
}
optionals.clear();
}
- void VerifyAll()
+ void VerifyAll()
{
- for (std::list<Call *>::iterator i = expectations.begin(); i != expectations.end(); i++)
+ for (std::list<Call *>::iterator i = expectations.begin(); i != expectations.end(); i++)
{
if (!(*i)->satisfied)
throw CallMissingException(this);
}
}
template <typename base>
base *InterfaceMock();
template <typename base>
base *ClassMock();
};
// mock function providers
template <typename Z, typename Y>
class mockFuncs : public mock<Z> {
-private:
+private:
mockFuncs();
public:
template <int X>
Y expectation0()
{
MockRepository *repo = mock<Z>::repo;
return repo->template DoExpectation<Y>(this, mock<Z>::translateX(X), tuple<>());
}
template <int X, typename A>
@@ -1582,19 +1583,19 @@ public:
Y expectation16(A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m, N n, O o, P p)
{
MockRepository *repo = mock<Z>::repo;
return repo->template DoExpectation<Y>(this, mock<Z>::translateX(X), tuple<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P>(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p));
}
};
template <typename Z>
class mockFuncs<Z, void> : public mock<Z> {
-private:
+private:
mockFuncs();
public:
template <int X>
void expectation0()
{
MockRepository *repo = mock<Z>::repo;
repo->DoVoidExpectation(this, mock<Z>::translateX(X), tuple<>());
}
template <int X, typename A>
@@ -1701,470 +1702,470 @@ void MockRepository::BasicRegisterExpect(mock<Z> *zMock, int funcIndex, void (ba
if (zMock->funcMap[funcIndex] == -1)
{
zMock->funcs[funcIndex] = getNonvirtualMemberFunctionAddress<void (*)()>(func);
zMock->funcMap[funcIndex] = X;
}
}
// Mock repository implementation
template <int X, RegistrationType expect, typename Z2, typename Y, typename Z>
-TCall<Y> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(), const char *funcName, const char *fileName, unsigned long lineNo)
+TCall<Y> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(), const char *funcName, const char *fileName, unsigned long lineNo)
{
int funcIndex = getFunctionIndex(func);
Y (mockFuncs<Z2, Y>::*mfp)();
mfp = &mockFuncs<Z2, Y>::template expectation0<X>;
- BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
- funcIndex,
+ BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
+ funcIndex,
reinterpret_cast<void (base_mock::*)()>(mfp),X);
TCall<Y> *call = new TCall<Y>(expect, reinterpret_cast<base_mock *>(mck), funcIndex, lineNo, funcName, fileName);
switch(expect)
{
case Never: neverCalls.push_back(call); break;
case DontCare: optionals.push_back(call); break;
case Once:
- if (autoExpect && expectations.size() > 0)
+ if (autoExpect && expectations.size() > 0)
{
call->previousCalls.push_back(expectations.back());
}
expectations.push_back(call);
break;
}
return *call;
}
template <int X, RegistrationType expect, typename Z2, typename Y, typename Z, typename A>
-TCall<Y,A> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A), const char *funcName, const char *fileName, unsigned long lineNo)
+TCall<Y,A> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A), const char *funcName, const char *fileName, unsigned long lineNo)
{
int funcIndex = getFunctionIndex(func);
Y (mockFuncs<Z2, Y>::*mfp)(A);
mfp = &mockFuncs<Z2, Y>::template expectation1<X,A>;
- BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
+ BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
funcIndex,
reinterpret_cast<void (base_mock::*)()>(mfp),X);
TCall<Y,A> *call = new TCall<Y,A>(expect, reinterpret_cast<base_mock *>(mck), funcIndex, lineNo, funcName, fileName);
switch(expect)
{
case Never: neverCalls.push_back(call); break;
case DontCare: optionals.push_back(call); break;
case Once:
- if (autoExpect && expectations.size() > 0)
+ if (autoExpect && expectations.size() > 0)
{
call->previousCalls.push_back(expectations.back());
}
expectations.push_back(call);
break;
}
return *call;
}
-template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
typename A, typename B>
-TCall<Y,A,B> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B), const char *funcName, const char *fileName, unsigned long lineNo)
+TCall<Y,A,B> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B), const char *funcName, const char *fileName, unsigned long lineNo)
{
int funcIndex = getFunctionIndex(func);
Y (mockFuncs<Z2, Y>::*mfp)(A,B);
mfp = &mockFuncs<Z2, Y>::template expectation2<X,A,B>;
- BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
+ BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
funcIndex,
reinterpret_cast<void (base_mock::*)()>(mfp),X);
TCall<Y,A,B> *call = new TCall<Y,A,B>(expect, reinterpret_cast<base_mock *>(mck), funcIndex, lineNo, funcName, fileName);
switch(expect)
{
case Never: neverCalls.push_back(call); break;
case DontCare: optionals.push_back(call); break;
case Once:
- if (autoExpect && expectations.size() > 0)
+ if (autoExpect && expectations.size() > 0)
{
call->previousCalls.push_back(expectations.back());
}
expectations.push_back(call);
break;
}
return *call;
}
-template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
typename A, typename B, typename C>
-TCall<Y,A,B,C> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C), const char *funcName, const char *fileName, unsigned long lineNo)
+TCall<Y,A,B,C> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C), const char *funcName, const char *fileName, unsigned long lineNo)
{
int funcIndex = getFunctionIndex(func);
Y (mockFuncs<Z2, Y>::*mfp)(A,B,C);
mfp = &mockFuncs<Z2, Y>::template expectation3<X,A,B,C>;
- BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
+ BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
funcIndex,
reinterpret_cast<void (base_mock::*)()>(mfp),X);
TCall<Y,A,B,C> *call = new TCall<Y,A,B,C>(expect, reinterpret_cast<base_mock *>(mck), funcIndex, lineNo, funcName, fileName);
switch(expect)
{
case Never: neverCalls.push_back(call); break;
case DontCare: optionals.push_back(call); break;
case Once:
- if (autoExpect && expectations.size() > 0)
+ if (autoExpect && expectations.size() > 0)
{
call->previousCalls.push_back(expectations.back());
}
expectations.push_back(call);
break;
}
return *call;
}
-template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
typename A, typename B, typename C, typename D>
-TCall<Y,A,B,C,D> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D), const char *funcName, const char *fileName, unsigned long lineNo)
+TCall<Y,A,B,C,D> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D), const char *funcName, const char *fileName, unsigned long lineNo)
{
int funcIndex = getFunctionIndex(func);
Y (mockFuncs<Z2, Y>::*mfp)(A,B,C,D);
mfp = &mockFuncs<Z2, Y>::template expectation4<X,A,B,C,D>;
- BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
+ BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
funcIndex,
reinterpret_cast<void (base_mock::*)()>(mfp),X);
TCall<Y,A,B,C,D> *call = new TCall<Y,A,B,C,D>(expect, reinterpret_cast<base_mock *>(mck), funcIndex, lineNo, funcName, fileName);
switch(expect)
{
case Never: neverCalls.push_back(call); break;
case DontCare: optionals.push_back(call); break;
case Once:
- if (autoExpect && expectations.size() > 0)
+ if (autoExpect && expectations.size() > 0)
{
call->previousCalls.push_back(expectations.back());
}
expectations.push_back(call);
break;
}
return *call;
}
-template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E>
-TCall<Y,A,B,C,D,E> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E), const char *funcName, const char *fileName, unsigned long lineNo)
+TCall<Y,A,B,C,D,E> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E), const char *funcName, const char *fileName, unsigned long lineNo)
{
int funcIndex = getFunctionIndex(func);
Y (mockFuncs<Z2, Y>::*mfp)(A,B,C,D,E);
mfp = &mockFuncs<Z2, Y>::template expectation5<X,A,B,C,D,E>;
- BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
+ BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
funcIndex,
reinterpret_cast<void (base_mock::*)()>(mfp),X);
TCall<Y,A,B,C,D,E> *call = new TCall<Y,A,B,C,D,E>(expect, reinterpret_cast<base_mock *>(mck), funcIndex, lineNo, funcName, fileName);
switch(expect)
{
case Never: neverCalls.push_back(call); break;
case DontCare: optionals.push_back(call); break;
case Once:
- if (autoExpect && expectations.size() > 0)
+ if (autoExpect && expectations.size() > 0)
{
call->previousCalls.push_back(expectations.back());
}
expectations.push_back(call);
break;
}
return *call;
}
-template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F>
-TCall<Y,A,B,C,D,E,F> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F), const char *funcName, const char *fileName, unsigned long lineNo)
+TCall<Y,A,B,C,D,E,F> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F), const char *funcName, const char *fileName, unsigned long lineNo)
{
int funcIndex = getFunctionIndex(func);
Y (mockFuncs<Z2, Y>::*mfp)(A,B,C,D,E,F);
mfp = &mockFuncs<Z2, Y>::template expectation6<X,A,B,C,D,E,F>;
- BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
+ BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
funcIndex,
reinterpret_cast<void (base_mock::*)()>(mfp),X);
TCall<Y,A,B,C,D,E,F> *call = new TCall<Y,A,B,C,D,E,F>(expect, reinterpret_cast<base_mock *>(mck), funcIndex, lineNo, funcName, fileName);
switch(expect)
{
case Never: neverCalls.push_back(call); break;
case DontCare: optionals.push_back(call); break;
case Once:
- if (autoExpect && expectations.size() > 0)
+ if (autoExpect && expectations.size() > 0)
{
call->previousCalls.push_back(expectations.back());
}
expectations.push_back(call);
break;
}
return *call;
}
-template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G>
-TCall<Y,A,B,C,D,E,F,G> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G), const char *funcName, const char *fileName, unsigned long lineNo)
+TCall<Y,A,B,C,D,E,F,G> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G), const char *funcName, const char *fileName, unsigned long lineNo)
{
int funcIndex = getFunctionIndex(func);
Y (mockFuncs<Z2, Y>::*mfp)(A,B,C,D,E,F,G);
mfp = &mockFuncs<Z2, Y>::template expectation7<X,A,B,C,D,E,F,G>;
- BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
+ BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
funcIndex,
reinterpret_cast<void (base_mock::*)()>(mfp),X);
TCall<Y,A,B,C,D,E,F,G> *call = new TCall<Y,A,B,C,D,E,F,G>(expect, reinterpret_cast<base_mock *>(mck), funcIndex, lineNo, funcName, fileName);
switch(expect)
{
case Never: neverCalls.push_back(call); break;
case DontCare: optionals.push_back(call); break;
case Once:
- if (autoExpect && expectations.size() > 0)
+ if (autoExpect && expectations.size() > 0)
{
call->previousCalls.push_back(expectations.back());
}
expectations.push_back(call);
break;
}
return *call;
}
-template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H>
-TCall<Y,A,B,C,D,E,F,G,H> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H), const char *funcName, const char *fileName, unsigned long lineNo)
+TCall<Y,A,B,C,D,E,F,G,H> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H), const char *funcName, const char *fileName, unsigned long lineNo)
{
int funcIndex = getFunctionIndex(func);
Y (mockFuncs<Z2, Y>::*mfp)(A,B,C,D,E,F,G,H);
mfp = &mockFuncs<Z2, Y>::template expectation8<X,A,B,C,D,E,F,G,H>;
- BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
+ BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
funcIndex,
reinterpret_cast<void (base_mock::*)()>(mfp),X);
TCall<Y,A,B,C,D,E,F,G,H> *call = new TCall<Y,A,B,C,D,E,F,G,H>(expect, reinterpret_cast<base_mock *>(mck), funcIndex, lineNo, funcName, fileName);
switch(expect)
{
case Never: neverCalls.push_back(call); break;
case DontCare: optionals.push_back(call); break;
case Once:
- if (autoExpect && expectations.size() > 0)
+ if (autoExpect && expectations.size() > 0)
{
call->previousCalls.push_back(expectations.back());
}
expectations.push_back(call);
break;
}
return *call;
}
-template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I>
-TCall<Y,A,B,C,D,E,F,G,H,I> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I), const char *funcName, const char *fileName, unsigned long lineNo)
+TCall<Y,A,B,C,D,E,F,G,H,I> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I), const char *funcName, const char *fileName, unsigned long lineNo)
{
int funcIndex = getFunctionIndex(func);
Y (mockFuncs<Z2, Y>::*mfp)(A,B,C,D,E,F,G,H,I);
mfp = &mockFuncs<Z2, Y>::template expectation9<X,A,B,C,D,E,F,G,H,I>;
- BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
+ BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
funcIndex,
reinterpret_cast<void (base_mock::*)()>(mfp),X);
TCall<Y,A,B,C,D,E,F,G,H,I> *call = new TCall<Y,A,B,C,D,E,F,G,H,I>(expect, reinterpret_cast<base_mock *>(mck), funcIndex, lineNo, funcName, fileName);
switch(expect)
{
case Never: neverCalls.push_back(call); break;
case DontCare: optionals.push_back(call); break;
case Once:
- if (autoExpect && expectations.size() > 0)
+ if (autoExpect && expectations.size() > 0)
{
call->previousCalls.push_back(expectations.back());
}
expectations.push_back(call);
break;
}
return *call;
}
-template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J>
-TCall<Y,A,B,C,D,E,F,G,H,I,J> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J), const char *funcName, const char *fileName, unsigned long lineNo)
+TCall<Y,A,B,C,D,E,F,G,H,I,J> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J), const char *funcName, const char *fileName, unsigned long lineNo)
{
int funcIndex = getFunctionIndex(func);
Y (mockFuncs<Z2, Y>::*mfp)(A,B,C,D,E,F,G,H,I,J);
mfp = &mockFuncs<Z2, Y>::template expectation10<X,A,B,C,D,E,F,G,H,I,J>;
- BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
+ BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
funcIndex,
reinterpret_cast<void (base_mock::*)()>(mfp),X);
TCall<Y,A,B,C,D,E,F,G,H,I,J> *call = new TCall<Y,A,B,C,D,E,F,G,H,I,J>(expect, reinterpret_cast<base_mock *>(mck), funcIndex, lineNo, funcName, fileName);
switch(expect)
{
case Never: neverCalls.push_back(call); break;
case DontCare: optionals.push_back(call); break;
case Once:
- if (autoExpect && expectations.size() > 0)
+ if (autoExpect && expectations.size() > 0)
{
call->previousCalls.push_back(expectations.back());
}
expectations.push_back(call);
break;
}
return *call;
}
-template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K>
-TCall<Y,A,B,C,D,E,F,G,H,I,J,K> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K), const char *funcName, const char *fileName, unsigned long lineNo)
+TCall<Y,A,B,C,D,E,F,G,H,I,J,K> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K), const char *funcName, const char *fileName, unsigned long lineNo)
{
int funcIndex = getFunctionIndex(func);
Y (mockFuncs<Z2, Y>::*mfp)(A,B,C,D,E,F,G,H,I,J,K);
mfp = &mockFuncs<Z2, Y>::template expectation11<X,A,B,C,D,E,F,G,H,I,J,K>;
- BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
+ BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
funcIndex,
reinterpret_cast<void (base_mock::*)()>(mfp),X);
TCall<Y,A,B,C,D,E,F,G,H,I,J,K> *call = new TCall<Y,A,B,C,D,E,F,G,H,I,J,K>(expect, reinterpret_cast<base_mock *>(mck), funcIndex, lineNo, funcName, fileName);
switch(expect)
{
case Never: neverCalls.push_back(call); break;
case DontCare: optionals.push_back(call); break;
case Once:
- if (autoExpect && expectations.size() > 0)
+ if (autoExpect && expectations.size() > 0)
{
call->previousCalls.push_back(expectations.back());
}
expectations.push_back(call);
break;
}
return *call;
}
-template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L>
-TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L), const char *funcName, const char *fileName, unsigned long lineNo)
+TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L), const char *funcName, const char *fileName, unsigned long lineNo)
{
int funcIndex = getFunctionIndex(func);
Y (mockFuncs<Z2, Y>::*mfp)(A,B,C,D,E,F,G,H,I,J,K,L);
mfp = &mockFuncs<Z2, Y>::template expectation12<X,A,B,C,D,E,F,G,H,I,J,K,L>;
- BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
+ BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
funcIndex,
reinterpret_cast<void (base_mock::*)()>(mfp),X);
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L> *call = new TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L>(expect, reinterpret_cast<base_mock *>(mck), funcIndex, lineNo, funcName, fileName);
switch(expect)
{
case Never: neverCalls.push_back(call); break;
case DontCare: optionals.push_back(call); break;
case Once:
- if (autoExpect && expectations.size() > 0)
+ if (autoExpect && expectations.size() > 0)
{
call->previousCalls.push_back(expectations.back());
}
expectations.push_back(call);
break;
}
return *call;
}
-template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M>
-TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M), const char *funcName, const char *fileName, unsigned long lineNo)
+TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M), const char *funcName, const char *fileName, unsigned long lineNo)
{
int funcIndex = getFunctionIndex(func);
Y (mockFuncs<Z2, Y>::*mfp)(A,B,C,D,E,F,G,H,I,J,K,L,M);
mfp = &mockFuncs<Z2, Y>::template expectation13<X,A,B,C,D,E,F,G,H,I,J,K,L,M>;
- BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
+ BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
funcIndex,
reinterpret_cast<void (base_mock::*)()>(mfp),X);
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M> *call = new TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M>(expect, reinterpret_cast<base_mock *>(mck), funcIndex, lineNo, funcName, fileName);
switch(expect)
{
case Never: neverCalls.push_back(call); break;
case DontCare: optionals.push_back(call); break;
case Once:
- if (autoExpect && expectations.size() > 0)
+ if (autoExpect && expectations.size() > 0)
{
call->previousCalls.push_back(expectations.back());
}
expectations.push_back(call);
break;
}
return *call;
}
-template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M, typename N>
-TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N), const char *funcName, const char *fileName, unsigned long lineNo)
+TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N), const char *funcName, const char *fileName, unsigned long lineNo)
{
int funcIndex = getFunctionIndex(func);
Y (mockFuncs<Z2, Y>::*mfp)(A,B,C,D,E,F,G,H,I,J,K,L,M,N);
mfp = &mockFuncs<Z2, Y>::template expectation14<X,A,B,C,D,E,F,G,H,I,J,K,L,M,N>;
- BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
- funcIndex,
+ BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
+ funcIndex,
reinterpret_cast<void (base_mock::*)()>(mfp),X);
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N> *call = new TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N>(expect, reinterpret_cast<base_mock *>(mck), funcIndex, lineNo, funcName, fileName);
switch(expect)
{
case Never: neverCalls.push_back(call); break;
case DontCare: optionals.push_back(call); break;
case Once:
- if (autoExpect && expectations.size() > 0)
+ if (autoExpect && expectations.size() > 0)
{
call->previousCalls.push_back(expectations.back());
}
expectations.push_back(call);
break;
}
return *call;
}
-template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M, typename N, typename O>
-TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O), const char *funcName, const char *fileName, unsigned long lineNo)
+TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O), const char *funcName, const char *fileName, unsigned long lineNo)
{
int funcIndex = getFunctionIndex(func);
Y (mockFuncs<Z2, Y>::*mfp)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O);
mfp = &mockFuncs<Z2, Y>::template expectation15<X,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O>;
- BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
- funcIndex,
+ BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
+ funcIndex,
reinterpret_cast<void (base_mock::*)()>(mfp),X);
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O> *call = new TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O>(expect, reinterpret_cast<base_mock *>(mck), funcIndex, lineNo, funcName, fileName);
switch(expect)
{
case Never: neverCalls.push_back(call); break;
case DontCare: optionals.push_back(call); break;
case Once:
- if (autoExpect && expectations.size() > 0)
+ if (autoExpect && expectations.size() > 0)
{
call->previousCalls.push_back(expectations.back());
}
expectations.push_back(call);
break;
}
return *call;
}
-template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
- typename A, typename B, typename C, typename D,
+template <int X, RegistrationType expect, typename Z2, typename Y, typename Z,
+ typename A, typename B, typename C, typename D,
typename E, typename F, typename G, typename H,
typename I, typename J, typename K, typename L,
typename M, typename N, typename O, typename P>
-TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P), const char *funcName, const char *fileName, unsigned long lineNo)
+TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> &MockRepository::RegisterExpect_(Z2 *mck, Y (Z::*func)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P), const char *funcName, const char *fileName, unsigned long lineNo)
{
int funcIndex = getFunctionIndex(func);
Y (mockFuncs<Z2, Y>::*mfp)(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P);
mfp = &mockFuncs<Z2, Y>::template expectation16<X,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P>;
- BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
+ BasicRegisterExpect(reinterpret_cast<mock<Z2> *>(mck),
funcIndex,
reinterpret_cast<void (base_mock::*)()>(mfp),X);
TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P> *call = new TCall<Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P>(expect, reinterpret_cast<base_mock *>(mck), funcIndex, lineNo, funcName, fileName);
switch(expect)
{
case Never: neverCalls.push_back(call); break;
case DontCare: optionals.push_back(call); break;
case Once:
- if (autoExpect && expectations.size() > 0)
+ if (autoExpect && expectations.size() > 0)
{
call->previousCalls.push_back(expectations.back());
}
expectations.push_back(call);
break;
}
return *call;
}
template <typename Z>
-Z MockRepository::DoExpectation(base_mock *mock, int funcno, const base_tuple &tuple)
+Z MockRepository::DoExpectation(base_mock *mock, int funcno, const base_tuple &tuple)
{
- for (std::list<Call *>::iterator i = expectations.begin(); i != expectations.end(); ++i)
+ for (std::list<Call *>::iterator i = expectations.begin(); i != expectations.end(); ++i)
{
Call *call = *i;
if (call->mock == mock &&
call->funcIndex == funcno &&
call->matchesArgs(tuple) &&
!call->satisfied)
{
bool allSatisfy = true;
for (std::list<Call *>::iterator callsBefore = call->previousCalls.begin();
@@ -2185,19 +2186,19 @@ Z MockRepository::DoExpectation(base_mock *mock, int funcno, const base_tuple &t
if (call->retVal)
return ((ReturnValueWrapper<Z> *)call->retVal)->rv;
if (call->functor != NULL)
return (*(TupleInvocable<Z> *)(call->functor))(tuple);
throw NoResultSetUpException(call->getArgs(), call->funcName);
}
}
- for (std::list<Call *>::iterator i = neverCalls.begin(); i != neverCalls.end(); ++i)
+ for (std::list<Call *>::iterator i = neverCalls.begin(); i != neverCalls.end(); ++i)
{
Call *call = *i;
if (call->mock == mock &&
call->funcIndex == funcno &&
call->matchesArgs(tuple))
{
bool allSatisfy = true;
for (std::list<Call *>::iterator callsBefore = call->previousCalls.begin();
callsBefore != call->previousCalls.end(); ++callsBefore)
@@ -2208,66 +2209,66 @@ Z MockRepository::DoExpectation(base_mock *mock, int funcno, const base_tuple &t
}
}
if (!allSatisfy) continue;
call->satisfied = true;
throw ExpectationException(this, call->getArgs(), call->funcName);
}
}
- for (std::list<Call *>::iterator i = optionals.begin(); i != optionals.end(); ++i)
+ for (std::list<Call *>::iterator i = optionals.begin(); i != optionals.end(); ++i)
{
Call *call = *i;
if (call->mock == mock &&
call->funcIndex == funcno &&
call->matchesArgs(tuple))
{
bool allSatisfy = true;
for (std::list<Call *>::iterator callsBefore = call->previousCalls.begin();
callsBefore != call->previousCalls.end(); ++callsBefore)
{
if (!(*callsBefore)->satisfied)
{
allSatisfy = false;
}
}
if (!allSatisfy) continue;
call->satisfied = true;
-
+
if (call->eHolder)
call->eHolder->rethrow();
if (call->retVal)
return ((ReturnValueWrapper<Z> *)call->retVal)->rv;
-
+
if (call->functor != NULL)
return (*(TupleInvocable<Z> *)(call->functor))(tuple);
-
+
throw NoResultSetUpException(call->getArgs(), call->funcName);
}
}
const char *funcName = NULL;
- for (std::list<Call *>::iterator i = expectations.begin(); i != expectations.end() && !funcName; ++i)
+ for (std::list<Call *>::iterator i = expectations.begin(); i != expectations.end() && !funcName; ++i)
{
Call *call = *i;
if (call->mock == mock &&
call->funcIndex == funcno)
funcName = call->funcName;
}
- for (std::list<Call *>::iterator i = neverCalls.begin(); i != neverCalls.end() && !funcName; ++i)
+ for (std::list<Call *>::iterator i = neverCalls.begin(); i != neverCalls.end() && !funcName; ++i)
{
Call *call = *i;
if (call->mock == mock &&
call->funcIndex == funcno)
funcName = call->funcName;
}
- for (std::list<Call *>::iterator i = optionals.begin(); i != optionals.end() && !funcName; ++i)
+ for (std::list<Call *>::iterator i = optionals.begin(); i != optionals.end() && !funcName; ++i)
{
Call *call = *i;
if (call->mock == mock &&
call->funcIndex == funcno)
funcName = call->funcName;
}
throw ExpectationException(this, &tuple, funcName);
}
template <typename base>
@@ -2334,25 +2335,24 @@ inline std::ostream &operator<<(std::ostream &os, const MockRepository &repo)
os << "Optional results set up:" << std::endl;
for (std::list<Call *>::const_iterator exp = repo.optionals.begin(); exp != repo.optionals.end(); ++exp)
os << **exp;
os << std::endl;
}
return os;
}
-inline void BaseException::setException(const char *description, MockRepository *repo)
+inline void BaseException::setException(const char *description, MockRepository *repo)
{
std::stringstream text;
text << description;
text << *repo;
std::string result = text.str();
strncpy(buffer, result.c_str(), sizeof(buffer)-1);
buffer[sizeof(buffer)-1] = '\0';
}
#ifdef _MSC_VER
#pragma warning(pop)
#endif
#endif
-