;; Filename : test-string-null.scm ;; About : unit test for strings that contain NUL character ;; ;; Copyright (C) 2005-2006 Kazuki Ohta ;; Copyright (c) 2007-2008 SigScheme Project ;; ;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions ;; are met: ;; ;; 1. Redistributions of source code must retain the above copyright ;; notice, this list of conditions and the following disclaimer. ;; 2. Redistributions in binary form must reproduce the above copyright ;; notice, this list of conditions and the following disclaimer in the ;; documentation and/or other materials provided with the distribution. ;; 3. Neither the name of authors nor the names of its contributors ;; may be used to endorse or promote products derived from this software ;; without specific prior written permission. ;; ;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS ;; IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, ;; THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR ;; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ;; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, ;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ;; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR ;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF ;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (require-extension (unittest)) (define tn test-name) (if (and (provided? "sigscheme") (not (provided? "null-capable-string"))) (test-skip "null character in a middle of string is not enabled")) ;; R6RS(SRFI-75) compliant (tn "R6RS escape sequence") (assert-equal? (tn) (integer->string 0) "\x00") ;; 0 (assert-equal? (tn) (list->string '(#\nul)) "\x00") ;; 0 (assert-equal? (tn) '(#\nul) (string->list "\x00")) ;; 0 ;; raw control chars (tn "raw control char in string literal") (assert-equal? (tn) (integer->string 0) "") ;; 0 ;; escaped raw control chars (tn "escaped raw control char in string literal") ;;(assert-parse-error (tn) "\"\\\"") ;; 0 ;; cannot read by string port (total-report)