File: test-write.scm

package info (click to toggle)
guile-hoot 0.7.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,184 kB
  • sloc: lisp: 46,147; javascript: 1,351; makefile: 318; sh: 12
file content (77 lines) | stat: -rw-r--r-- 2,076 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
;;; Copyright (C) 2023, 2025 Igalia, S.L.
;;;
;;; Licensed under the Apache License, Version 2.0 (the "License");
;;; you may not use this file except in compliance with the License.
;;; You may obtain a copy of the License at
;;;
;;;    http://www.apache.org/licenses/LICENSE-2.0
;;;
;;; Unless required by applicable law or agreed to in writing, software
;;; distributed under the License is distributed on an "AS IS" BASIS,
;;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
;;; See the License for the specific language governing permissions and
;;; limitations under the License.

;;; Commentary:
;;;
;;; String tests.
;;;
;;; Code:

(use-modules (srfi srfi-64)
             (test utils))

(test-begin "test-write")

(define-syntax test-write
  (syntax-rules ()
    ((_ datum) (test-write (object->string datum) datum))
    ((_ expected-output datum)
     (test-write expected-output expected-output datum)
     )
    ((_ scheme-repr reflect-repr datum)
     (let ((output (string-append scheme-repr reflect-repr)))
       (with-additional-imports ((scheme write))
         (test-call output
                    (lambda (x)
                      (write x (current-output-port))
                      (flush-output-port (current-output-port))
                      x)
                    datum))))))

(test-write #f)
(test-write #t)
(test-write #nil)
(test-write '())
(test-write (if #f #f))
(let ((eof-object (lambda () the-eof-object)))
  (test-write (eof-object)))
(test-write 42)
(test-write -42)
(test-write 42.0)
(test-write -42.0)
(test-write #\a)
(test-write '(1 . 2))
(test-write '(1 2))
(test-write "foo")
(test-write 'foo)
(test-write #vu8())
(test-write #vu8(1 2 3))
(test-write #())
(test-write #(1 2 3))
(test-write #*)
(test-write #*110110)
(test-write "#<procedure>" (lambda () 42))
(test-write #:foo)
(test-write "#<port>" (open-input-string "foo"))
;; Not yet implemented:
;;   Boxes
;;   Atomic boxes
;;   Weak tables
;;   Fluids
;;   Dynamic states
;;   Syntax
;;   Structs / records
;;   Parameters

(test-end* "test-write")