mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-20 11:48:30 -06:00
[test-utilities] initial commit
Add tests for libgnucash/scm/utilities.scm functions - tests for list<->vec - tests for gnc:substring-replace - tests for gnc:substring-replace-from-to The latter confirms that the comment before the function definition is *incorrect* - it describes that substring-replace-from-to will start from the 2nd substring for the first substitution, and performs 2 substitutions. However the comment illustrates only 1 substitution. The test suite performs the test according to code behaviour, rather than the comment. This issue is moot in practice because the end-after is always called with negative in the code base. original comment: ;; gnc:substring-replace-from-to ;; same as gnc:substring-replace extended by: ;; start: from which occurrence onwards the replacement shall start ;; end-after: max. number times the replacement should executed ;; ;; Example: (gnc:substring-replace-from-to "foobarfoobarfoobar" "bar" "xyz" 2 2) ;; returns "foobarfooxyzfoobar".
This commit is contained in:
parent
4d8ef9b9e4
commit
d9623b0ad1
63
libgnucash/scm/test/test-utilities.scm
Normal file
63
libgnucash/scm/test/test-utilities.scm
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
(use-modules (gnucash gnc-module))
|
||||||
|
(gnc:module-begin-syntax (gnc:module-load "gnucash/app-utils" 0))
|
||||||
|
(use-modules (gnucash utilities))
|
||||||
|
(use-modules (srfi srfi-64))
|
||||||
|
(use-modules (gnucash engine test srfi64-extras))
|
||||||
|
|
||||||
|
(define (run-test)
|
||||||
|
(test-runner-factory gnc:test-runner)
|
||||||
|
(test-begin "test-utilities.scm")
|
||||||
|
(test-traverse-vec)
|
||||||
|
(test-substring-replace)
|
||||||
|
(test-begin "test-utilities.scm"))
|
||||||
|
|
||||||
|
(define (test-traverse-vec)
|
||||||
|
(test-begin "traverse-vec")
|
||||||
|
(test-equal "list->vec"
|
||||||
|
(vector 1 (vector 2 3))
|
||||||
|
(traverse-list->vec
|
||||||
|
(list 1 (list 2 3))))
|
||||||
|
(test-equal "vec->list"
|
||||||
|
(list 1 (list 2 3))
|
||||||
|
(traverse-vec->list
|
||||||
|
(vector 1 (vector 2 3))))
|
||||||
|
(test-end "traverse-vec"))
|
||||||
|
|
||||||
|
(define (test-substring-replace)
|
||||||
|
(test-begin "substring-replace")
|
||||||
|
|
||||||
|
;; generic gnc:substring-replace used in qif-guess-map.scm
|
||||||
|
(test-equal "gnc:substring-replace"
|
||||||
|
"fooxyzfooxyz"
|
||||||
|
(gnc:substring-replace "foobarfoobar" "bar" "xyz"))
|
||||||
|
|
||||||
|
;; note the following 2 tests show the code was not coded according
|
||||||
|
;; to the example in the comments.
|
||||||
|
(test-equal "gnc:substring-replace-from-to ... ... 2 2"
|
||||||
|
"foobarfooxyzfooxyz"
|
||||||
|
(gnc:substring-replace-from-to "foobarfoobarfoobar" "bar" "xyz" 2 2))
|
||||||
|
|
||||||
|
(test-equal "gnc:substring-replace-from-to ... ... 2 1"
|
||||||
|
"foobarfooxyzfoobar"
|
||||||
|
(gnc:substring-replace-from-to "foobarfoobarfoobar" "bar" "xyz" 2 1))
|
||||||
|
|
||||||
|
;; comprehensive test suite for gnc:substring-replace-from-to:
|
||||||
|
(test-equal "gnc:substring-replace-from-to ... ... 2 1"
|
||||||
|
"foo xxx foo foo foo foo foo foo"
|
||||||
|
(gnc:substring-replace-from-to
|
||||||
|
"foo foo foo foo foo foo foo foo"
|
||||||
|
"foo" "xxx" 2 1))
|
||||||
|
|
||||||
|
(test-equal "gnc:substring-replace-from-to ... ... 1 1"
|
||||||
|
"xxx foo foo foo foo foo foo foo"
|
||||||
|
(gnc:substring-replace-from-to
|
||||||
|
"foo foo foo foo foo foo foo foo"
|
||||||
|
"foo" "xxx" 1 1))
|
||||||
|
|
||||||
|
(test-equal "gnc:substring-replace-from-to ... ... 4 -1"
|
||||||
|
"foo foo foo xxx xxx xxx xxx xxx"
|
||||||
|
(gnc:substring-replace-from-to
|
||||||
|
"foo foo foo foo foo foo foo foo"
|
||||||
|
"foo" "xxx" 4 -1))
|
||||||
|
|
||||||
|
(test-end "substring-replace"))
|
Loading…
Reference in New Issue
Block a user