Monday, November 08, 2010 at 12:02 AM.
system.verbs.apps.uBASE.examples.stressBase
<<a script to try out all the features of uBASE as they go in
local (ubasefolder, fnum);
bundle { <<start up uBASE, create a new file, add its fields
<<ubase.launch ()
ubasefolder = file.folderFromPath (ubase.appinfo.path);
fnum = ubase.newFile (ubasefolder + "Stress Database");
ubase.bringToFront (); <<so we can watch the records being added
ubase.addField (fnum, 'bool', booleanType);
ubase.addField (fnum, 'long', longType);
ubase.addField (fnum, 'date', dateType);
ubase.addField (fnum, 'stri', stringType);
ubase.addField (fnum, 'doub', doubleType);
ubase.addField (fnum, 'bina', binaryType)};
on addRandomRecord () {
local (holder, result, key);
new (tableType, @holder);
holder.bool = boolean (random (0, 1));
holder.long = random (0, infinity);
holder.date = date (random (0, infinity));
holder.stri = states.nthState (random (1, 50));
holder.doub = double (random (0, infinity));
pack (suites.commercial.installApp, @holder.bina);
key = states.nthState (random (1, 50));
ubase.addRecord (fnum, key, @holder);
ubase.lookupRecord (fnum, key, @result);
bundle { <<check the fields, see that everything worked
if holder.bool != result.bool || holder.bool != uBASE.getField (fnum, key, 'bool') {
scriptError (holder.bool + " should equal " + result.bool + " for " + key + ".")};
if holder.long != result.long || holder.long != uBASE.getField (fnum, key, 'long') {
scriptError (holder.long + " should equal " + result.long + " for " + key + ".")};
if holder.date != result.date || holder.date != uBASE.getField (fnum, key, 'date') {
scriptError (holder.date + " should equal " + (result.date) + " for " + key + ".")};
if holder.stri != result.stri || holder.stri != uBASE.getField (fnum, key, 'stri') {
scriptError (holder.stri + " should equal " + result.stri + " for " + key + ".")};
if abs (holder.doub - result.doub) > 0.0000001 { <<account for imprecision in floating compares
scriptError (holder.doub + " should equal " + result.doub + " for " + key + ".")};
if abs (holder.doub - uBASE.getField (fnum, key, 'doub')) > 0.0000001 {
scriptError (holder.doub + " should equal " + result.doub + " for " + key + ".")};
if holder.bina != result.bina || holder.bina != uBASE.getField (fnum, key, 'bina') {
scriptError ("the binary object does not compare equal for " + key + ".")}};
msg ("Added " + key + ".");
rollBeachball ()};
local (i);
for i = 1 to 100 {
addRandomRecord ()};
ubase.closeFile (fnum)
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.