;;; .EnTete "Le-Lisp (c) version 15.2" " " "Test des modules Le-Lisp"
;;; .EnPied "testmodule.ll" "%" " "
;;;
;;; .SuperTitre "Test des modules Le-Lisp"
;;;
;;;
;;; .Centre "*****************************************************************"
;;; .Centre " Ce fichier est en lecture seule hors du projet ALE de l'INRIA. "
;;; .Centre " Il est maintenu par ILOG SA, 2 Avenue Gallie'ni, 94250 Gentilly "
;;; .Centre " (c) Le-Lisp est une marque de'pose'e de l'INRIA "
;;; .Centre "*****************************************************************"
;;;
;;; .Centre "$Header: testmodule.ll,v 1.2 88/12/14 13:18:40 nuyens Exp $"
(unless (>= (version) 15.2)
(error 'load 'erricf 'testmodule))
(unless (featurep 'testcomm)
(libload testcomm))
(setq #:sys-package:colon 'testmodule)
(defvar testmodule1
'(defmodule
testmodule1
files
(testmodule1.ll)
export
(testmodulefn)))
(de :similar-module (mod1 mod2)
;; an incomplete test for the similarity of two modules.
(every #'(lambda (key)
(equal (getdefmodule mod1 key)
(getdefmodule mod2 key)))
'(defmodule files import export)))
(defun :simple-module ()
;; return a NEW simple module
`((defmodule . testmod)
(files foofile barfile zeefile)
(import noomodule)
(export thisfun thatfun theotherfun)))
(testfn ())
(test-serie "Tests d'acce`s au clefs des modules" ())
;;; This series counts on the representation of modules, but
;;; Complice counts on the fact that setdefmodule returns the modified
;;; module as its value, so we test it here.
(setq :mod ()) ()
(setq :mod
(setdefmodule :mod 'defmodule 'testm1) :fu ()) ()
(getdefmodule :mod 'defmodule) testm1
(setdefmodule :mod 'files '(testm1 testm2)) ((defmodule . testm1)
(files testm1 testm2))
(getdefmodule :mod 'files) (testm1 testm2)
(test-serie "Tests d'e'criture/lecture des modules" ())
(setq :fname "/tmp/testmodule1.lm") "/tmp/testmodule1.lm"
(with ((outchan (openo :fname)))
(print "foo")()) ()
;;; test that :simple-module still creates a valid module
(getdefmodule (:simple-module) 'files) (foofile barfile zeefile)
(setq :def (:simple-module) :fu ()) ()
(car (newl #:system:path "/tmp/")) "/tmp/"
(printdefmodule :def :fname) "/tmp/testmodule1.lm"
(setq :lu (readdefmodule :fname) :fu ()) ()
(:similar-module :def :lu) t
;;; The same thing but with #:system:print-for-read set to T
(setq :new (:simple-module) :fu ()) ()
(let ((#:system:print-for-read t))
(printdefmodule :new :fname)) "/tmp/testmodule1.lm"
(setq :lu (readdefmodule :fname) :fu ()) ()
(:similar-module :new :lu) t
;;; but this time having modified the module.
(setq :fname "/tmp/testmodule2.lm") "/tmp/testmodule2.lm"
(setq :new (:simple-module) :fu ()) ()
(with ((outchan (openo :fname)))
(print "foo")()) ()
(printdefmodule :new :fname) "/tmp/testmodule2.lm"
(setq :lu (readdefmodule 'testmodule2) :fu ()) ()
(:similar-module :new :lu) t
(progn (setdefmodule :lu 'cpexport '(this that)) ())()
(let ((#:system:print-for-read t))
(printdefmodule :lu :fname)) "/tmp/testmodule2.lm"
(setq :lu2 (readdefmodule :fname) :fu ()) ()
(:similar-module :lu :lu2) t
;;; clean up
;(deletefile :fname) t
(setq #:system:path (cdr #:system:path) :fu ()) ()
(test-serie "Fin des tests des modules")