2020-04-08 15:00:29 -05:00
|
|
|
#ifndef GMOCK_ACCOUNT_H
|
|
|
|
#define GMOCK_ACCOUNT_H
|
|
|
|
|
|
|
|
#include <gmock/gmock.h>
|
|
|
|
|
|
|
|
#include <Account.h>
|
|
|
|
#include <AccountP.h>
|
2020-09-22 15:24:57 -05:00
|
|
|
#include <qofbook.h>
|
2020-04-08 15:00:29 -05:00
|
|
|
|
|
|
|
#include "gmock-gobject.h"
|
|
|
|
|
|
|
|
|
2020-09-20 15:33:51 -05:00
|
|
|
GType gnc_mockaccount_get_type(void);
|
2020-04-08 15:00:29 -05:00
|
|
|
|
2020-09-20 15:33:51 -05:00
|
|
|
#define GNC_TYPE_MOCKACCOUNT (gnc_mockaccount_get_type ())
|
|
|
|
#define GNC_IS_MOCKACCOUNT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_MOCKACCOUNT))
|
2020-04-08 15:00:29 -05:00
|
|
|
|
|
|
|
|
|
|
|
// mock up for Account
|
|
|
|
class MockAccount : public Account
|
|
|
|
{
|
|
|
|
public:
|
2020-08-24 16:31:08 -05:00
|
|
|
/* note: don't use default constructor instead of empty constructor, since
|
|
|
|
* it does zero initialization, which would overwrite GObject
|
|
|
|
* initialization, which is already done in the new operator. */
|
2020-04-08 15:00:29 -05:00
|
|
|
MockAccount() {}
|
|
|
|
void* operator new(size_t size)
|
|
|
|
{
|
2020-09-20 15:33:51 -05:00
|
|
|
return mock_g_object_new (GNC_TYPE_MOCKACCOUNT, NULL, size);
|
2020-04-08 15:00:29 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
// define separate free() function since destructor is protected
|
|
|
|
void free()
|
|
|
|
{
|
|
|
|
delete this;
|
|
|
|
}
|
|
|
|
void operator delete(void* acc, size_t size)
|
|
|
|
{
|
|
|
|
mock_g_object_unref(acc, size);
|
|
|
|
}
|
|
|
|
|
2020-07-09 14:36:01 -05:00
|
|
|
MOCK_METHOD0(begin_edit, void());
|
|
|
|
MOCK_METHOD0(commit_edit, void());
|
2020-09-22 15:24:57 -05:00
|
|
|
MOCK_CONST_METHOD0(get_book, QofBook*());
|
2023-02-03 01:03:14 -06:00
|
|
|
MOCK_CONST_METHOD0(get_commodity, gnc_commodity*());
|
2020-09-20 16:36:34 -05:00
|
|
|
MOCK_CONST_METHOD2(for_each_transaction, gint(TransactionCallback, void*));
|
2021-09-05 19:52:34 -05:00
|
|
|
MOCK_CONST_METHOD0(xaccAccountGetSplitList, SplitList*());
|
2023-02-02 17:56:49 -06:00
|
|
|
MOCK_METHOD2(find_account, Account *(const char*, const char*));
|
|
|
|
MOCK_METHOD3(add_account, void(const char*, const char*, Account*));
|
|
|
|
MOCK_METHOD1(find_account_bayes, Account *(std::vector<const char*>&));
|
|
|
|
MOCK_METHOD2(add_account_bayes, void(std::vector<const char*>&, Account*));
|
2020-04-08 15:00:29 -05:00
|
|
|
|
|
|
|
protected:
|
2020-08-24 16:31:08 -05:00
|
|
|
/* Protect destructor to avoid MockAccount objects to be created on stack. MockAccount
|
|
|
|
* objects can only be dynamically created, since they are derived from GObject. */
|
2020-04-08 15:00:29 -05:00
|
|
|
~MockAccount() {}
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2020-09-20 17:47:53 -05:00
|
|
|
// type conversion functions
|
|
|
|
static inline MockAccount*
|
|
|
|
gnc_mockaccount (Account *account)
|
|
|
|
{
|
|
|
|
if (GNC_IS_MOCKACCOUNT(account))
|
|
|
|
return static_cast<MockAccount*>(account);
|
|
|
|
ADD_FAILURE() << "Expected 'account' to be of type 'MockAccount'";
|
|
|
|
return nullptr;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline const MockAccount*
|
|
|
|
gnc_mockaccount (const Account *account)
|
|
|
|
{
|
|
|
|
if (GNC_IS_MOCKACCOUNT(account))
|
|
|
|
return static_cast<const MockAccount*>(account);
|
|
|
|
ADD_FAILURE() << "Expected 'account' to be of type 'MockAccount'";
|
|
|
|
return nullptr;
|
|
|
|
}
|
|
|
|
|
2020-04-08 15:00:29 -05:00
|
|
|
#endif
|