From 4502afad4fbffcb394967cc7f47de87381dd58a9 Mon Sep 17 00:00:00 2001 From: andygoblins Date: Sun, 9 Feb 2020 14:37:06 -0600 Subject: [PATCH] fix __eq__ in Split and Transaction Compare guids with .Equal() when comparing Split and Transaction instances. --- bindings/python/gnucash_core.py | 6 ++++++ bindings/python/tests/test_split.py | 5 +++++ bindings/python/tests/test_transaction.py | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/bindings/python/gnucash_core.py b/bindings/python/gnucash_core.py index c7a7901e41..8cab524177 100644 --- a/bindings/python/gnucash_core.py +++ b/bindings/python/gnucash_core.py @@ -434,6 +434,9 @@ class Transaction(GnuCashCoreClass): return self.do_lookup_create_oo_instance( gncInvoiceGetInvoiceFromTxn, Transaction ) + def __eq__(self, other): + return self.Equal(other, True, False, False, False) + def decorate_monetary_list_returning_function(orig_function): def new_function(self, *args): """decorate function that returns list of gnc_monetary to return tuples of GncCommodity and GncNumeric @@ -461,6 +464,9 @@ class Split(GnuCashCoreClass): """ _new_instance = 'xaccMallocSplit' + def __eq__(self, other): + return self.Equal(other, True, False, False) + class Account(GnuCashCoreClass): """A GnuCash Account. diff --git a/bindings/python/tests/test_split.py b/bindings/python/tests/test_split.py index f3da096a27..bbe37cc467 100644 --- a/bindings/python/tests/test_split.py +++ b/bindings/python/tests/test_split.py @@ -57,6 +57,11 @@ class TestSplit( SplitSession ): def test_equal(self): COPY = self.split self.assertTrue( self.split.Equal(COPY, True, False, False) ) + # test __eq__ implementation + TRANS = Transaction(self.book) + self.split.SetParent(TRANS) + self.assertTrue( self.split == TRANS.GetSplitList()[0] ) + self.assertTrue( self.split != Split(self.book) ) if __name__ == '__main__': main() diff --git a/bindings/python/tests/test_transaction.py b/bindings/python/tests/test_transaction.py index 86776db64c..373aa65d9d 100644 --- a/bindings/python/tests/test_transaction.py +++ b/bindings/python/tests/test_transaction.py @@ -44,6 +44,11 @@ class TestTransaction( TransactionSession ): def test_equal(self): TRANS = self.trans self.assertTrue( TRANS.Equal(self.trans, True, False, False, False) ) + # test __eq__ implementation + SPLIT = Split(self.book) + SPLIT.SetParent(TRANS) + self.assertTrue( self.trans == SPLIT.GetParent() ) + self.assertTrue( self.trans != Transaction(self.book) ) def test_clone(self): domain = "gnc.engine"