1 #include <config.h>
2 
3 #include <Account.h>
4 
5 #include "gmock-Transaction.h"
6 
7 
8 struct _MockTransactionClass
9 {
10     QofInstanceClass parent_class;
11 };
12 typedef struct _MockTransactionClass MockTransactionClass;
13 
14 G_DEFINE_TYPE(MockTransaction, gnc_mocktransaction, QOF_TYPE_INSTANCE);
15 
16 static void
gnc_mocktransaction_init(MockTransaction * inst)17 gnc_mocktransaction_init (MockTransaction *inst)
18 {
19     // function is unused, initialization is done in the MockTransaction's C++ constructor
20 }
21 
22 static void
gnc_mocktransaction_class_init(MockTransactionClass * klass)23 gnc_mocktransaction_class_init(MockTransactionClass *klass)
24 {
25     // function is unused, class functions are defined in C++ code
26 }
27 
28 
gnc_transaction_get_type(void)29 GType gnc_transaction_get_type(void)
30 {
31     return gnc_mocktransaction_get_type();
32 }
33 
34 void
xaccTransBeginEdit(Transaction * trans)35 xaccTransBeginEdit (Transaction *trans)
36 {
37     ASSERT_TRUE(GNC_IS_MOCKTRANSACTION(trans));
38     gnc_mocktransaction(trans)->begin_edit();
39 }
40 
41 void
xaccTransCommitEdit(Transaction * trans)42 xaccTransCommitEdit (Transaction *trans)
43 {
44     ASSERT_TRUE(GNC_IS_MOCKTRANSACTION(trans));
45     gnc_mocktransaction(trans)->commit_edit();
46 }
47 
48 Split *
xaccTransGetSplit(const Transaction * trans,int i)49 xaccTransGetSplit (const Transaction *trans, int i)
50 {
51     SCOPED_TRACE("");
52     auto mocktrans = gnc_mocktransaction(trans);
53     return mocktrans ? mocktrans->get_split(i) : nullptr;
54 }
55 
56 SplitList *
xaccTransGetSplitList(const Transaction * trans)57 xaccTransGetSplitList (const Transaction *trans)
58 {
59     g_return_val_if_fail(GNC_IS_MOCKTRANSACTION(trans), NULL);
60     return trans ? ((MockTransaction*)trans)->get_split_list() : NULL;
61 }
62 
63 Split *
xaccTransFindSplitByAccount(const Transaction * trans,const Account * acc)64 xaccTransFindSplitByAccount(const Transaction *trans, const Account *acc)
65 {
66     SCOPED_TRACE("");
67     auto mocktrans = gnc_mocktransaction(trans);
68     EXPECT_TRUE(GNC_IS_ACCOUNT(acc));
69     return mocktrans ? mocktrans->find_split_by_account(acc) : nullptr;
70 }
71 
72 time64
xaccTransGetDate(const Transaction * trans)73 xaccTransGetDate (const Transaction *trans)
74 {
75     SCOPED_TRACE("");
76     auto mocktrans = gnc_mocktransaction(trans);
77     return mocktrans ? mocktrans->get_date() : 0;
78 }
79 
80 void
xaccTransSetDatePostedSecsNormalized(Transaction * trans,time64 time)81 xaccTransSetDatePostedSecsNormalized (Transaction *trans, time64 time)
82 {
83     ASSERT_TRUE(GNC_IS_MOCKTRANSACTION(trans));
84     gnc_mocktransaction(trans)->set_date_posted_secs_normalized(time);
85 }
86 
87 const char *
xaccTransGetDescription(const Transaction * trans)88 xaccTransGetDescription (const Transaction *trans)
89 {
90     SCOPED_TRACE("");
91     auto mocktrans = gnc_mocktransaction(trans);
92     return mocktrans ? mocktrans->get_description() : "";
93 }
94 
95 void
xaccTransSetDescription(Transaction * trans,const char * desc)96 xaccTransSetDescription (Transaction *trans, const char *desc)
97 {
98     ASSERT_TRUE(GNC_IS_MOCKTRANSACTION(trans));
99     gnc_mocktransaction(trans)->set_description(desc);
100 }
101 
102 const char *
xaccTransGetNotes(const Transaction * trans)103 xaccTransGetNotes (const Transaction *trans)
104 {
105     SCOPED_TRACE("");
106     auto mocktrans = gnc_mocktransaction(trans);
107     return mocktrans ? mocktrans->get_notes() : "";
108 }
109 
110 void
xaccTransSetNotes(Transaction * trans,const char * notes)111 xaccTransSetNotes (Transaction *trans, const char *notes)
112 {
113     ASSERT_TRUE(GNC_IS_MOCKTRANSACTION(trans));
114     gnc_mocktransaction(trans)->set_notes(notes);
115 }
116 
117 gnc_numeric
xaccTransGetImbalanceValue(const Transaction * trans)118 xaccTransGetImbalanceValue (const Transaction * trans)
119 {
120     SCOPED_TRACE("");
121     auto mocktrans = gnc_mocktransaction(trans);
122     return mocktrans ? mocktrans->get_imbalance_value() : gnc_numeric_zero();
123 }
124 
125 const char *
xaccTransGetNum(const Transaction * trans)126 xaccTransGetNum (const Transaction *trans)
127 {
128     SCOPED_TRACE("");
129     auto mocktrans = gnc_mocktransaction(trans);
130     return mocktrans ? mocktrans->get_num() : "";
131 }
132 
133 gboolean
xaccTransIsOpen(const Transaction * trans)134 xaccTransIsOpen (const Transaction *trans)
135 {
136     SCOPED_TRACE("");
137     auto mocktrans = gnc_mocktransaction(trans);
138     return mocktrans ? mocktrans->is_open() : FALSE;
139 }
140 
141 void
xaccTransDestroy(Transaction * trans)142 xaccTransDestroy (Transaction *trans)
143 {
144     ASSERT_TRUE(GNC_IS_MOCKTRANSACTION(trans));
145     gnc_mocktransaction(trans)->destroy();
146 }
147 
148 void
xaccTransRecordPrice(Transaction * trans,PriceSource source)149 xaccTransRecordPrice (Transaction *trans, PriceSource source)
150 {
151     g_return_if_fail(GNC_IS_MOCKTRANSACTION(trans));
152     ((MockTransaction*)trans)->recordPrice();
153 }
154