mirror of https://github.com/Gnucash/gnucash
Author: Peter Broadbery <p.broadbery@gmail.com> git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@23026 57a11ea4-9604-0410-9ed3-97b8803252fdpull/2/head
parent
72c7001693
commit
4d8d8bd76e
@ -0,0 +1,243 @@
|
||||
(define-module (gnucash report standard-reports test test-generic-category-report))
|
||||
|
||||
(use-modules (ice-9 format))
|
||||
(use-modules (ice-9 streams))
|
||||
(use-modules (srfi srfi-1))
|
||||
|
||||
(use-modules (gnucash gnc-module))
|
||||
(gnc:module-load "gnucash/report/report-system" 0)
|
||||
|
||||
(use-modules (gnucash main)) ;; FIXME: delete after we finish modularizing.
|
||||
(use-modules (gnucash printf))
|
||||
(use-modules (gnucash report report-system))
|
||||
(use-modules (gnucash app-utils))
|
||||
(use-modules (gnucash engine))
|
||||
(use-modules (sw_engine))
|
||||
|
||||
(use-modules (gnucash report report-system streamers))
|
||||
(use-modules (gnucash report report-system test test-extras))
|
||||
|
||||
(export run-category-income-expense-test)
|
||||
(export run-category-asset-liability-test)
|
||||
|
||||
(define (set-option report page tag value)
|
||||
((gnc:option-setter (gnc:lookup-option (gnc:report-options report)
|
||||
page tag)) value))
|
||||
|
||||
|
||||
(define constructor (record-constructor <report>))
|
||||
|
||||
;(set-option income-report gnc:pagename-general "Start Date" (cons 'relative 'start-prev-year))
|
||||
;(set-option income-report gnc:pagename-general "End Date" (cons 'relative 'end-this-month))
|
||||
;(set-option income-report gnc:pagename-general "Show table" #t)
|
||||
;(set-option income-report gnc:pagename-general "Price Source" 'pricedb-nearest)
|
||||
;(set-option income-report gnc:pagename-general "Report's currency" (gnc-default-report-currency))
|
||||
|
||||
(define (run-category-income-expense-test income-report-uuid expense-report-uuid)
|
||||
(and (null-test income-report-uuid)
|
||||
(null-test expense-report-uuid)
|
||||
(single-txn-test income-report-uuid)
|
||||
(multi-acct-test expense-report-uuid)
|
||||
#t))
|
||||
|
||||
(define (run-category-asset-liability-test asset-report-uuid liability-report-uuid)
|
||||
(and (null-test asset-report-uuid)
|
||||
(null-test liability-report-uuid)
|
||||
(asset-test asset-report-uuid)
|
||||
#t))
|
||||
|
||||
(define (null-test uuid)
|
||||
(let* ((template (gnc:find-report-template uuid))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(report (constructor uuid "bar" options
|
||||
#t #t #f #f))
|
||||
(renderer (gnc:report-template-renderer template)))
|
||||
|
||||
(let ((doc (renderer report)))
|
||||
(gnc:html-document-set-style-sheet! doc
|
||||
(gnc:report-stylesheet report))
|
||||
(format #t "render: ~a\n" (gnc:html-document-render doc #f))
|
||||
)))
|
||||
|
||||
|
||||
(define (single-txn-test uuid)
|
||||
(let* ((income-template (gnc:find-report-template uuid))
|
||||
(income-options (gnc:make-report-options uuid))
|
||||
(income-report (constructor uuid "bar" income-options
|
||||
#t #t #f #f))
|
||||
(income-renderer (gnc:report-template-renderer income-template)))
|
||||
(let* ((env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
(my-expense-account (env-create-root-account env ACCT-TYPE-EXPENSE
|
||||
(gnc-default-report-currency)))
|
||||
(my-income-account (env-create-root-account env ACCT-TYPE-INCOME
|
||||
(gnc-default-report-currency))))
|
||||
(env-create-daily-transactions env
|
||||
(gnc:get-start-this-month)
|
||||
(gnc:get-end-this-month)
|
||||
my-asset-account my-income-account)
|
||||
(begin
|
||||
(set-option income-report gnc:pagename-display "Show table" #t)
|
||||
(set-option income-report gnc:pagename-general "Start Date" (cons 'relative 'start-this-month))
|
||||
(set-option income-report gnc:pagename-general "End Date" (cons 'relative 'end-this-month))
|
||||
(set-option income-report gnc:pagename-general "Step Size" 'DayDelta)
|
||||
(set-option income-report gnc:pagename-general "Price Source" 'pricedb-nearest)
|
||||
(set-option income-report gnc:pagename-general "Report's currency" (gnc-default-report-currency))
|
||||
(set-option income-report gnc:pagename-accounts "Accounts" (list my-income-account))
|
||||
(set-option income-report gnc:pagename-accounts "Show Accounts until level" 'all)
|
||||
|
||||
(gnc:options-for-each (lambda (option)
|
||||
(format #t "Option: ~a.~a Value ~a\n"
|
||||
(gnc:option-section option)
|
||||
(gnc:option-name option)
|
||||
(gnc:option-value option)))
|
||||
income-options)
|
||||
|
||||
(let ((doc (income-renderer income-report)))
|
||||
(gnc:html-document-set-style-sheet! doc
|
||||
(gnc:report-stylesheet income-report))
|
||||
(let* ((result (gnc:html-document-render doc #f))
|
||||
(tbl (stream->list
|
||||
(pattern-streamer "<tr>"
|
||||
(list (list "<string> ([0-9][0-9])/([0-9][0-9])/([0-9][0-9])</td>" 1 2 3)
|
||||
(list "<number> ([^<]*)</td>" 1))
|
||||
result))))
|
||||
(every (lambda (date value-list)
|
||||
(let ((day (second date))
|
||||
(value (first value-list)))
|
||||
(format #t "[~a] [~a]\n"
|
||||
(string->number day) (string->number value))
|
||||
(= (string->number day) (string->number value))))
|
||||
(map first tbl)
|
||||
(map second tbl))))))))
|
||||
|
||||
(define (list-leaves list)
|
||||
(if (not (pair? list))
|
||||
(cons list '())
|
||||
(fold (lambda (next acc)
|
||||
(append (list-leaves next)
|
||||
acc))
|
||||
'()
|
||||
list)))
|
||||
|
||||
(define (multi-acct-test expense-report-uuid)
|
||||
(let* ((expense-template (gnc:find-report-template expense-report-uuid))
|
||||
(expense-options (gnc:make-report-options expense-report-uuid))
|
||||
(expense-report (constructor expense-report-uuid "bar" expense-options
|
||||
#t #t #f #f))
|
||||
(expense-renderer (gnc:report-template-renderer expense-template)))
|
||||
(let* ((env (create-test-env))
|
||||
(expense-accounts (env-expense-account-structure env))
|
||||
(asset-accounts (env-create-account-structure
|
||||
env
|
||||
(list "Assets"
|
||||
(list (cons 'type ACCT-TYPE-ASSET))
|
||||
(list "Bank"))))
|
||||
(leaf-expense-accounts (list-leaves expense-accounts))
|
||||
(bank-account (car (car (cdr asset-accounts)))))
|
||||
(format #t "Expense accounts ~a\n" leaf-expense-accounts)
|
||||
(for-each (lambda (expense-account)
|
||||
(env-create-daily-transactions env
|
||||
(gnc:get-start-this-month)
|
||||
(gnc:get-end-this-month)
|
||||
expense-account
|
||||
bank-account))
|
||||
leaf-expense-accounts)
|
||||
(begin
|
||||
(set-option expense-report gnc:pagename-display "Show table" #t)
|
||||
(set-option expense-report gnc:pagename-general "Start Date" (cons 'relative 'start-this-month))
|
||||
(set-option expense-report gnc:pagename-general "End Date" (cons 'relative 'end-this-month))
|
||||
(set-option expense-report gnc:pagename-general "Step Size" 'DayDelta)
|
||||
(set-option expense-report gnc:pagename-general "Price Source" 'pricedb-nearest)
|
||||
(set-option expense-report gnc:pagename-general "Report's currency" (gnc-default-report-currency))
|
||||
(set-option expense-report gnc:pagename-accounts "Accounts" leaf-expense-accounts)
|
||||
(set-option expense-report gnc:pagename-accounts "Show Accounts until level" 2)
|
||||
|
||||
(let ((doc (expense-renderer expense-report)))
|
||||
(gnc:html-document-set-style-sheet! doc
|
||||
(gnc:report-stylesheet expense-report))
|
||||
(let* ((html-document (gnc:html-document-render doc #f))
|
||||
(columns (columns-from-report-document html-document))
|
||||
(tbl (stream->list
|
||||
(pattern-streamer "<tr>"
|
||||
(list (list "<string> ([0-9][0-9])/([0-9][0-9])/([0-9][0-9])</td>" 1 2 3)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1))
|
||||
html-document))))
|
||||
;(format #t "~a" html-document)
|
||||
(and (= 6 (length columns))
|
||||
(equal? "Date" (first columns))
|
||||
(equal? "Auto" (second columns))
|
||||
;; maybe should try to check actual values
|
||||
)))))))
|
||||
|
||||
(define (columns-from-report-document doc)
|
||||
(let ((columns (stream->list (pattern-streamer "<th>"
|
||||
(list (list "<string> ([^<]*)</" 1))
|
||||
doc))))
|
||||
(format #t "Columns ~a\n" columns)
|
||||
(map caar columns)))
|
||||
|
||||
;;
|
||||
;;
|
||||
;;
|
||||
|
||||
(define (asset-test uuid)
|
||||
(let* ((asset-template (gnc:find-report-template uuid))
|
||||
(asset-options (gnc:make-report-options uuid))
|
||||
(asset-report (constructor uuid "bar" asset-options
|
||||
#t #t #f #f))
|
||||
(asset-renderer (gnc:report-template-renderer asset-template)))
|
||||
(let* ((env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
(my-expense-account (env-create-root-account env ACCT-TYPE-EXPENSE
|
||||
(gnc-default-report-currency)))
|
||||
(my-income-account (env-create-root-account env ACCT-TYPE-INCOME
|
||||
(gnc-default-report-currency))))
|
||||
(env-create-daily-transactions env
|
||||
(gnc:get-start-this-month)
|
||||
(gnc:get-end-this-month)
|
||||
my-asset-account my-income-account)
|
||||
(begin
|
||||
(set-option asset-report gnc:pagename-display "Show table" #t)
|
||||
(set-option asset-report gnc:pagename-general "Start Date" (cons 'relative 'start-this-month))
|
||||
(set-option asset-report gnc:pagename-general "End Date" (cons 'relative 'end-this-month))
|
||||
(set-option asset-report gnc:pagename-general "Step Size" 'DayDelta)
|
||||
(set-option asset-report gnc:pagename-general "Price Source" 'pricedb-nearest)
|
||||
(set-option asset-report gnc:pagename-general "Price Source" 'pricedb-nearest)
|
||||
(set-option asset-report gnc:pagename-general "Report's currency" (gnc-default-report-currency))
|
||||
(set-option asset-report gnc:pagename-accounts "Accounts" (list my-asset-account))
|
||||
(set-option asset-report gnc:pagename-accounts "Show Accounts until level" 'all)
|
||||
|
||||
(gnc:options-for-each (lambda (option)
|
||||
(format #t "Option: ~a.~a Value ~a\n"
|
||||
(gnc:option-section option)
|
||||
(gnc:option-name option)
|
||||
(gnc:option-value option)))
|
||||
asset-options)
|
||||
|
||||
|
||||
(let ((doc (asset-renderer asset-report)))
|
||||
(gnc:html-document-set-style-sheet! doc
|
||||
(gnc:report-stylesheet asset-report))
|
||||
(let* ((html-document (gnc:html-document-render doc #f))
|
||||
(columns (columns-from-report-document html-document))
|
||||
(tbl (stream->list
|
||||
(pattern-streamer "<tr>"
|
||||
(list (list "<string> ([0-9][0-9])/([0-9][0-9])/([0-9][0-9])</td>" 1 2 3)
|
||||
(list "<number> ([^<]*)</td>" 1))
|
||||
html-document)))
|
||||
(row-count (tbl-row-count tbl)))
|
||||
(format #t "Report: ~a\n" tbl)
|
||||
(logging-and (member "account-1" columns)
|
||||
(= 2 (length columns))
|
||||
(= 1 (string->number (car (tbl-ref tbl 0 1))))
|
||||
(= (/ (* row-count (+ row-count 1)) 2)
|
||||
(string->number (car (tbl-ref tbl (- row-count 1) 1))))
|
||||
#t)))))))
|
||||
|
||||
@ -0,0 +1,266 @@
|
||||
(define-module (gnucash report standard-reports test test-generic-net-barchart))
|
||||
|
||||
(use-modules (ice-9 format))
|
||||
(use-modules (ice-9 streams))
|
||||
(use-modules (srfi srfi-1))
|
||||
|
||||
(use-modules (gnucash gnc-module))
|
||||
(gnc:module-load "gnucash/report/report-system" 0)
|
||||
|
||||
(use-modules (gnucash report report-system test test-extras))
|
||||
|
||||
(export run-net-asset-income-test)
|
||||
|
||||
(define (set-option report page tag value)
|
||||
((gnc:option-setter (gnc:lookup-option (gnc:report-options report)
|
||||
page tag)) value))
|
||||
|
||||
|
||||
(define constructor (record-constructor <report>))
|
||||
|
||||
(define (run-net-asset-income-test asset-report-uuid income-report-uuid)
|
||||
(logging-and (two-txn-test asset-report-uuid)
|
||||
(two-txn-test-2 asset-report-uuid)
|
||||
(two-txn-test-income income-report-uuid)
|
||||
|
||||
(null-test asset-report-uuid)
|
||||
(null-test income-report-uuid)
|
||||
(single-txn-test asset-report-uuid)
|
||||
|
||||
#t))
|
||||
|
||||
;; Just prove that the report exists.
|
||||
(define (null-test uuid)
|
||||
(let* ((template (gnc:find-report-template uuid))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(report (constructor uuid "bar" options
|
||||
#t #t #f #f))
|
||||
(renderer (gnc:report-template-renderer template)))
|
||||
|
||||
(let ((doc (renderer report)))
|
||||
(gnc:html-document-set-style-sheet! doc
|
||||
(gnc:report-stylesheet report))
|
||||
(format #t "render: ~a\n" (gnc:html-document-render doc #f))
|
||||
)))
|
||||
|
||||
(define (single-txn-test uuid)
|
||||
(let* ((template (gnc:find-report-template uuid))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(report (constructor uuid "bar" options
|
||||
#t #t #f #f))
|
||||
(renderer (gnc:report-template-renderer template)))
|
||||
(let* ((env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
(my-expense-account (env-create-root-account env ACCT-TYPE-EXPENSE
|
||||
(gnc-default-report-currency)))
|
||||
(my-income-account (env-create-root-account env ACCT-TYPE-INCOME
|
||||
(gnc-default-report-currency))))
|
||||
(env-create-transaction env
|
||||
(gnc:get-start-this-month)
|
||||
my-income-account
|
||||
my-asset-account
|
||||
(gnc:make-gnc-numeric -1 1))
|
||||
(begin
|
||||
(set-option report gnc:pagename-display "Show table" #t)
|
||||
(set-option report gnc:pagename-general "Start Date"
|
||||
(cons 'absolute (gnc:get-start-this-month)))
|
||||
(set-option report gnc:pagename-general "End Date"
|
||||
(cons 'absolute (gnc:get-start-this-month)))
|
||||
(set-option report gnc:pagename-general "Step Size" 'DayDelta)
|
||||
(set-option report gnc:pagename-general "Price Source" 'pricedb-nearest)
|
||||
(set-option report gnc:pagename-general "Report's currency" (gnc-default-report-currency))
|
||||
(set-option report gnc:pagename-accounts "Accounts" (list my-asset-account))
|
||||
|
||||
(let ((doc (renderer report)))
|
||||
(gnc:html-document-set-style-sheet! doc
|
||||
(gnc:report-stylesheet report))
|
||||
(let* ((result (gnc:html-document-render doc #f))
|
||||
(tbl (stream->list
|
||||
(pattern-streamer "<tr>"
|
||||
(list (list "<string> ([0-9][0-9])/([0-9][0-9])/([0-9][0-9])</td>"
|
||||
1 2 3)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1))
|
||||
result))))
|
||||
(format #t "~a\n" tbl)
|
||||
(logging-and (= 1 (tbl-ref->number tbl 0 1))
|
||||
(= 0 (tbl-ref->number tbl 0 2))
|
||||
(= 1 (tbl-ref->number tbl 0 3))
|
||||
(= 1 (tbl-row-count tbl))
|
||||
(= 4 (tbl-column-count tbl)))))))))
|
||||
|
||||
|
||||
(define (two-txn-test uuid)
|
||||
(let* ((template (gnc:find-report-template uuid))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(report (constructor uuid "bar" options
|
||||
#t #t #f #f))
|
||||
(renderer (gnc:report-template-renderer template)))
|
||||
(let* ((env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
(my-expense-account (env-create-root-account env ACCT-TYPE-EXPENSE
|
||||
(gnc-default-report-currency)))
|
||||
(my-income-account (env-create-root-account env ACCT-TYPE-INCOME
|
||||
(gnc-default-report-currency)))
|
||||
(date-0 (gnc:get-start-this-month))
|
||||
(date-1 (gnc:timepair-next-day date-0))
|
||||
(date-2 (gnc:timepair-next-day date-1)))
|
||||
(env-create-transaction env
|
||||
date-1
|
||||
my-income-account
|
||||
my-asset-account
|
||||
(gnc:make-gnc-numeric -1 1))
|
||||
(env-create-transaction env
|
||||
date-2
|
||||
my-income-account
|
||||
my-asset-account
|
||||
(gnc:make-gnc-numeric -5 1))
|
||||
(begin
|
||||
(set-option report gnc:pagename-display "Show table" #t)
|
||||
(set-option report gnc:pagename-general "Start Date" (cons 'absolute date-0))
|
||||
(set-option report gnc:pagename-general "End Date" (cons 'absolute date-2))
|
||||
(set-option report gnc:pagename-general "Step Size" 'DayDelta)
|
||||
(set-option report gnc:pagename-general "Price Source" 'pricedb-nearest)
|
||||
(set-option report gnc:pagename-general "Report's currency" (gnc-default-report-currency))
|
||||
(set-option report gnc:pagename-accounts "Accounts" (list my-asset-account))
|
||||
|
||||
(let ((doc (renderer report)))
|
||||
(gnc:html-document-set-style-sheet! doc
|
||||
(gnc:report-stylesheet report))
|
||||
(let* ((result (gnc:html-document-render doc #f))
|
||||
(tbl (stream->list
|
||||
(pattern-streamer "<tr>"
|
||||
(list (list "<string> ([0-9][0-9])/([0-9][0-9])/([0-9][0-9])</td>"
|
||||
1 2 3)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1))
|
||||
result))))
|
||||
(format #t "~a\n~a\n" result tbl)
|
||||
(logging-and (every (lambda (row)
|
||||
(and (equal? (second row) (fourth row))
|
||||
(= 0 (string->number (car (third row))))))
|
||||
tbl)
|
||||
(= 0 (tbl-ref->number tbl 0 1))
|
||||
(= 1 (tbl-ref->number tbl 1 1))
|
||||
(= 6 (tbl-ref->number tbl 2 1))
|
||||
(= 3 (tbl-row-count tbl))
|
||||
(= 4 (tbl-column-count tbl)))))))))
|
||||
|
||||
|
||||
(define (two-txn-test-2 uuid)
|
||||
(let* ((template (gnc:find-report-template uuid))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(report (constructor uuid "bar" options
|
||||
#t #t #f #f))
|
||||
(renderer (gnc:report-template-renderer template)))
|
||||
(let* ((env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
(my-liability-account (env-create-root-account env ACCT-TYPE-LIABILITY
|
||||
(gnc-default-report-currency)))
|
||||
(my-expense-account (env-create-root-account env ACCT-TYPE-EXPENSE
|
||||
(gnc-default-report-currency)))
|
||||
(my-income-account (env-create-root-account env ACCT-TYPE-INCOME
|
||||
(gnc-default-report-currency)))
|
||||
(date-0 (gnc:get-start-this-month))
|
||||
(date-1 (gnc:timepair-next-day date-0))
|
||||
(date-2 (gnc:timepair-next-day date-1)))
|
||||
(env-create-transaction env date-1 my-income-account my-asset-account (gnc:make-gnc-numeric -1 1))
|
||||
(env-create-transaction env date-1 my-expense-account my-liability-account (gnc:make-gnc-numeric -1 1))
|
||||
(env-create-transaction env date-2 my-income-account my-asset-account (gnc:make-gnc-numeric -5 1))
|
||||
(env-create-transaction env date-2 my-expense-account my-liability-account (gnc:make-gnc-numeric -5 1))
|
||||
(begin
|
||||
(set-option report gnc:pagename-display "Show table" #t)
|
||||
(set-option report gnc:pagename-general "Start Date" (cons 'absolute date-0))
|
||||
(set-option report gnc:pagename-general "End Date" (cons 'absolute date-2))
|
||||
(set-option report gnc:pagename-general "Step Size" 'DayDelta)
|
||||
(set-option report gnc:pagename-general "Price Source" 'pricedb-nearest)
|
||||
(set-option report gnc:pagename-general "Report's currency" (gnc-default-report-currency))
|
||||
(set-option report gnc:pagename-accounts "Accounts" (list my-asset-account my-liability-account))
|
||||
|
||||
(let ((doc (renderer report)))
|
||||
(gnc:html-document-set-style-sheet! doc
|
||||
(gnc:report-stylesheet report))
|
||||
(let* ((result (gnc:html-document-render doc #f))
|
||||
(tbl (stream->list
|
||||
(pattern-streamer "<tr>"
|
||||
(list (list "<string> ([0-9][0-9])/([0-9][0-9])/([0-9][0-9])</td>"
|
||||
1 2 3)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1))
|
||||
result))))
|
||||
(format #t "~a\n" tbl)
|
||||
(logging-and (every (lambda (row)
|
||||
(and (= (string->number (car (fourth row)))
|
||||
(+ (string->number (car (second row)))
|
||||
(string->number (car (third row)))))
|
||||
;; txns added in pairs, so assets = liability
|
||||
(equal? (second row) (third row))))
|
||||
tbl)
|
||||
(= 0 (tbl-ref->number tbl 0 1))
|
||||
(= 1 (tbl-ref->number tbl 1 1))
|
||||
(= 6 (tbl-ref->number tbl 2 1))
|
||||
(= 3 (tbl-row-count tbl))
|
||||
(= 4 (tbl-column-count tbl)))))))))
|
||||
|
||||
(define (two-txn-test-income uuid)
|
||||
(let* ((template (gnc:find-report-template uuid))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(report (constructor uuid "bar" options
|
||||
#t #t #f #f))
|
||||
(renderer (gnc:report-template-renderer template)))
|
||||
(let* ((env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
(my-liability-account (env-create-root-account env ACCT-TYPE-LIABILITY
|
||||
(gnc-default-report-currency)))
|
||||
(my-expense-account (env-create-root-account env ACCT-TYPE-EXPENSE
|
||||
(gnc-default-report-currency)))
|
||||
(my-income-account (env-create-root-account env ACCT-TYPE-INCOME
|
||||
(gnc-default-report-currency)))
|
||||
(date-0 (gnc:get-start-this-month))
|
||||
(date-1 (gnc:timepair-next-day date-0))
|
||||
(date-2 (gnc:timepair-next-day date-1)))
|
||||
(env-create-transaction env date-1 my-income-account my-asset-account (gnc:make-gnc-numeric -1 1))
|
||||
(env-create-transaction env date-1 my-expense-account my-liability-account (gnc:make-gnc-numeric -1 1))
|
||||
(env-create-transaction env date-2 my-income-account my-asset-account (gnc:make-gnc-numeric -5 1))
|
||||
(env-create-transaction env date-2 my-expense-account my-liability-account (gnc:make-gnc-numeric -5 1))
|
||||
(begin
|
||||
(set-option report gnc:pagename-display "Show table" #t)
|
||||
(set-option report gnc:pagename-general "Start Date" (cons 'absolute date-0))
|
||||
(set-option report gnc:pagename-general "End Date" (cons 'absolute date-2))
|
||||
(set-option report gnc:pagename-general "Step Size" 'DayDelta)
|
||||
(set-option report gnc:pagename-general "Price Source" 'pricedb-nearest)
|
||||
(set-option report gnc:pagename-general "Report's currency" (gnc-default-report-currency))
|
||||
(set-option report gnc:pagename-accounts "Accounts" (list my-income-account my-expense-account))
|
||||
|
||||
(let ((doc (renderer report)))
|
||||
(gnc:html-document-set-style-sheet! doc
|
||||
(gnc:report-stylesheet report))
|
||||
(let* ((result (gnc:html-document-render doc #f))
|
||||
(tbl (stream->list
|
||||
(pattern-streamer "<tr>"
|
||||
(list (list "<string> ([0-9][0-9])/([0-9][0-9])/([0-9][0-9])</td>"
|
||||
1 2 3)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1))
|
||||
result))))
|
||||
(format #t "~a\n" tbl)
|
||||
(logging-and (every (lambda (row)
|
||||
(and (= (string->number (car (fourth row)))
|
||||
(+ (string->number (car (second row)))
|
||||
(string->number (car (third row)))))
|
||||
;; txns added in pairs, so assets = liability
|
||||
(equal? (second row) (third row))))
|
||||
tbl)
|
||||
(= 0 (tbl-ref->number tbl 0 1))
|
||||
(= 1 (tbl-ref->number tbl 1 1))
|
||||
(= 5 (tbl-ref->number tbl 2 1))
|
||||
(= 3 (tbl-row-count tbl))
|
||||
(= 4 (tbl-column-count tbl)))))))))
|
||||
@ -0,0 +1,208 @@
|
||||
(define-module (gnucash report standard-reports test test-generic-net-linechart))
|
||||
|
||||
(use-modules (ice-9 format))
|
||||
(use-modules (ice-9 streams))
|
||||
(use-modules (srfi srfi-1))
|
||||
|
||||
(use-modules (gnucash gnc-module))
|
||||
(gnc:module-load "gnucash/report/report-system" 0)
|
||||
|
||||
(use-modules (gnucash report report-system test test-extras))
|
||||
|
||||
(export run-net-asset-test)
|
||||
|
||||
(define (set-option report page tag value)
|
||||
((gnc:option-setter (gnc:lookup-option (gnc:report-options report)
|
||||
page tag)) value))
|
||||
|
||||
|
||||
(define constructor (record-constructor <report>))
|
||||
|
||||
(define (run-net-asset-test asset-report-uuid)
|
||||
(logging-and (two-txn-test asset-report-uuid)
|
||||
(two-txn-test-2 asset-report-uuid)
|
||||
|
||||
(null-test asset-report-uuid)
|
||||
(single-txn-test asset-report-uuid)
|
||||
|
||||
#t))
|
||||
|
||||
;; Just prove that the report exists.
|
||||
(define (null-test uuid)
|
||||
(let* ((template (gnc:find-report-template uuid))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(report (constructor uuid "bar" options
|
||||
#t #t #f #f))
|
||||
(renderer (gnc:report-template-renderer template)))
|
||||
|
||||
(let ((doc (renderer report)))
|
||||
(gnc:html-document-set-style-sheet! doc
|
||||
(gnc:report-stylesheet report))
|
||||
(format #t "render: ~a\n" (gnc:html-document-render doc #f))
|
||||
)))
|
||||
|
||||
(define (single-txn-test uuid)
|
||||
(let* ((template (gnc:find-report-template uuid))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(report (constructor uuid "bar" options
|
||||
#t #t #f #f))
|
||||
(renderer (gnc:report-template-renderer template)))
|
||||
(let* ((env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
(my-expense-account (env-create-root-account env ACCT-TYPE-EXPENSE
|
||||
(gnc-default-report-currency)))
|
||||
(my-income-account (env-create-root-account env ACCT-TYPE-INCOME
|
||||
(gnc-default-report-currency))))
|
||||
(env-create-transaction env
|
||||
(gnc:get-start-this-month)
|
||||
my-income-account
|
||||
my-asset-account
|
||||
(gnc:make-gnc-numeric -1 1))
|
||||
(begin
|
||||
(set-option report gnc:pagename-display "Show table" #t)
|
||||
(set-option report gnc:pagename-general "Start Date"
|
||||
(cons 'absolute (gnc:get-start-this-month)))
|
||||
(set-option report gnc:pagename-general "End Date"
|
||||
(cons 'absolute (gnc:get-start-this-month)))
|
||||
(set-option report gnc:pagename-general "Step Size" 'DayDelta)
|
||||
(set-option report gnc:pagename-general "Price Source" 'pricedb-nearest)
|
||||
(set-option report gnc:pagename-general "Report's currency" (gnc-default-report-currency))
|
||||
(set-option report gnc:pagename-accounts "Accounts" (list my-asset-account))
|
||||
|
||||
(let ((doc (renderer report)))
|
||||
(gnc:html-document-set-style-sheet! doc
|
||||
(gnc:report-stylesheet report))
|
||||
(let* ((result (gnc:html-document-render doc #f))
|
||||
(tbl (stream->list
|
||||
(pattern-streamer "<tr>"
|
||||
(list (list "<string> ([0-9][0-9])/([0-9][0-9])/([0-9][0-9])</td>"
|
||||
1 2 3)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1))
|
||||
result))))
|
||||
(format #t "~a\n" tbl)
|
||||
(logging-and (= 1 (tbl-ref->number tbl 0 1))
|
||||
(= 0 (tbl-ref->number tbl 0 2))
|
||||
(= 1 (tbl-ref->number tbl 0 3))
|
||||
(= 1 (tbl-row-count tbl))
|
||||
(= 4 (tbl-column-count tbl)))))))))
|
||||
|
||||
|
||||
(define (two-txn-test uuid)
|
||||
(let* ((template (gnc:find-report-template uuid))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(report (constructor uuid "bar" options
|
||||
#t #t #f #f))
|
||||
(renderer (gnc:report-template-renderer template)))
|
||||
(let* ((env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
(my-expense-account (env-create-root-account env ACCT-TYPE-EXPENSE
|
||||
(gnc-default-report-currency)))
|
||||
(my-income-account (env-create-root-account env ACCT-TYPE-INCOME
|
||||
(gnc-default-report-currency)))
|
||||
(date-0 (gnc:get-start-this-month))
|
||||
(date-1 (gnc:timepair-next-day date-0))
|
||||
(date-2 (gnc:timepair-next-day date-1)))
|
||||
(env-create-transaction env
|
||||
date-1
|
||||
my-income-account
|
||||
my-asset-account
|
||||
(gnc:make-gnc-numeric -1 1))
|
||||
(env-create-transaction env
|
||||
date-2
|
||||
my-income-account
|
||||
my-asset-account
|
||||
(gnc:make-gnc-numeric -5 1))
|
||||
(begin
|
||||
(set-option report gnc:pagename-display "Show table" #t)
|
||||
(set-option report gnc:pagename-general "Start Date" (cons 'absolute date-0))
|
||||
(set-option report gnc:pagename-general "End Date" (cons 'absolute date-2))
|
||||
(set-option report gnc:pagename-general "Step Size" 'DayDelta)
|
||||
(set-option report gnc:pagename-general "Price Source" 'pricedb-nearest)
|
||||
(set-option report gnc:pagename-general "Report's currency" (gnc-default-report-currency))
|
||||
(set-option report gnc:pagename-accounts "Accounts" (list my-asset-account))
|
||||
|
||||
(let ((doc (renderer report)))
|
||||
(gnc:html-document-set-style-sheet! doc
|
||||
(gnc:report-stylesheet report))
|
||||
(let* ((result (gnc:html-document-render doc #f))
|
||||
(tbl (stream->list
|
||||
(pattern-streamer "<tr>"
|
||||
(list (list "<string> ([0-9][0-9])/([0-9][0-9])/([0-9][0-9])</td>"
|
||||
1 2 3)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1))
|
||||
result))))
|
||||
(format #t "~a\n~a\n" result tbl)
|
||||
(logging-and (every (lambda (row)
|
||||
(and (equal? (second row) (fourth row))
|
||||
(= 0 (string->number (car (third row))))))
|
||||
tbl)
|
||||
(= 0 (tbl-ref->number tbl 0 1))
|
||||
(= 1 (tbl-ref->number tbl 1 1))
|
||||
(= 6 (tbl-ref->number tbl 2 1))
|
||||
(= 3 (tbl-row-count tbl))
|
||||
(= 4 (tbl-column-count tbl)))))))))
|
||||
|
||||
|
||||
(define (two-txn-test-2 uuid)
|
||||
(let* ((template (gnc:find-report-template uuid))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(report (constructor uuid "bar" options
|
||||
#t #t #f #f))
|
||||
(renderer (gnc:report-template-renderer template)))
|
||||
(let* ((env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
(my-liability-account (env-create-root-account env ACCT-TYPE-LIABILITY
|
||||
(gnc-default-report-currency)))
|
||||
(my-expense-account (env-create-root-account env ACCT-TYPE-EXPENSE
|
||||
(gnc-default-report-currency)))
|
||||
(my-income-account (env-create-root-account env ACCT-TYPE-INCOME
|
||||
(gnc-default-report-currency)))
|
||||
(date-0 (gnc:get-start-this-month))
|
||||
(date-1 (gnc:timepair-next-day date-0))
|
||||
(date-2 (gnc:timepair-next-day date-1)))
|
||||
(env-create-transaction env date-1 my-income-account my-asset-account (gnc:make-gnc-numeric -1 1))
|
||||
(env-create-transaction env date-1 my-expense-account my-liability-account (gnc:make-gnc-numeric -1 1))
|
||||
(env-create-transaction env date-2 my-income-account my-asset-account (gnc:make-gnc-numeric -5 1))
|
||||
(env-create-transaction env date-2 my-expense-account my-liability-account (gnc:make-gnc-numeric -5 1))
|
||||
(begin
|
||||
(set-option report gnc:pagename-display "Show table" #t)
|
||||
(set-option report gnc:pagename-general "Start Date" (cons 'absolute date-0))
|
||||
(set-option report gnc:pagename-general "End Date" (cons 'absolute date-2))
|
||||
(set-option report gnc:pagename-general "Step Size" 'DayDelta)
|
||||
(set-option report gnc:pagename-general "Price Source" 'pricedb-nearest)
|
||||
(set-option report gnc:pagename-general "Report's currency" (gnc-default-report-currency))
|
||||
(set-option report gnc:pagename-accounts "Accounts" (list my-asset-account my-liability-account))
|
||||
|
||||
(let ((doc (renderer report)))
|
||||
(gnc:html-document-set-style-sheet! doc
|
||||
(gnc:report-stylesheet report))
|
||||
(let* ((result (gnc:html-document-render doc #f))
|
||||
(tbl (stream->list
|
||||
(pattern-streamer "<tr>"
|
||||
(list (list "<string> ([0-9][0-9])/([0-9][0-9])/([0-9][0-9])</td>"
|
||||
1 2 3)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1)
|
||||
(list "<number> ([^<]*)</td>" 1))
|
||||
result))))
|
||||
(format #t "~a\n" tbl)
|
||||
(logging-and (every (lambda (row)
|
||||
(and (= (string->number (car (fourth row)))
|
||||
(+ (string->number (car (second row)))
|
||||
(string->number (car (third row)))))
|
||||
;; txns added in pairs, so assets = liability
|
||||
(equal? (second row) (third row))))
|
||||
tbl)
|
||||
(= 0 (tbl-ref->number tbl 0 1))
|
||||
(= 1 (tbl-ref->number tbl 1 1))
|
||||
(= 6 (tbl-ref->number tbl 2 1))
|
||||
(= 3 (tbl-row-count tbl))
|
||||
(= 4 (tbl-column-count tbl)))))))))
|
||||
|
||||
@ -0,0 +1,26 @@
|
||||
(use-modules (ice-9 format))
|
||||
(use-modules (ice-9 streams))
|
||||
(use-modules (srfi srfi-1))
|
||||
|
||||
(use-modules (gnucash gnc-module))
|
||||
(gnc:module-load "gnucash/report/report-system" 0)
|
||||
|
||||
(use-modules (gnucash main)) ;; FIXME: delete after we finish modularizing.
|
||||
(use-modules (gnucash printf))
|
||||
(use-modules (gnucash report report-system))
|
||||
(use-modules (gnucash app-utils))
|
||||
(use-modules (gnucash engine))
|
||||
(use-modules (sw_engine))
|
||||
(use-modules (gnucash report standard-reports net-barchart))
|
||||
|
||||
(use-modules (gnucash report report-system streamers))
|
||||
;(use-modules (gnucash report new-reports reports-2))
|
||||
|
||||
(use-modules (gnucash report report-system test test-extras))
|
||||
|
||||
(use-modules (gnucash report standard-reports test test-generic-category-report))
|
||||
(use-modules (gnucash report standard-reports category-barchart))
|
||||
|
||||
(define (run-test)
|
||||
(run-category-income-expense-test category-barchart-income-uuid category-barchart-expense-uuid)
|
||||
(run-category-asset-liability-test category-barchart-asset-uuid category-barchart-liability-uuid))
|
||||
@ -0,0 +1,15 @@
|
||||
;(use-modules (gnucash report new-reports reports-2))
|
||||
|
||||
(use-modules (gnucash gnc-module))
|
||||
(gnc:module-load "gnucash/report/report-system" 0)
|
||||
(use-modules (gnucash engine))
|
||||
(use-modules (sw_engine))
|
||||
|
||||
(use-modules (gnucash report report-system test test-extras))
|
||||
|
||||
(use-modules (gnucash report standard-reports test test-generic-net-barchart))
|
||||
(use-modules (gnucash report standard-reports net-barchart))
|
||||
|
||||
(define (run-test)
|
||||
(run-net-asset-income-test net-worth-barchart-uuid income-expense-barchart-uuid))
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
;(use-modules (gnucash report new-reports reports-2))
|
||||
|
||||
(use-modules (gnucash gnc-module))
|
||||
(gnc:module-load "gnucash/report/report-system" 0)
|
||||
(use-modules (gnucash engine))
|
||||
(use-modules (sw_engine))
|
||||
|
||||
(use-modules (gnucash report report-system test test-extras))
|
||||
|
||||
(use-modules (gnucash report standard-reports test test-generic-net-linechart))
|
||||
(use-modules (gnucash report standard-reports net-linechart))
|
||||
|
||||
(define (run-test)
|
||||
(run-net-asset-test net-worth-linechart-uuid))
|
||||
|
||||
Loading…
Reference in new issue