X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fexternal-format.impure.lisp;h=add6cb17be08c38b0ebf4a9ecfb8e1ac5ed8d96d;hb=5877e8c2334bd87490be385af21ed9bc494f19e2;hp=11586b9f7fa4226f077de58af9181f8f0a4f6336;hpb=eb65b71f52bcc7067414d692ae2f127d742a7ef5;p=sbcl.git diff --git a/tests/external-format.impure.lisp b/tests/external-format.impure.lisp index 11586b9..add6cb1 100644 --- a/tests/external-format.impure.lisp +++ b/tests/external-format.impure.lisp @@ -53,7 +53,7 @@ #-sb-unicode (progn (test-util:report-test-status) - (sb-ext:quit :unix-status 104)) + (sb-ext:exit :code 104)) ;;; Test UTF-8 writing and reading of 1, 2, 3 and 4 octet characters with ;;; all possible offsets. Tests for buffer edge bugs. fd-stream buffers are @@ -323,22 +323,27 @@ ;;; External format support in SB-ALIEN (with-test (:name (:sb-alien :vanilla)) - (define-alien-routine strdup c-string (str c-string)) + (define-alien-routine (#-win32 "strdup" #+win32 "_strdup" strdup) + c-string + (str c-string)) (assert (equal "foo" (strdup "foo")))) (with-test (:name (:sb-alien :utf-8 :utf-8)) - (define-alien-routine strdup (c-string :external-format :utf-8) + (define-alien-routine (#-win32 "strdup" #+win32 "_strdup" strdup) + (c-string :external-format :utf-8) (str (c-string :external-format :utf-8))) (assert (equal "foo" (strdup "foo")))) (with-test (:name (:sb-alien :latin-1 :utf-8)) - (define-alien-routine strdup (c-string :external-format :latin-1) + (define-alien-routine (#-win32 "strdup" #+win32 "_strdup" strdup) + (c-string :external-format :latin-1) (str (c-string :external-format :utf-8))) (assert (= (length (strdup (string (code-char 246)))) 2))) (with-test (:name (:sb-alien :utf-8 :latin-1)) - (define-alien-routine strdup (c-string :external-format :utf-8) + (define-alien-routine (#-win32 "strdup" #+win32 "_strdup" strdup) + (c-string :external-format :utf-8) (str (c-string :external-format :latin-1))) (assert (equal (string (code-char 228)) (strdup (concatenate 'string @@ -346,18 +351,21 @@ (list (code-char 164))))))) (with-test (:name (:sb-alien :ebcdic :ebcdic)) - (define-alien-routine strdup (c-string :external-format :ebcdic-us) + (define-alien-routine (#-win32 "strdup" #+win32 "_strdup" strdup) + (c-string :external-format :ebcdic-us) (str (c-string :external-format :ebcdic-us))) (assert (equal "foo" (strdup "foo")))) (with-test (:name (:sb-alien :latin-1 :ebcdic)) - (define-alien-routine strdup (c-string :external-format :latin-1) + (define-alien-routine (#-win32 "strdup" #+win32 "_strdup" strdup) + (c-string :external-format :latin-1) (str (c-string :external-format :ebcdic-us))) (assert (not (equal "foo" (strdup "foo"))))) (with-test (:name (:sb-alien :simple-base-string)) - (define-alien-routine strdup (c-string :external-format :ebcdic-us - :element-type base-char) + (define-alien-routine (#-win32 "strdup" #+win32 "_strdup" strdup) + (c-string :external-format :ebcdic-us + :element-type base-char) (str (c-string :external-format :ebcdic-us))) (assert (typep (strdup "foo") 'simple-base-string))) @@ -992,7 +1000,7 @@ (with-open-file (s *test-path* :external-format :utf-32be) (assert (string= " ???? " (read-line s)))))) -(with-test (:name :invalid-external-format) +(with-test (:name :invalid-external-format :fails-on :win32) (labels ((test-error (e) (assert (typep e 'error)) (unless (equal "Undefined external-format: :BAD-FORMAT" @@ -1020,5 +1028,18 @@ (handler-case (octets-to-string octets :external-format :bad-format) (error (e) e)))))) + +(with-test (:name :lp713063) + (with-open-file (f *test-path* + :direction :output + :external-format '(:euc-jp :replacement #\?) + :if-exists :supersede) + (write-string (make-string 3 :initial-element #\horizontal_bar) f)) + (assert (equal "???" + (with-open-file (f *test-path* + :direction :input + :external-format :euc-jp) + (read-line f)))) + (delete-file *test-path*)) ;;;; success