~ubuntu-branches/ubuntu/lucid/gauche-c-wrapper/lucid

« back to all changes in this revision

Viewing changes to testsuite/stdio-test.scm

  • Committer: Bazaar Package Importer
  • Author(s): NIIBE Yutaka
  • Date: 2008-04-07 09:15:03 UTC
  • Revision ID: james.westby@ubuntu.com-20080407091503-wu0h414koe95kj4i
Tags: upstream-0.5.2
ImportĀ upstreamĀ versionĀ 0.5.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
;;;
 
2
;;; Test include stdio.h
 
3
;;;
 
4
 
 
5
(use srfi-11)
 
6
(use gauche.test)
 
7
(use gauche.process)
 
8
 
 
9
(test-start "c-wrapper (include stdio.h)")
 
10
(use c-wrapper)
 
11
 
 
12
(c-load-library "libc")
 
13
(c-include '("stdio.h" "unistd.h"))
 
14
 
 
15
(test "printf & fprintf"
 
16
      '("Hello, world" "error!")
 
17
      (lambda ()
 
18
        (let-values (((stdout-in stdout-out) (sys-pipe))
 
19
                     ((stderr-in stderr-out) (sys-pipe)))
 
20
          (let ((pid (sys-fork)))
 
21
            (if (= pid 0)
 
22
                (begin
 
23
                  (close-input-port stdout-in)
 
24
                  (close-input-port stderr-in)
 
25
                  (close 1)
 
26
                  (close 2)
 
27
                  (dup (port-file-number stdout-out))
 
28
                  (dup (port-file-number stderr-out))
 
29
                  (printf "Hello, world")
 
30
                  (fprintf stderr "error!")
 
31
                  (fflush stdout)
 
32
                  (fflush stderr)
 
33
                  (fclose stdout)
 
34
                  (fclose stderr))
 
35
                (begin
 
36
                  (close-output-port stdout-out)
 
37
                  (close-output-port stderr-out)
 
38
                  (let ((outstr (read-line stdout-in))
 
39
                        (errstr (read-line stderr-in)))
 
40
                    (sys-wait)
 
41
                    (list outstr errstr))))))))
 
42
 
 
43
(test "sscanf"
 
44
      5
 
45
      (lambda ()
 
46
        (let ((v (make <c-int>)))
 
47
          (sscanf "5" "%d" (ptr v))
 
48
          (v))))
 
49
 
 
50
;; epilogue
 
51
(test-end)
 
52