146 lines
5.3 KiB
Plaintext
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
|
|
|
|
|
|
|
|
|