- #!/usr/bin/env python
- # Copyright (c) 2003-2004 TundraWare Inc. All Rights Reserved.
-
- PROGNAME = "tconfpy Test Driver"
- RCSID = "$Id: test-tc.py,v 1.118 2004/03/21 13:50:56 tundra Exp $"
- VERSION = RCSID.split()[2]
-
- # Copyright Information
-
- CPRT = chr(169)
- DATE = "2004"
- OWNER = "TundraWare Inc."
- RIGHTS = "All Rights Reserved"
- COPYRIGHT = "Copyright %s %s %s, %s." % (CPRT, DATE, OWNER, RIGHTS)
- PROGINFO = PROGNAME + " " + VERSION
- BANNER = "%s\n%s\n%s\n" % (PROGINFO, COPYRIGHT, RCSID)
-
- import tconfpy
- import sys
-
- # Translate booleans into equivalent writeable state
-
- TF = {True:"RW", False:"RO"}
-
-
- ##########
- # Format and return contents of a symbol table entry
- ##########
-
-
- def dumpsymbol(val, d):
-
- retval = str(val) + " " * (15 - len(val))
-
- for v, p in ((d.Value, 12),
- (TF[d.Writeable], 2),
- (str(d.Type).split()[1][1:-2], 7),
- (d.Default, 8),
- (d.LegalVals, 8),
- (d.Min, 8),
- (d.Max, 8)):
-
- retval += str(v) + (p - len(str(v)) + 2) * ' '
-
- return retval
-
- # End of 'dumpsymbol()'
-
- ##########
- # Routine to dump returned values
- ##########
-
-
- def dumpreturn(name, data, isdict=False):
-
- print name
- print len(name) * '=' + '\n'
-
-
- items = data
- if isdict:
- items = data.keys()
- items.sort()
-
- for val in items:
- if isdict:
- print dumpsymbol(val, data[val])
- else:
- print val
-
- print '\n'
-
-
- # End of 'dumpreturn()'
-
-
- #---------------------------------------------------------------------------#
-
- ##########
- # Beginning of test driver
- ##########
-
- files = 1
-
- syms = {"foo" : 1,
- "fox" : 1.0,
- "bar" : "stringy",
- "baz" : 4+5j,
- "boo" : True
- }
-
- symtbl = {}
-
- for sym in syms:
-
- # Create and init the descriptor
-
- d = tconfpy.VarDescriptor()
- d.Value = syms[sym]
- d.Type = type(syms[sym])
-
- # Set default value according to type
-
- for typ in ((tconfpy.TYPE_BOOL, True), (tconfpy.TYPE_COMPLEX, 0+0j),
- (tconfpy.TYPE_FLOAT, 0.00), (tconfpy.TYPE_INT, 0),
- (tconfpy.TYPE_STRING, "")):
-
- if typ[0] == d.Type:
- d.Default = typ[1]
-
- # Load the table with this entry
- symtbl[sym] = d
-
- symtbl["fox"].Writeable = False
-
-
-
- # Here's a way to inherit the base symbol definition from
- # the module and then derive a new object type for your
- # own convenience
-
- class mycmplx(tconfpy.VarDescriptor):
- def __init__(self):
- tconfpy.VarDescriptor.__init__(self)
- self.Value = 2-2j
- self.Default = 39-4j
- self.Type = tconfpy.TYPE_COMPLEX
-
- # Instantiate some of these
- mc1 = mycmplx()
- mc2 = mycmplx()
-
- mc2.Value = 8-3.14159j
- mc2.Writeable = False
-
- # And stuff them into the symbol table
- symtbl["MyComplex1"] = mc1
- symtbl["MyComplex2"] = mc2
-
-
- # Make sure we got legit arguments
-
- if len(sys.argv) < 2:
- print BANNER
- print "Usage: test-tc.py [debug] [litvars] file file ..."
- sys.exit(1)
-
- # Process all the requested configuration files,
- # dumping the what tconfpy returns for each one.
-
- DEBUG = False
- LITVARS = False
-
- for fn in sys.argv[files:]:
-
- # Handle inline options
-
- if fn == "debug":
- DEBUG = True
-
- elif fn == "litvars":
- LITVARS = True
-
- # Everything else presumed to be a configuration file
- else:
-
- retval = tconfpy.ParseConfig(fn, symtbl, Debug=DEBUG, LiteralVars=LITVARS)
-
- if retval[1]:
- print "Errors Were Found In '%s'!" % fn
- else:
- print "No Errors Found In '%s'!" % fn
-
- print
-
- dumpreturn("SYMBOL TABLE", retval[0], isdict=True)
- dumpreturn("ERRORS", retval[1])
- dumpreturn("WARNINGS", retval[2])
- dumpreturn("DEBUG", retval[3])
- dumpreturn("LITERAL LINES", retval[4])
-
-
-
-