1
0
mirror of synced 2026-01-20 18:17:21 +00:00

146 lines
5.3 KiB
Plaintext

;; Function To Be Tested: DATABASEFNS (Program Analysis)
;;
;; Source: Lisp Library Modules Manual (Lyric Beta Release 2)
;; Browser, Page 11
;; Section: Program Analysis (Library)
;;
;; Created By: John Park
;;
;; Creation Date: March 18, 1987
;;
;; Last Update: March 20, 1987
;;
;; Somewhat Repaired: June 16, 1988
;;
;; Filed As: {ERIS}<lispcore>test>program-analysis>databasefns.u
;;
;;
;; Syntax: (DUMPDB FILE) & (LOADDB FILE)
;;
;; Function Description: DATABASEFNS is a very small package whose purpose is to make
;; the construction and maintenance of masterscope data bases an essentially automatic
;; process. It modifies MAKEFILE, LOAD, and LOADFROM to update database for masterscope.
;; For more info, refer to Lisp Library Modules Manual, Lyric beta release.
;; The user can dump and restore data bases explicitly via the following functions:
;; (DUMPDB file) - Dumps a data base for FILE then sets the DATABASE property to YES,
;; so that data base maintenance for FILE will subsequently be automatic.
;; (LOADDB file) - Loads the file FILE.DATABASE if one exists. After the data base is
;; loaded, the DATABASE property for FILE is set to YES, so that maintenance will be
;; thereafter automatic.
;;
;; Argument(s): (SEE Databasefns documentation)
;;
;; Returns: (SEE Databasefns documentation)
;;
;; Constraints/Limitations: The primary emphasis of this testing is the explicit
;; dumpting and restoration of data bases. Instructions will be given in the prompt
;; window for the user action to be taken during testing and appropriate messages
;; will be displayed to explain each test process. Test result is logged on
;; {eris}<lispcore>test>program-analysis>databasefns.report. This test requires
;; DATABASEFNS, TEDIT, and MASTERSCOPE.
;;
;;
;;
(DO-TEST "DATABASEFNS-TEST-SETUP"
(DEFUN PASS-FAIL (COMMAND-LANGUAGE TEST-ITEM)
(SETQ TEST-SUCCEEDED T)
(IL:IF (NOT TEST-ITEM)
IL:THEN (FORMAT *ERROR-OUTPUT* "Test ~s failed~%" COMMAND-LANGUAGE)
(SETQ TEST-SUCCEEDED NIL)
IL:ELSE "Good one!"
))
(SETQ DATABASEFNSW (IL:CREATEW '(100 100 325 90) NIL NIL T))
; Loading databasefns and other required files from {erinyes}<lyric>library>....
(IL:PAGEHEIGHT 0)
(IL:FILESLOAD (IL:SYSLOAD) TEDIT MASTERSCOPE DATABASEFNS)
; Copy the necessary source file (data) to {core}
(IL:COPYFILE '{ERIS}<TEST>ENV>PROGRAM-ANALYSIS>HAND>DATABASEFNS.DATA
'{CORE}NEW-FUNCTION)
(IL:CNDIR '{CORE})
; This tests to see if the global variable LOADDBFLG and SAVEDBFLG are initially
; set to ASK
(PASS-FAIL "DATABASEFNS VARIABLES" (AND (EQ IL:LOADDBFLG 'IL:ASK) (EQ IL:SAVEDBFLG 'IL:ASK)))
; This part of the test loads the initial data file for masterscope analysis
(IL:PROMPTPRINT "Please enter Y when masterscope asks for loading")
(SETF (GET 'IL:NEW-FUNCTION 'IL:DATABASE) 'IL:YES)
(LOAD '{CORE}NEW-FUNCTION)
(IL:MASTERSCOPE '(ANALYZE FUNCTIONS ON {CORE}NEW-FUNCTION))
(SETQ OLD-CALL-LIST (IL:MASTERSCOPE '(WHO IS CALLED BY IL:NEW-FUNCTION)))
(IL:CLRPROMPT)
; New-function is redefined; it also utilized times function ...
(IL:DEFINEQ (IL:NEW-FUNCTION (X Y) (IL:PLUS (IL:PLUS X Y) (IL:TIMES X Y))))
(SETQ NEW-CALL-LIST (IL:MASTERSCOPE '(WHO IS CALLED BY IL:NEW-FUNCTION)))
(PASS-FAIL "DATABASE UPDATE" (EQUAL (SET-DIFFERENCE NEW-CALL-LIST OLD-CALL-LIST) '(IL:TIMES)))
(IL:DUMPDB '{CORE}NEW-FUNCTION)
(SETF (GET 'IL:NEW-FUNCTION 'IL:DATABASE) 'IL:NO)
(PASS-FAIL "DATABASE CREATED" (PROBE-FILE '{CORE}NEW-FUNCTION.DATABASE))
(IL:REMPROP 'IL:NEW-FUNCTION 'IL:DATABASE)
(IL:LOADDB '{CORE}NEW-FUNCTION)
(PASS-FAIL "DATABASE PROP RESET" (EQ (GET 'IL:NEW-FUNCTION 'IL:DATABASE) 'IL:YES))
; Loading the database file will reset the property database with 'YES values
; and make masterscope database maintenance automatic..
(IL:PROMPTPRINT "enter n it the system asks you to save any variables:
enter y if the system asks you if you want a masterscope database")
(IL:CLEANUP)
; Now new souce and compiles files and corresponding database should have been
; created
(PASS-FAIL "DATABASE CREATED BY MAKEFILE" (AND (PROBE-FILE '{CORE}NEW-FUNCTION)
(PROBE-FILE '{CORE}NEW-FUNCTION.DFASL)
(PROBE-FILE '{CORE}NEW-FUNCTION.DATABASE)))
(SETF (GET 'IL:NEW-FUNCTION 'IL:DATABASE) 'IL:NO)
; Displaying the database that has been created in a tedit window...
(IL:PROMPTPRINT "Displaying the database in a tedit window...")
(SETQ DATA-WINDOW (IL:CREATEW '(750 50 400 500) 'DATABASE-WINDOW))
(SETQ DATA-STREAM (IL:OPENTEXTSTREAM '{CORE}NEW-FUNCTION.DATABASE
DATA-WINDOW ))
(SLEEP 4)
(CLOSE DATA-STREAM)
(IL:CLOSEW DATA-WINDOW)
; Erasing masterscope record for NEW-FUNCTION....
(IL:MASTERSCOPE '(ERASE IL:NEW-FUNCTION))
(IL:PROMPTPRINT ". who calls who should now return nil")
(IL:MASTERSCOPE '(WHO IS CALLED BY IL:NEW-FUNCTION))
; Setting the variable LOADDBFLG to NO will not load the database file...
(IL:REMPROP 'IL:NEW-FUNCTION 'IL:DATABASE)
(SETQ IL:LOADDBFLG 'IL:NO)
(IL:LOAD '{CORE}NEW-FUNCTION)
(PASS-FAIL "LOADDBFLG SET TO NO" (EQ (GET 'IL:NEW-FUNCTION 'IL:DATABASE) 'IL:NONE) )
; Setting the variable LOADDBFLG to YES will load the database file...
(SETQ IL:LOADDBFLG 'IL:YES)
(IL:LOAD '{CORE}NEW-FUNCTION)
(PASS-FAIL "LOADDBFLG SET TO YES" (EQ (GET 'IL:NEW-FUNCTION 'IL:DATABASE) 'IL:YES))
; Now delete all the files except for the original file for new-function
(MAPCAR #'DELETE-FILE (IL:DIRECTORY '{CORE}))
(IL:CNDIR '{DSK})
(IL:CLRPROMPT)
(SETQ IL:LOADDBFLG 'IL:ASK)
TEST-SUCCEEDED
)
STOP