aboutsummaryrefslogtreecommitdiff
path: root/tests/reader.scm
diff options
context:
space:
mode:
authorArun Isaac2025-01-22 23:54:45 +0000
committerArun Isaac2025-01-22 23:54:45 +0000
commit3a7abb9f295409c93db8ee12909c69dee9730e71 (patch)
treebd9572254e9c0cea550dab3f0a46f80fbb031394 /tests/reader.scm
parentd08b904dbbc5f3ffcdbee000fbf5fbe5ae436cfe (diff)
downloadravanan-3a7abb9f295409c93db8ee12909c69dee9730e71.tar.gz
ravanan-3a7abb9f295409c93db8ee12909c69dee9730e71.tar.lz
ravanan-3a7abb9f295409c93db8ee12909c69dee9730e71.zip
reader: Normalize File array type formals too.
* ravanan/reader.scm: Import (ravanan work types). (some-file-type?): New function. (normalize-formal-input, normalize-formal-output): Normalize File array type formals too. * tests/reader.scm: Import (srfi srfi-1) and (ice-9 match). (normalize-formal-input, normalize-formal-output): New variables. (json=?): New function. ("Normalize File type formal input", "Normalize File array type formal input", "Normalize array of File arrays type formal input", "Normalize File type formal output", "Normalize File array type formal output", "Normalize array of File arrays type formal output"): New tests.
Diffstat (limited to 'tests/reader.scm')
-rw-r--r--tests/reader.scm111
1 files changed, 109 insertions, 2 deletions
diff --git a/tests/reader.scm b/tests/reader.scm
index 4737ed6..ea6472c 100644
--- a/tests/reader.scm
+++ b/tests/reader.scm
@@ -1,5 +1,5 @@
;;; ravanan --- High-reproducibility CWL runner powered by Guix
-;;; Copyright © 2024 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2024, 2025 Arun Isaac <arunisaac@systemreboot.net>
;;;
;;; This file is part of ravanan.
;;;
@@ -16,13 +16,120 @@
;;; You should have received a copy of the GNU General Public License
;;; along with ravanan. If not, see <https://www.gnu.org/licenses/>.
-(use-modules (srfi srfi-64)
+(use-modules (srfi srfi-1)
+ (srfi srfi-64)
+ (ice-9 match)
(ravanan reader))
+(define normalize-formal-input
+ (@@ (ravanan reader) normalize-formal-input))
+
+(define normalize-formal-output
+ (@@ (ravanan reader) normalize-formal-output))
+
+(define (json=? tree1 tree2)
+ (cond
+ ;; Arrays
+ ((vector? tree1)
+ (lset= json=?
+ (vector->list tree1)
+ (vector->list tree2)))
+ ;; Dictionaries
+ ((list? tree1)
+ (lset= (match-lambda*
+ (((key1 . value1) (key2 . value2))
+ (and (string=? key1 key2)
+ (json=? value1 value2))))
+ tree1
+ tree2))
+ ;; Atoms
+ (else
+ (equal? tree1 tree2))))
+
(test-begin "reader")
(test-equal "Coerce number to number"
37
(coerce-type 37 'number))
+(test-assert "Normalize File type formal input"
+ (json=? '(("type" . "File")
+ ("id" . "foo")
+ ("secondaryFiles" . #((("pattern" . ".bai")
+ ("required" . #t)))))
+ (normalize-formal-input
+ '(("type" . "File")
+ ("id" . "foo")
+ ("secondaryFiles" . #(".bai"))))))
+
+(test-assert "Normalize File array type formal input"
+ (json=? '(("type"
+ ("type" . "array")
+ ("items" . "File"))
+ ("id" . "foo")
+ ("secondaryFiles" . #((("pattern" . ".bai")
+ ("required" . #t)))))
+ (normalize-formal-input
+ '(("type"
+ ("type" . "array")
+ ("items" . "File"))
+ ("id" . "foo")
+ ("secondaryFiles" . #(".bai"))))))
+
+(test-assert "Normalize array of File arrays type formal input"
+ (json=? '(("type"
+ ("type" . "array")
+ ("items" . (("type" . "array")
+ ("items" . "File"))))
+ ("id" . "foo")
+ ("secondaryFiles" . #((("pattern" . ".bai")
+ ("required" . #t)))))
+ (normalize-formal-input
+ '(("type"
+ ("type" . "array")
+ ("items" . (("type" . "array")
+ ("items" . "File"))))
+ ("id" . "foo")
+ ("secondaryFiles" . #(".bai"))))))
+
+(test-assert "Normalize File type formal output"
+ (json=? '(("type" . "File")
+ ("id" . "foo")
+ ("secondaryFiles" . #((("pattern" . ".bai")
+ ("required" . #f)))))
+ (normalize-formal-output
+ '(("type" . "File")
+ ("id" . "foo")
+ ("secondaryFiles" . #(".bai"))))))
+
+(test-assert "Normalize File array type formal output"
+ (json=? '(("type"
+ ("type" . "array")
+ ("items" . "File"))
+ ("id" . "foo")
+ ("secondaryFiles" . #((("pattern" . ".bai")
+ ("required" . #f)))))
+ (normalize-formal-output
+ '(("type"
+ ("type" . "array")
+ ("items" . "File"))
+ ("id" . "foo")
+ ("secondaryFiles" . #(".bai"))))))
+
+(test-assert "Normalize array of File arrays type formal output"
+ (json=? '(("type"
+ ("type" . "array")
+ ("items" . (("type" . "array")
+ ("items" . "File"))))
+ ("id" . "foo")
+ ("secondaryFiles" . #((("pattern" . ".bai")
+ ("required" . #t)))))
+ (normalize-formal-input
+ '(("type"
+ ("type" . "array")
+ ("items" . (("type" . "array")
+ ("items" . "File"))))
+ ("id" . "foo")
+ ("secondaryFiles" . #(".bai"))))))
+
(test-end "reader")