Replace singleton class MockPrefsBackend by an ordinary class

This commit is contained in:
Christian Gruber
2020-06-10 21:47:50 +02:00
parent 8ac640d5fa
commit 766f88c02d
3 changed files with 25 additions and 36 deletions

View File

@@ -114,8 +114,7 @@ class ImportBackendTest : public testing::Test
protected:
void SetUp()
{
m_prefs = MockPrefsBackend::getInstance();
ASSERT_NE(m_prefs, nullptr);
gmock_gnc_prefs_set_backend(&m_prefs);
m_import_acc = new MockAccount();
m_dest_acc = new MockAccount();
m_trans = new MockTransaction();
@@ -136,7 +135,7 @@ protected:
m_split->free();
}
MockPrefsBackend* m_prefs;
MockPrefsBackend m_prefs;
MockAccount* m_import_acc;
MockAccount* m_dest_acc;
MockTransaction* m_trans;
@@ -196,7 +195,7 @@ protected:
using namespace testing;
// set bayesian import matching in preferences
ON_CALL(*m_prefs, getBool(StrEq(GNC_PREFS_GROUP_IMPORT), StrEq(GNC_PREF_USE_BAYES)))
ON_CALL(m_prefs, getBool(StrEq(GNC_PREFS_GROUP_IMPORT), StrEq(GNC_PREF_USE_BAYES)))
.WillByDefault(Return(true));
}

View File

@@ -2,46 +2,52 @@
#include "gmock-gnc-prefs.h"
PrefsBackend* prefsbackend = NULL;
static MockPrefsBackend* prefsbackend = nullptr;
void
gmock_gnc_prefs_set_backend(MockPrefsBackend *backend)
{
prefsbackend = backend;
}
gboolean
gnc_prefs_get_bool (const gchar *group, const gchar *pref_name)
{
return ((MockPrefsBackend*)prefsbackend)->getBool(group, pref_name);
return prefsbackend->getBool(group, pref_name);
}
gint
gnc_prefs_get_int (const gchar *group, const gchar *pref_name)
{
return ((MockPrefsBackend*)prefsbackend)->getInt(group, pref_name);
return prefsbackend->getInt(group, pref_name);
}
gint64
gnc_prefs_get_int64 (const gchar *group, const gchar *pref_name)
{
return ((MockPrefsBackend*)prefsbackend)->getInt64(group, pref_name);
return prefsbackend->getInt64(group, pref_name);
}
gdouble
gnc_prefs_get_float (const gchar *group, const gchar *pref_name)
{
return ((MockPrefsBackend*)prefsbackend)->getFloat(group, pref_name);
return prefsbackend->getFloat(group, pref_name);
}
gchar *
gnc_prefs_get_string (const gchar *group, const gchar *pref_name)
{
return ((MockPrefsBackend*)prefsbackend)->getString(group, pref_name);
return prefsbackend->getString(group, pref_name);
}
gint
gnc_prefs_get_enum (const gchar *group, const gchar *pref_name)
{
return ((MockPrefsBackend*)prefsbackend)->getEnum(group, pref_name);
return 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);
prefsbackend->getCoords(group, pref_name, x, y);
}

View File

@@ -6,31 +6,13 @@
extern "C"
{
#include <gnc-prefs.h>
#include <gnc-prefs-p.h>
}
// mock up for PrefsBackend (singleton class)
class MockPrefsBackend : PrefsBackend
// mock up class implementing preferences backend (see struct PrefBackend in gnc-prefs-p.h)
class MockPrefsBackend
{
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 *));
@@ -38,10 +20,12 @@ public:
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() {}
};
/** Define a preferences backend.
*
* \attention Each call to this function overwrites a previously set backend.
*/
void gmock_gnc_prefs_set_backend(MockPrefsBackend *backend);
#endif