~ chicken-core (master) /tests/version-tests.scm


 1(import chicken.irregex chicken.platform chicken.string)
 2(import (only (scheme base) features))
 3
 4(let* ((version-tokens (string-split (chicken-version) "."))
 5       (major (string->number (car version-tokens)))
 6       (minor (string->number (cadr version-tokens))))
 7
 8  (display "Checking major and minor version numbers against chicken-version... ")
 9  (assert (= (foreign-value "C_MAJOR_VERSION" int) major))
10  (assert (= (foreign-value "C_MINOR_VERSION" int) minor))
11  (print "ok")
12
13  (display "Checking the registered feature chicken-<major>.<minor>... ")
14  (let loop ((features (features)))
15    (if (null? features)
16        (error "Could not find feature chicken-<major>.<minor>")
17        (let ((feature (symbol->string (car features))))
18          (cond ((irregex-match "chicken-(\\d+)\\.(\\d+)" feature)
19                 => (lambda (match)
20                      (assert (= (string->number
21                                  (irregex-match-substring match 1))
22                                 major))
23                      (assert (= (string->number
24                                  (irregex-match-substring match 2))
25                                 minor))))
26                (else (loop (cdr features)))))))
27
28  (display "Checking the registered feature chicken-<major>... ")
29  (let loop ((features (features)))
30    (if (null? features)
31        (error "Could not find feature chicken-<major>")
32        (let ((feature (symbol->string (car features))))
33          (cond ((irregex-match "chicken-(\\d+)" feature)
34                 => (lambda (match)
35                      (assert (= (string->number
36                                  (irregex-match-substring match 1))
37                                 major))))
38                (else (loop (cdr features)))))))
39  (print "ok"))
Trap