~ chicken-core (master) /tests/version-tests.scm
Trap1(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"))