%
% Name: adbooktest.dem
% Author: Tim Brecht
% Date: Jan 24, 1996
%
% This program is a driver to test the
% AddressBook class. It makes heavy use
% of assertions, requires no input and
% produces very little output. The goal
% is to write a program that will run
% to completion successfully if and only
% if the underlying implementation of
% the AddressBook class is correct.
import AddressBook
in "adbookar.tu"
var found : boolean
var entered : boolean
var address : string
address := "unknown"
AddressBook.Initialize()
% save nothing
AddressBook.Save()
% load nothing
AddressBook.Load()
% ensure nothing is in the book
AddressBook.LookUp("pig", address, found)
assert(found = false)
% add one entry and look it up
AddressBook.Enter("pig", "pen", entered)
assert(entered = true)
AddressBook.LookUp("pig", address, found)
assert(found = true)
assert(address = "pen")
% delete the only entry and lookup will fail
AddressBook.Delete("pig")
AddressBook.LookUp("pig", address, found)
assert(found = false)
assert(address = "pen")
% add a slightly different version of that entry
AddressBook.Enter("pig", "pig-pen", entered)
assert(entered = true)
AddressBook.LookUp("pig", address, found)
assert(found = true)
assert(address = "pig-pen")
% change the entry and find the new version
AddressBook.Change("pig", "sty")
AddressBook.LookUp("pig", address, found)
assert(found = true)
assert(address = "sty")
% add multiple entries
AddressBook.Enter("bear", "cave", entered)
assert(entered = true)
AddressBook.Enter("dear", "range", entered)
assert(entered = true)
AddressBook.Enter("car", "garage", entered)
assert(entered = true)
AddressBook.Enter("pillow", "bed", entered)
assert(entered = true)
% look them all up
AddressBook.LookUp("pillow", address, found)
assert(found = true)
assert(address = "bed")
AddressBook.LookUp("car", address, found)
assert(found = true)
assert(address = "garage")
AddressBook.LookUp("dear", address, found)
assert(found = true)
assert(address = "range")
AddressBook.LookUp("bear", address, found)
assert(found = true)
assert(address = "cave")
AddressBook.LookUp("pig", address, found)
assert(found = true)
assert(address = "sty")
% save the current state
AddressBook.Save()
% now delete everything
AddressBook.Delete("pig")
AddressBook.Delete("bear")
AddressBook.Delete("dear")
AddressBook.Delete("car")
AddressBook.Delete("pillow")
% ensure that they are not there
address := "unknown"
AddressBook.LookUp("pillow", address, found)
assert(found = false)
assert(address = "unknown")
AddressBook.LookUp("car", address, found)
assert(found = false)
assert(address = "unknown")
AddressBook.LookUp("dear", address, found)
assert(found = false)
assert(address = "unknown")
AddressBook.LookUp("bear", address, found)
assert(found = false)
assert(address = "unknown")
AddressBook.LookUp("pig", address, found)
assert(found = false)
assert(address = "unknown")
% now reload
AddressBook.Load()
% and test that each can be found again
AddressBook.LookUp("pillow", address, found)
assert(found = true)
assert(address = "bed")
AddressBook.LookUp("car", address, found)
assert(found = true)
assert(address = "garage")
AddressBook.LookUp("dear", address, found)
assert(found = true)
assert(address = "range")
AddressBook.LookUp("bear", address, found)
assert(found = true)
assert(address = "cave")
AddressBook.LookUp("pig", address, found)
assert(found = true)
assert(address = "sty")
% now change everything
AddressBook.Change("pig", "barn")
AddressBook.Change("bear", "den")
AddressBook.Change("dear", "meadow")
AddressBook.Change("car", "street")
AddressBook.Change("pillow", "floor")
% and test that each can be found again
AddressBook.LookUp("pillow", address, found)
assert(found = true)
assert(address = "floor")
AddressBook.LookUp("car", address, found)
assert(found = true)
assert(address = "street")
AddressBook.LookUp("dear", address, found)
assert(found = true)
assert(address = "meadow")
AddressBook.LookUp("bear", address, found)
assert(found = true)
assert(address = "den")
AddressBook.LookUp("pig", address, found)
assert(found = true)
assert(address = "barn")
put "Test completed successfully"
AddressBook.Finalize()