#! /bin/sh # -*-scheme-*- # bootstrap srfi-9 if [ "$MES" != guile ]; then MES_BOOT=boot-03.scm exec ${MES-bin/mes} < $0 fi exec ${MES-bin/mes} --no-auto-compile -L ${0%/*} -L module -C module -e '(tests srfi-9)' -s "$0" "$@" !# ;;; -*-scheme-*- ;;; GNU Mes --- Maxwell Equations of Software ;;; Copyright © 2016,2018,2019 Jan (janneke) Nieuwenhuizen ;;; ;;; This file is part of GNU Mes. ;;; ;;; GNU Mes is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Mes is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Mes. If not, see . (define-module (tests srfi-9) #:use-module (srfi srfi-9) #:use-module (srfi srfi-9 gnu) #:use-module (mes mes-0) #:use-module (mes test)) (cond-expand (mes ;; bootstrap test (primitive-load "module/mes/test.scm") (primitive-load "mes/module/srfi/srfi-9-struct.mes") (primitive-load "mes/module/srfi/srfi-9/gnu-struct.mes") (define-macro (mes-use-module . rest) #t) ;; (primitive-load "mes/module/srfi/srfi-9-vector.mes") ;; (primitive-load "mes/module/srfi/srfi-9/gnu-vector.mes") (mes-use-module (srfi srfi-9)) (mes-use-module (srfi srfi-9 gnu)) (mes-use-module (mes test))) (else)) (pass-if "first dummy" #t) (pass-if-not "second dummy" #f) (define (make-record-type ' '(one two))) (pass-if "make-record-type" (record-type? )) (define make-zero (record-constructor '(one two))) (pass-if "record-constructor" (procedure? make-zero)) (define zero (make-zero 1 2)) (pass-if "record?" (record? zero)) (define zero? (record-predicate )) (pass-if "record-predicate" (procedure? zero?)) (pass-if "zero?" (zero? zero)) (define zero-one (record-accessor 'one)) (pass-if-eq "zero-one" 1 (zero-one zero)) (define zero-two-set! (record-modifier 'two)) (pass-if-eq "zero-one-set!" 42 (begin (zero-two-set! zero 42) ((record-accessor 'two) zero))) (pass-if-eq "record-type-descriptor" (record-type-descriptor zero)) (pass-if-eq "record-type-name" ' (record-type-name )) (pass-if-equal "record-type-fields" '(one two) (record-type-fields )) (define-record-type lexical-token (make-lexical-token category source value) lexical-token? (category lexical-token-category) (source lexical-token-source) (value lexical-token-value)) (pass-if "define-record-type" (lexical-token? (make-lexical-token 'x 'y 'z))) (pass-if-equal "set-field" "baar" (let ((token (make-lexical-token 'foo "bar" 'baz))) (lexical-token-category (set-field token (lexical-token-category) "baar")))) (result 'report)