GnuCash  5.6-150-g038405b370+
gmock-qofbook.h
1 #ifndef GMOCK_QOFBOOK_H
2 #define GMOCK_QOFBOOK_H
3 
4 #pragma GCC diagnostic push
5 #pragma GCC diagnostic ignored "-Wcpp"
6 #include <gmock/gmock.h>
7 #pragma GCC diagnostic pop
8 
9 
10 #include <qofbook.h>
11 #include <qofbook-p.h>
12 #include <Split.h>
13 
14 #include "gmock-gobject.h"
15 
16 
17 GType qof_mockbook_get_type(void);
18 
19 #define QOF_TYPE_MOCKBOOK (qof_mockbook_get_type ())
20 #define QOF_IS_MOCKBOOK(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), QOF_TYPE_MOCKBOOK))
21 
22 
23 // mock up for QofBook
24 class QofMockBook : public QofBook
25 {
26 public:
27  QofMockBook()
28  {
29  hash_of_collections = nullptr;
30  data_tables = nullptr;
31  data_table_finalizers = nullptr;
32 
33  book_open = 'n';
34  read_only = TRUE;
35  session_dirty = FALSE;
36 
37  version = 0;
38 
39  cached_num_field_source_isvalid = FALSE;
40  cached_num_days_autoreadonly_isvalid = FALSE;
41  }
42  void* operator new(size_t size)
43  {
44  return mock_g_object_new (QOF_TYPE_MOCKBOOK, NULL, size);
45  }
46 
47  // define separate free() function since destructor is protected
48  void free()
49  {
50  delete this;
51  }
52  void operator delete(void* book, size_t size)
53  {
54  mock_g_object_unref(book, size);
55  }
56 
57  MOCK_METHOD0(malloc_split, Split *());
58  MOCK_CONST_METHOD0(use_split_action_for_num_field, gboolean());
59 
60 protected:
61  // Protect destructor to avoid MockQofBook objects to be created on stack. MockQofBook
62  // objects can only be dynamically created, since they are derived from GObject.
63  ~QofMockBook() {}
64 };
65 
66 
67 // type conversion functions
68 static inline QofMockBook*
69 qof_mockbook (QofBook *book)
70 {
71  if (QOF_IS_MOCKBOOK(book))
72  return static_cast<QofMockBook*>(book);
73  ADD_FAILURE() << "Expected 'book' to be of type 'QofMockBook'";
74  return nullptr;
75 }
76 
77 static inline const QofMockBook*
78 qof_mockbook (const QofBook *book)
79 {
80  if (QOF_IS_MOCKBOOK(book))
81  return static_cast<const QofMockBook*>(book);
82  ADD_FAILURE() << "Expected 'book' to be of type 'QofMockBook'";
83  return nullptr;
84 }
85 
86 
87 #endif
API for Transactions and Splits (journal entries)
Encapsulate all the information about a dataset.