;;;; Copyright 2005 Juri Pakaste ;;;; ;;;; This file is part of Lukutoukka. ;;;; ;;;; Lukutoukka 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 2 of the License, or ;;;; (at your option) any later version. ;;;; ;;;; Lukutoukka 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 Lukutoukka; if not, write to the Free Software ;;;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA (define-module (file-write-read-test) #:use-module (lukutoukkalib file) #:use-module (lukutoukkalib srfi srfi-56) #:use-module (unit-test) #:use-module (oop goops) #:export (create-test-suite)) (define-class ()) (define-method (test-write-read-no-word-file (test-case )) (let* ((output-string-port (open-output-string)) (builder (create-new-file "foo" output-string-port))) (end-words builder) (let ((reader (create-file-reader (open-input-string (get-output-string output-string-port))))) (assert-equal #f (read-next-word reader))))) (define-method (test-write-read-one-word-file (test-case )) (let* ((output-string-port (open-output-string)) (builder (create-new-file "foo" output-string-port))) (save-word builder "kala") (end-words builder) (let ((reader (create-file-reader (open-input-string (get-output-string output-string-port))))) (assert-equal "kala" (read-next-word reader)) (assert-equal #f (read-next-word reader))))) (define-method (test-write-read-two-words-file (test-case )) (let* ((output-string-port (open-output-string)) (builder (create-new-file "foo" output-string-port))) (save-word builder "kala") (save-word builder "hauki") (end-words builder) (let ((reader (create-file-reader (open-input-string (get-output-string output-string-port))))) (assert-equal "kala" (read-next-word reader)) (assert-equal "hauki" (read-next-word reader)) (assert-equal #f (read-next-word reader))))) (define-method (test-write-read-two-words-and-pause-file (test-case )) (let* ((output-string-port (open-output-string)) (builder (create-new-file "foo" output-string-port))) (save-word builder '("kala" 2)) (save-word builder "hauki") (end-words builder) (let ((reader (create-file-reader (open-input-string (get-output-string output-string-port))))) (assert-equal '("kala" 2) (read-next-word reader)) (assert-equal "hauki" (read-next-word reader)) (assert-equal #f (read-next-word reader))))) (define (create-test-suite) (let ((suite (make #:name "file-write-read-test-suite"))) (add suite (make )) suite))