123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- (define-module (test-srfi-37)
- #:use-module (test-suite lib)
- #:use-module (srfi srfi-37))
- (with-test-prefix "SRFI-37"
- (pass-if "empty calls with count-modified seeds"
- (equal? (list 21 42)
- (call-with-values
- (lambda ()
- (args-fold '("1" "3" "4") '()
- (lambda (opt name arg seed seed2)
- (values 1 2))
- (lambda (op seed seed2)
- (values (1+ seed) (+ 2 seed2)))
- 18 36))
- list)))
- (pass-if "short opt params"
- (let ((a-set #f) (b-set #f) (c-val #f) (d-val #f) (no-fail #t) (no-operands #t))
- (args-fold '("-abcdoit" "-ad" "whatev")
- (list (option '(#\a) #f #f (lambda (opt name arg)
- (set! a-set #t)
- (values)))
- (option '(#\b) #f #f (lambda (opt name arg)
- (set! b-set #t)
- (values)))
- (option '("cdoit" #\c) #f #t
- (lambda (opt name arg)
- (set! c-val arg)
- (values)))
- (option '(#\d) #f #t
- (lambda (opt name arg)
- (set! d-val arg)
- (values))))
- (lambda (opt name arg) (set! no-fail #f) (values))
- (lambda (oper) (set! no-operands #f) (values)))
- (equal? '(#t #t "doit" "whatev" #t #t)
- (list a-set b-set c-val d-val no-fail no-operands))))
- (pass-if "single unrecognized long-opt"
- (equal? "fake"
- (args-fold '("--fake" "-i2")
- (list (option '(#\i) #t #f
- (lambda (opt name arg k) k)))
- (lambda (opt name arg k) name)
- (lambda (operand k) #f)
- #f)))
- (pass-if "long req'd/optional"
- (equal? '(#f "bsquare" "apple")
- (args-fold '("--x=pple" "--y=square" "--y")
- (list (option '("x") #t #f
- (lambda (opt name arg k)
- (cons (string-append "a" arg) k)))
- (option '("y") #f #t
- (lambda (opt name arg k)
- (cons (if arg
- (string-append "b" arg)
- #f) k))))
- (lambda (opt name arg k) #f)
- (lambda (opt name arg k) #f)
- '())))
-
- (pass-if "short options absorb special markers in the next arg"
- (let ((arg-proc (lambda (opt name arg k)
- (acons name arg k))))
- (equal? '((#\y . "-z") (#\x . "--") (#\z . #f))
- (args-fold '("-zx" "--" "-y" "-z" "--")
- (list (option '(#\x) #f #t arg-proc)
- (option '(#\z) #f #f arg-proc)
- (option '(#\y) #t #f arg-proc))
- (lambda (opt name arg k) #f)
- (lambda (opt name arg k) #f)
- '()))))
- (pass-if "short options without arguments"
-
-
- (let ((arg-proc (lambda (opt name arg k)
- (acons name arg k))))
- (equal? '((#\x . #f))
- (args-fold '("-x")
- (list (option '(#\x) #f #f arg-proc))
- (lambda (opt name arg k) #f)
- (lambda (opt name arg k) #f)
- '()))))
- (pass-if-equal "short option with optional argument omitted" 'good
-
-
- (args-fold '("-I")
- (list (option '(#\I) #f #t
- (lambda (opt name arg value)
- (and (eqv? name #\I) (not arg)
- 'good))))
- (lambda _ (error "unrecognized"))
- (const #f)
- #f))
- (pass-if-equal "short option with optional argument provided"
- "the-argument"
- (args-fold '("-I" "the-argument")
- (list (option '(#\I) #f #t
- (lambda (opt name arg result)
- (and (eqv? name #\I) arg))))
- (lambda _ (error "unrecognized"))
- (const #f)
- #f))
- )
|