test-cash-flow.scm (gnucash-5.0.tar.bz2) | : | test-cash-flow.scm (gnucash-5.1.tar.bz2) | ||
---|---|---|---|---|
skipping to change at line 16 | skipping to change at line 16 | |||
(use-modules (gnucash report)) | (use-modules (gnucash report)) | |||
(use-modules (ice-9 format)) | (use-modules (ice-9 format)) | |||
(define (run-test) | (define (run-test) | |||
(and (test test-one-tx-in-cash-flow) | (and (test test-one-tx-in-cash-flow) | |||
(test test-one-tx-skip-cash-flow) | (test test-one-tx-skip-cash-flow) | |||
(test test-both-way-cash-flow))) | (test test-both-way-cash-flow))) | |||
(define structure | (define structure | |||
(list "Root" (list (cons 'type ACCT-TYPE-ASSET)) | (list "Root" (list (cons 'type ACCT-TYPE-ASSET)) | |||
(list "Asset" | (list "Asset" | |||
(list "Bank") | (list "Bank") | |||
(list "Wallet")) | (list "Wallet")) | |||
(list "Expenses" (list (cons 'type ACCT-TYPE-EXPENSE))))) | (list "Expenses" (list (cons 'type ACCT-TYPE-EXPENSE))))) | |||
(define (NDayDelta t64 n) | (define (NDayDelta t64 n) | |||
(let* ((day-secs (* 60 60 24 n)) ; n days in seconds is n times 60 sec/min * 6 0 min/h * 24 h/day | (let* ((day-secs (* 60 60 24 n)) ; n days in seconds is n times 60 sec/min * 6 0 min/h * 24 h/day | |||
(new-secs (- t64 day-secs))) | (new-secs (- t64 day-secs))) | |||
new-secs)) | new-secs)) | |||
(define (to-report-currency curr amt date) amt) | (define (to-report-currency curr amt date) amt) | |||
(define (exchange-fn mon comm) mon) | (define (exchange-fn mon comm) mon) | |||
(define (test-one-tx-in-cash-flow) | (define (test-one-tx-in-cash-flow) | |||
(let* ((env (create-test-env)) | (let* ((env (create-test-env)) | |||
(account-alist (env-create-account-structure-alist env structure)) | (account-alist (env-create-account-structure-alist env structure)) | |||
(bank-account (cdr (assoc "Bank" account-alist))) | (bank-account (cdr (assoc "Bank" account-alist))) | |||
(wallet-account (cdr (assoc "Wallet" account-alist))) | (wallet-account (cdr (assoc "Wallet" account-alist))) | |||
(expense-account (cdr (assoc "Expenses" account-alist))) | (expense-account (cdr (assoc "Expenses" account-alist))) | |||
(today (gnc-localtime (current-time))) | (today (gnc-localtime (current-time))) | |||
(to-date-t64 (gnc-dmy2time64-end (tm:mday today) (+ 1 (tm:mon today)) ( + 1900 (tm:year today)))) | (to-date-t64 (gnc-dmy2time64-end (tm:mday today) (+ 1 (tm:mon today)) ( + 1900 (tm:year today)))) | |||
(from-date-t64 (NDayDelta to-date-t64 1)) | (from-date-t64 (NDayDelta to-date-t64 1)) | |||
(report-currency (gnc-default-report-currency)) | (report-currency (gnc-default-report-currency)) | |||
) | ) | |||
(env-create-transaction env to-date-t64 bank-account expense-account 100/1) | (env-create-transaction env to-date-t64 bank-account expense-account 100/1) | |||
(let ((result (cash-flow-calc-money-in-out (list (cons 'accounts (list bank- account)) | (let ((result (cash-flow-calc-money-in-out (list (cons 'accounts (list bank- account)) | |||
(cons 'to-date-t64 to-date-t | (cons 'to-date-t64 to-date- | |||
64) | t64) | |||
(cons 'from-date-t64 from-da | (cons 'from-date-t64 from-d | |||
te-t64) | ate-t64) | |||
(cons 'report-currency repor | (cons 'report-currency repo | |||
t-currency) | rt-currency) | |||
(cons 'include-trading-accou | (cons 'include-trading-acco | |||
nts #f) | unts #f) | |||
(cons 'to-report-currency to | (cons 'to-report-currency t | |||
-report-currency))))) | o-report-currency))))) | |||
(let* ((money-in-collector (cdr (assq 'money-in-collector result))) | (let* ((money-in-collector (cdr (assq 'money-in-collector result))) | |||
(money-out-collector (cdr (assq 'money-out-collector result))) | (money-out-collector (cdr (assq 'money-out-collector result))) | |||
(money-in-alist (cdr (assq 'money-in-alist result))) | (money-in-alist (cdr (assq 'money-in-alist result))) | |||
(money-out-alist (cdr (assq 'money-out-alist result))) | (money-out-alist (cdr (assq 'money-out-alist result))) | |||
(expense-acc-in-collector (cadr (assoc expense-account money-in-alis | (expense-acc-in-collector (cadr (assoc expense-account money-in-ali | |||
t)))) | st)))) | |||
(and (or (null? money-out-alist) | (and (or (null? money-out-alist) | |||
(begin (format #t "The money-out-alist is not null.~%") #f)) | (begin (format #t "The money-out-alist is not null.~%") #f)) | |||
(or (equal? 10000/100 | (or (equal? 10000/100 | |||
(gnc:gnc-monetary-amount (gnc:sum-collector-commodity expens | (gnc:gnc-monetary-amount (gnc:sum-collector-commodity expen | |||
e-acc-in-collector | se-acc-in-collector | |||
report | repor | |||
-currency exchange-fn))) | t-currency exchange-fn))) | |||
(begin (format #t "Failed expense-acc-in-collector ~a expected 100.00~%" (gnc:gnc-monetary-amount (gnc:sum-collector-commodity expense-acc-in-c ollector | (begin (format #t "Failed expense-acc-in-collector ~a expected 100.00~%" (gnc:gnc-monetary-amount (gnc:sum-collector-commodity expense-acc-in-c ollector | |||
report | repor | |||
-currency exchange-fn))) #f)) | t-currency exchange-fn))) #f)) | |||
(or (equal? 10000/100 | (or (equal? 10000/100 | |||
(gnc:gnc-monetary-amount (gnc:sum-collector-commodity money- | (gnc:gnc-monetary-amount (gnc:sum-collector-commodity money | |||
in-collector | -in-collector | |||
report | repor | |||
-currency exchange-fn))) | t-currency exchange-fn))) | |||
(begin (format #t "Failed money-in-collector ~a expected 100.00 ~%" (gnc:gnc-monetary-amount (gnc:sum-collector-commodity money-in-collector | (begin (format #t "Failed money-in-collector ~a expected 100.00 ~%" (gnc:gnc-monetary-amount (gnc:sum-collector-commodity money-in-collector | |||
report | repor | |||
-currency exchange-fn))) #f)) | t-currency exchange-fn))) #f)) | |||
(or (equal? 0/1 | (or (equal? 0/1 | |||
(gnc:gnc-monetary-amount (gnc:sum-collector-commodity money- | (gnc:gnc-monetary-amount (gnc:sum-collector-commodity money | |||
out-collector | -out-collector | |||
report | repor | |||
-currency exchange-fn))) | t-currency exchange-fn))) | |||
(begin (format #t "Failed sum-collector-commodity ~a expected 1 00.00~%" (gnc:gnc-monetary-amount (gnc:sum-collector-commodity money-out-collect or | (begin (format #t "Failed sum-collector-commodity ~a expected 1 00.00~%" (gnc:gnc-monetary-amount (gnc:sum-collector-commodity money-out-collect or | |||
report-currency e xchange-fn))) #f)) | report-currency e xchange-fn))) #f)) | |||
(begin (format #t "test-one-tx-in-cash-flow success~%") #t) | (begin (format #t "test-one-tx-in-cash-flow success~%") #t) | |||
))))) | ))))) | |||
(define (test-one-tx-skip-cash-flow) | (define (test-one-tx-skip-cash-flow) | |||
(let* ((env (create-test-env)) | (let* ((env (create-test-env)) | |||
(account-alist (env-create-account-structure-alist env structure)) | (account-alist (env-create-account-structure-alist env structure)) | |||
(bank-account (cdr (assoc "Bank" account-alist))) | (bank-account (cdr (assoc "Bank" account-alist))) | |||
(wallet-account (cdr (assoc "Wallet" account-alist))) | (wallet-account (cdr (assoc "Wallet" account-alist))) | |||
(expense-account (cdr (assoc "Expenses" account-alist))) | (expense-account (cdr (assoc "Expenses" account-alist))) | |||
(today (gnc-localtime (current-time))) | (today (gnc-localtime (current-time))) | |||
(to-date-t64 (gnc-dmy2time64-end (tm:mday today) (+ 1 (tm:mon today)) ( + 1900 (tm:year today)))) | (to-date-t64 (gnc-dmy2time64-end (tm:mday today) (+ 1 (tm:mon today)) ( + 1900 (tm:year today)))) | |||
(from-date-t64 (NDayDelta to-date-t64 1)) | (from-date-t64 (NDayDelta to-date-t64 1)) | |||
(report-currency (gnc-default-report-currency)) | (report-currency (gnc-default-report-currency)) | |||
) | ) | |||
(env-create-transaction env to-date-t64 bank-account wallet-account 100/1) | (env-create-transaction env to-date-t64 bank-account wallet-account 100/1) | |||
(let ((result (cash-flow-calc-money-in-out (list (cons 'accounts (list walle t-account bank-account)) | (let ((result (cash-flow-calc-money-in-out (list (cons 'accounts (list walle t-account bank-account)) | |||
(cons 'to-date-t64 to-date-t | (cons 'to-date-t64 to-date- | |||
64) | t64) | |||
(cons 'from-date-t64 from-da | (cons 'from-date-t64 from-d | |||
te-t64) | ate-t64) | |||
(cons 'report-currency repor | (cons 'report-currency repo | |||
t-currency) | rt-currency) | |||
(cons 'include-trading-accou | (cons 'include-trading-acco | |||
nts #f) | unts #f) | |||
(cons 'to-report-currency to | (cons 'to-report-currency t | |||
-report-currency))))) | o-report-currency))))) | |||
(let* ((money-in-collector (cdr (assq 'money-in-collector result))) | (let* ((money-in-collector (cdr (assq 'money-in-collector result))) | |||
(money-out-collector (cdr (assq 'money-out-collector result))) | (money-out-collector (cdr (assq 'money-out-collector result))) | |||
(money-in-alist (cdr (assq 'money-in-alist result))) | (money-in-alist (cdr (assq 'money-in-alist result))) | |||
(money-out-alist (cdr (assq 'money-out-alist result)))) | (money-out-alist (cdr (assq 'money-out-alist result)))) | |||
(and (null? money-in-alist) | (and (null? money-in-alist) | |||
(null? money-out-alist) | (null? money-out-alist) | |||
(equal? 0/1 | (equal? 0/1 | |||
(gnc:gnc-monetary-amount (gnc:sum-collector-commodity money- | (gnc:gnc-monetary-amount (gnc:sum-collector-commodity money | |||
in-collector | -in-collector | |||
report | repor | |||
-currency exchange-fn))) | t-currency exchange-fn))) | |||
(equal? 0/1 | (equal? 0/1 | |||
(gnc:gnc-monetary-amount (gnc:sum-collector-commodity money- | (gnc:gnc-monetary-amount (gnc:sum-collector-commodity money | |||
out-collector | -out-collector | |||
report | repor | |||
-currency exchange-fn))) | t-currency exchange-fn))) | |||
(begin (format #t "test-one-tx-skip-cash-flow success~%") #t) | (begin (format #t "test-one-tx-skip-cash-flow success~%") #t) | |||
))))) | ))))) | |||
(define (test-both-way-cash-flow) | (define (test-both-way-cash-flow) | |||
(let* ((env (create-test-env)) | (let* ((env (create-test-env)) | |||
(account-alist (env-create-account-structure-alist env structure)) | (account-alist (env-create-account-structure-alist env structure)) | |||
(bank-account (cdr (assoc "Bank" account-alist))) | (bank-account (cdr (assoc "Bank" account-alist))) | |||
(wallet-account (cdr (assoc "Wallet" account-alist))) | (wallet-account (cdr (assoc "Wallet" account-alist))) | |||
(expense-account (cdr (assoc "Expenses" account-alist))) | (expense-account (cdr (assoc "Expenses" account-alist))) | |||
(today (gnc-localtime (current-time))) | (today (gnc-localtime (current-time))) | |||
(to-date-t64 (gnc-dmy2time64-end (tm:mday today) (+ 1 (tm:mon today)) ( + 1900 (tm:year today)))) | (to-date-t64 (gnc-dmy2time64-end (tm:mday today) (+ 1 (tm:mon today)) ( + 1900 (tm:year today)))) | |||
(from-date-t64 (NDayDelta to-date-t64 1)) | (from-date-t64 (NDayDelta to-date-t64 1)) | |||
(report-currency (gnc-default-report-currency)) | (report-currency (gnc-default-report-currency)) | |||
) | ) | |||
(env-create-transaction env to-date-t64 bank-account expense-account 100/1) | (env-create-transaction env to-date-t64 bank-account expense-account 100/1) | |||
(env-create-transaction env to-date-t64 expense-account bank-account 50/1) | (env-create-transaction env to-date-t64 expense-account bank-account 50/1) | |||
(let ((result (cash-flow-calc-money-in-out (list (cons 'accounts (list walle t-account bank-account)) | (let ((result (cash-flow-calc-money-in-out (list (cons 'accounts (list walle t-account bank-account)) | |||
(cons 'to-date-t64 to-date-t | (cons 'to-date-t64 to-date- | |||
64) | t64) | |||
(cons 'from-date-t64 from-da | (cons 'from-date-t64 from-d | |||
te-t64) | ate-t64) | |||
(cons 'report-currency repor | (cons 'report-currency repo | |||
t-currency) | rt-currency) | |||
(cons 'include-trading-accou | (cons 'include-trading-acco | |||
nts #f) | unts #f) | |||
(cons 'to-report-currency to | (cons 'to-report-currency t | |||
-report-currency))))) | o-report-currency))))) | |||
(let* ((money-in-collector (cdr (assq 'money-in-collector result))) | (let* ((money-in-collector (cdr (assq 'money-in-collector result))) | |||
(money-out-collector (cdr (assq 'money-out-collector result))) | (money-out-collector (cdr (assq 'money-out-collector result))) | |||
(money-in-alist (cdr (assq 'money-in-alist result))) | (money-in-alist (cdr (assq 'money-in-alist result))) | |||
(money-out-alist (cdr (assq 'money-out-alist result))) | (money-out-alist (cdr (assq 'money-out-alist result))) | |||
(expense-acc-in-collector (cadr (assoc expense-account money-in-alis | (expense-acc-in-collector (cadr (assoc expense-account money-in-ali | |||
t))) | st))) | |||
(expense-acc-out-collector (cadr (assoc expense-account money-out-al | (expense-acc-out-collector (cadr (assoc expense-account money-out-a | |||
ist))) | list))) | |||
(expenses-in-total (gnc:gnc-monetary-amount (gnc:sum-collector-commo | (expenses-in-total (gnc:gnc-monetary-amount (gnc:sum-collector-comm | |||
dity expense-acc-in-collector | odity expense-acc-in-collector | |||
report-currency | report-currency | |||
exchange-fn))) | exchange-fn))) | |||
(expenses-out-total (gnc:gnc-monetary-amount (gnc:sum-collector-comm | (expenses-out-total (gnc:gnc-monetary-amount (gnc:sum-collector-com | |||
odity expense-acc-out-collector | modity expense-acc-out-collector | |||
report-currency | report-currency | |||
exchange-fn)))) | exchange-fn)))) | |||
(and (equal? 10000/100 expenses-in-total) | (and (equal? 10000/100 expenses-in-total) | |||
(equal? 5000/100 expenses-out-total) | (equal? 5000/100 expenses-out-total) | |||
(equal? 10000/100 | (equal? 10000/100 | |||
(gnc:gnc-monetary-amount (gnc:sum-collector-commodity money- | (gnc:gnc-monetary-amount (gnc:sum-collector-commodity money | |||
in-collector | -in-collector | |||
report | repor | |||
-currency exchange-fn))) | t-currency exchange-fn))) | |||
(equal? 5000/100 | (equal? 5000/100 | |||
(gnc:gnc-monetary-amount (gnc:sum-collector-commodity money- | (gnc:gnc-monetary-amount (gnc:sum-collector-commodity money | |||
out-collector | -out-collector | |||
report | repor | |||
-currency exchange-fn))) | t-currency exchange-fn))) | |||
(begin (format #t "test-both-way-cash-flow success~%") #t) | (begin (format #t "test-both-way-cash-flow success~%") #t) | |||
))))) | ))))) | |||
End of changes. 17 change blocks. | ||||
127 lines changed or deleted | 127 lines changed or added |