#! /bin/sh # -*-scheme-*- exec ${MES-bin/mes} --no-auto-compile -L ${0%/*} -L module -C module -e '(tests srfi-13)' -s "$0" "$@" !# ;;; -*-scheme-*- ;;; GNU Mes --- Maxwell Equations of Software ;;; Copyright © 2016,2017,2018 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-13) #:use-module (mes mes-0) #:use-module (mes test)) (mes-use-module (srfi srfi-13)) (mes-use-module (mes test)) (pass-if "first dummy" #t) (pass-if-not "second dummy" #f) (pass-if "string=?" (string=? "foo" "foo")) (pass-if "string=?" (let ((empty "")) (string=? "" empty))) (pass-if-equal "string-join" "foo bar" (string-join '("foo" "bar"))) (pass-if-equal "string-join infix" "foo+bar" (string-join '("foo" "bar") "+")) (pass-if-equal "string-join prefix" ",foo,bar" (string-join '("foo" "bar") "," 'prefix)) (pass-if-equal "string-join suffix" "foo,bar," (string-join '("foo" "bar") "," 'suffix)) (pass-if-equal "string-split" '("foo") (string-split "foo" #\:)) (pass-if-equal "string-split 2" '("foo" "") (string-split "foo:" #\:)) (pass-if-equal "string-split 3" '("foo" "bar" "baz") (string-split "foo:bar:baz" #\:)) (pass-if-equal "string-index" 3 (string-index "foo:bar" #\:)) (pass-if-equal "string->number" 42 (string->number "42")) (pass-if-equal "string->number INT-MAX" 2147483647 (string->number "2147483647")) (pass-if-equal "string->number INT-MIN" -2147483648 (string->number "-2147483648")) (pass-if-equal "number->string" "16" (number->string 16)) (pass-if-equal "number->string INT-MAX" "2147483647" (number->string 2147483647)) (pass-if-equal "number->string INT-MIN" "-2147483648" (number->string -2147483648)) (pass-if-equal "number->string" "-4" (number->string -4)) (pass-if-eq "string->list" #\A (car (string->list "A"))) (pass-if-eq "string->list high" #\xff (car (string->list (list->string (list (integer->char 255)))))) (pass-if-eq "string->list high" #xff (char->integer (car (string->list (list->string (list (integer->char 255))))))) (pass-if-equal "string-fold" "oof" (list->string (string-fold cons '() "foo"))) (pass-if-equal "string-fold-right" "f-o-o-:" (list->string (string-fold-right (lambda (e p) (cons e (cons #\- p))) '(#\:) "foo"))) (pass-if-equal "string-drop" "bar" (string-drop "foobar" 3)) (pass-if-equal "string-drop-right" "foo" (string-drop-right "foobar" 3)) (pass-if-equal "string-contains" 3 (string-contains "foobar" "bar")) (pass-if-not "string-contains not" (string-contains "fuba" "bar")) (pass-if-equal "string-trim" "foo " (string-trim " foo ")) (pass-if-equal "string-trim-right" " foo" (string-trim-right " foo ")) (pass-if-equal "string-trim-both" "foo" (string-trim-both " foo ")) (pass-if-equal "string-map" "fuubar" (string-map (lambda (c) (if (eq? c #\o) #\u c)) "foobar")) (pass-if-equal "string-replace" "fubar" (string-replace "foobar" "u" 1 3)) (pass-if-equal "reverse" '(3 2 1) (reverse '(1 2 3))) (pass-if-equal "reverse fresh" '(1 2 3) (let ((list '(1 2 3))) (reverse list) list)) (pass-if-equal "reverse!" '(1) (let ((list '(1 2 3))) (reverse! list) list)) (pass-if-equal "reverse! ()" '() (reverse! '())) (result 'report (if (and (or #t (equal? %compiler "gnuc")) (equal? %arch "x86")) 1 0))