;;;; 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-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-no-words-file (test-case )) (let* ((output-string-port (open-output-string)) (builder (create-new-file "foo" output-string-port))) (end-words builder) (let ((result (get-output-string output-string-port))) (assert-equal 23 (string-length result)) (assert-equal (substring result 0 10) "lukutoukka") (assert-equal 0 (read-network-uint16 (open-input-string (substring result 10 12)))) (assert-equal 20 (read-network-uint64 (open-input-string (substring result 12 20)))) (assert-equal #() (read (open-input-string (substring result 20))))))) (define-method (test-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 ((result (get-output-string output-string-port))) (with-output-to-file "/tmp/kala" (lambda () (display result))) (assert-equal 31 (string-length result)) (assert-equal 26 (read-network-uint64 (open-input-string (substring result 12 20)))) (assert-equal "\"kala\"" (substring result 20 26))))) (define-method (test-three-word-file (test-case )) (let* ((output-string-port (open-output-string)) (builder (create-new-file "foo" output-string-port))) (save-word builder "hauki") (save-word builder "on") (save-word builder "kala") (end-words builder) (let ((result (get-output-string output-string-port))) (with-output-to-file "/tmp/test-three-word-file" (lambda () (display result))) (assert-equal 48 (string-length result)) (let ((index-vector (read (open-input-string (substring result (read-network-uint64 (open-input-string (substring result 12 20)))))))) (assert-equal 3 (vector-length index-vector)) (assert-equal "\"on\"" (substring result (vector-ref index-vector 1) (vector-ref index-vector 2))))))) (define (create-test-suite) (let ((suite (make #:name "file-write-test-suite"))) (add suite (make )) suite))