mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Add mock classes for prefs and qofquery
This commit is contained in:
parent
584ccd333d
commit
43d2c80107
@ -69,10 +69,12 @@ set(gtest_import_backend_SOURCES
|
||||
${CMAKE_SOURCE_DIR}/gnucash/import-export/import-settings.c
|
||||
${CMAKE_SOURCE_DIR}/gnucash/import-export/import-utilities.c
|
||||
gmock-qofinstance.cpp
|
||||
gmock-gnc-prefs.cpp
|
||||
gmock-qofbook.cpp
|
||||
gmock-Account.cpp
|
||||
gmock-Transaction.cpp
|
||||
gmock-Split.cpp
|
||||
gmock-qofquery.cpp
|
||||
${CMAKE_SOURCE_DIR}/libgnucash/engine/gnc-numeric.cpp
|
||||
${CMAKE_SOURCE_DIR}/libgnucash/engine/gnc-rational.cpp
|
||||
${CMAKE_SOURCE_DIR}/libgnucash/engine/gnc-int128.cpp
|
||||
|
47
gnucash/import-export/test/gmock-gnc-prefs.cpp
Normal file
47
gnucash/import-export/test/gmock-gnc-prefs.cpp
Normal file
@ -0,0 +1,47 @@
|
||||
#include <config.h>
|
||||
|
||||
#include "gmock-gnc-prefs.h"
|
||||
|
||||
PrefsBackend* prefsbackend = NULL;
|
||||
|
||||
gboolean
|
||||
gnc_prefs_get_bool (const gchar *group, const gchar *pref_name)
|
||||
{
|
||||
return ((MockPrefsBackend*)prefsbackend)->getBool(group, pref_name);
|
||||
}
|
||||
|
||||
gint
|
||||
gnc_prefs_get_int (const gchar *group, const gchar *pref_name)
|
||||
{
|
||||
return ((MockPrefsBackend*)prefsbackend)->getInt(group, pref_name);
|
||||
}
|
||||
|
||||
gint64
|
||||
gnc_prefs_get_int64 (const gchar *group, const gchar *pref_name)
|
||||
{
|
||||
return ((MockPrefsBackend*)prefsbackend)->getInt64(group, pref_name);
|
||||
}
|
||||
|
||||
gdouble
|
||||
gnc_prefs_get_float (const gchar *group, const gchar *pref_name)
|
||||
{
|
||||
return ((MockPrefsBackend*)prefsbackend)->getFloat(group, pref_name);
|
||||
}
|
||||
|
||||
gchar *
|
||||
gnc_prefs_get_string (const gchar *group, const gchar *pref_name)
|
||||
{
|
||||
return ((MockPrefsBackend*)prefsbackend)->getString(group, pref_name);
|
||||
}
|
||||
|
||||
gint
|
||||
gnc_prefs_get_enum (const gchar *group, const gchar *pref_name)
|
||||
{
|
||||
return ((MockPrefsBackend*)prefsbackend)->getEnum(group, pref_name);
|
||||
}
|
||||
|
||||
void
|
||||
gnc_prefs_get_coords (const gchar *group, const gchar *pref_name, gdouble *x, gdouble *y)
|
||||
{
|
||||
((MockPrefsBackend*)prefsbackend)->getCoords(group, pref_name, x, y);
|
||||
}
|
47
gnucash/import-export/test/gmock-gnc-prefs.h
Normal file
47
gnucash/import-export/test/gmock-gnc-prefs.h
Normal file
@ -0,0 +1,47 @@
|
||||
#ifndef GMOCK_GNC_PREFS_H
|
||||
#define GMOCK_GNC_PREFS_H
|
||||
|
||||
#include <gmock/gmock.h>
|
||||
|
||||
extern "C"
|
||||
{
|
||||
#include <gnc-prefs.h>
|
||||
#include <gnc-prefs-p.h>
|
||||
}
|
||||
|
||||
|
||||
// mock up for PrefsBackend (singleton class)
|
||||
class MockPrefsBackend : PrefsBackend
|
||||
{
|
||||
public:
|
||||
MockPrefsBackend(MockPrefsBackend const&) = delete;
|
||||
MockPrefsBackend& operator=(MockPrefsBackend const&) = delete;
|
||||
|
||||
static MockPrefsBackend* getInstance()
|
||||
{
|
||||
static MockPrefsBackend prefs; // preferences object
|
||||
|
||||
// register preferences object
|
||||
if (prefsbackend == NULL)
|
||||
prefsbackend = (PrefsBackend*)&prefs;
|
||||
|
||||
// check that preferences object is correctly registered
|
||||
EXPECT_EQ((MockPrefsBackend*)prefsbackend, &prefs);
|
||||
|
||||
return &prefs;
|
||||
}
|
||||
|
||||
MOCK_METHOD2(getBool, gboolean(const gchar *, const gchar *));
|
||||
MOCK_METHOD2(getInt, gint(const gchar *, const gchar *));
|
||||
MOCK_METHOD2(getInt64, gint64(const gchar *, const gchar *));
|
||||
MOCK_METHOD2(getFloat, gdouble(const gchar *, const gchar *));
|
||||
MOCK_METHOD2(getString, gchar*(const gchar *, const gchar *));
|
||||
MOCK_METHOD2(getEnum, gint(const gchar *, const gchar *));
|
||||
MOCK_METHOD4(getCoords, void(const gchar *, const gchar *, gdouble *, gdouble *));
|
||||
|
||||
private:
|
||||
MockPrefsBackend() {}
|
||||
~MockPrefsBackend() {}
|
||||
};
|
||||
|
||||
#endif
|
68
gnucash/import-export/test/gmock-qofquery.cpp
Normal file
68
gnucash/import-export/test/gmock-qofquery.cpp
Normal file
@ -0,0 +1,68 @@
|
||||
#include <config.h>
|
||||
|
||||
#include "gmock-qofquery.h"
|
||||
#include "gmock-qofbook.h"
|
||||
|
||||
QofQuery *
|
||||
qof_query_create_for (QofIdTypeConst obj_type)
|
||||
{
|
||||
return (QofQuery*)qof_query_factory.create();
|
||||
/*
|
||||
// \todo create typed query objects
|
||||
QofQuery *ret = NULL;
|
||||
|
||||
if (g_strcmp0(obj_type, GNC_ID_SPLIT) == 0)
|
||||
ret = (QofQuery*)qof_query_factory.createForSplit();
|
||||
// else
|
||||
// FAIL();
|
||||
|
||||
return ret;
|
||||
*/
|
||||
}
|
||||
|
||||
void
|
||||
qof_query_set_book (QofQuery *query, QofBook *book)
|
||||
{
|
||||
g_return_if_fail(QOF_IS_MOCK_BOOK(book));
|
||||
((QofMockQuery*)query)->setBook(book);
|
||||
}
|
||||
|
||||
GList *
|
||||
qof_query_run (QofQuery *query)
|
||||
{
|
||||
GList *matching_objects = NULL;
|
||||
|
||||
// \todo use typed mock objects
|
||||
auto matchingObjects = ((QofMockQuery*)query)->run();
|
||||
|
||||
for (auto object : matchingObjects)
|
||||
{
|
||||
matching_objects = g_list_append(matching_objects, static_cast<gpointer>(object));
|
||||
}
|
||||
|
||||
return matching_objects;
|
||||
}
|
||||
|
||||
void
|
||||
xaccQueryAddDateMatchTT (
|
||||
QofQuery *query,
|
||||
gboolean use_start,
|
||||
time64 stt,
|
||||
gboolean use_end,
|
||||
time64 ett,
|
||||
QofQueryOp op)
|
||||
{
|
||||
((QofMockQuery*)query)->addDateMatchTT(use_start, stt, use_end, ett, op);
|
||||
}
|
||||
|
||||
void
|
||||
xaccQueryAddSingleAccountMatch(QofQuery *query, Account *acc, QofQueryOp op)
|
||||
{
|
||||
((QofMockQuery*)query)->addSingleAccountMatch(acc, op);
|
||||
}
|
||||
|
||||
void
|
||||
qof_query_destroy (QofQuery *query)
|
||||
{
|
||||
((QofMockQuery*)query)->destroy();
|
||||
}
|
46
gnucash/import-export/test/gmock-qofquery.h
Normal file
46
gnucash/import-export/test/gmock-qofquery.h
Normal file
@ -0,0 +1,46 @@
|
||||
#ifndef GMOCK_QOFQUERY_H
|
||||
#define GMOCK_QOFQUERY_H
|
||||
|
||||
#include <gmock/gmock.h>
|
||||
|
||||
#include <qofquery.h>
|
||||
#include <qofquery-p.h>
|
||||
|
||||
extern "C"
|
||||
{
|
||||
#include <Query.h>
|
||||
}
|
||||
|
||||
// mock up for QofQuery
|
||||
// hint: class QofMockQuery can not be derived from QofQuery, since struct _QofQuery is not public
|
||||
class QofMockQuery
|
||||
{
|
||||
public:
|
||||
QofMockQuery() {};
|
||||
|
||||
MOCK_METHOD1(setBook, void(QofBook*));
|
||||
MOCK_METHOD0(destroy, void());
|
||||
MOCK_METHOD5(addDateMatchTT, void(gboolean, time64, gboolean, time64, QofQueryOp));
|
||||
MOCK_METHOD2(addSingleAccountMatch, void(Account*, QofQueryOp));
|
||||
MOCK_METHOD0(run, std::vector<void*>());
|
||||
};
|
||||
|
||||
/*
|
||||
// typed mock up for QofQuery
|
||||
template <typename T>
|
||||
class MockQofQueryWithType : MockQofQuery
|
||||
{
|
||||
public:
|
||||
// \todo: write constructor
|
||||
MOCK_METHOD0_T(run, std::list<T*>());
|
||||
};
|
||||
*/
|
||||
|
||||
class QofQueryFactory
|
||||
{
|
||||
public:
|
||||
// MOCK_METHOD0(createForSplit, MockQofQueryWithType<Split>*());
|
||||
MOCK_METHOD0(create, QofMockQuery*());
|
||||
} qof_query_factory;
|
||||
|
||||
#endif
|
@ -9,6 +9,7 @@ extern "C"
|
||||
#include <import-backend.h>
|
||||
}
|
||||
|
||||
#include "gmock-gnc-prefs.h"
|
||||
#include "gmock-qofbook.h"
|
||||
#include "gmock-Account.h"
|
||||
#include "gmock-Transaction.h"
|
||||
@ -43,6 +44,8 @@ class ImportBackendTest : public testing::Test
|
||||
protected:
|
||||
void SetUp()
|
||||
{
|
||||
m_prefs = MockPrefsBackend::getInstance();
|
||||
ASSERT_NE(m_prefs, nullptr);
|
||||
m_import_acc = new MockAccount();
|
||||
m_dest_acc = new MockAccount();
|
||||
m_trans = new MockTransaction();
|
||||
@ -63,6 +66,7 @@ protected:
|
||||
m_split->free();
|
||||
}
|
||||
|
||||
MockPrefsBackend* m_prefs;
|
||||
MockAccount* m_import_acc;
|
||||
MockAccount* m_dest_acc;
|
||||
MockTransaction* m_trans;
|
||||
|
Loading…
Reference in New Issue
Block a user