This repository has been archived on 2023-10-09. You can view files and clone it, but cannot push or open issues or pull requests.
Files
blender-archive/source/blender/python/api2_2x/doc/testcamera.py
Willian Padovani Germano 06ee04fb05 * Added more doc files for epydoc and a test for the camera module.
* Moved public declarations in camera and lamp to a new file: bpy_types.h.
* Fixed minor bugs in material, rgbTuple and Lamp + other minor changes.
* Made part of the changes to conform to decided naming conventions.
2003-06-24 07:21:17 +00:00

138 lines
4.0 KiB
Python

# Blender.Camera module and Camera PyType test file
# This also works with Lamp and Material, simply uncomment the right
# line below
MODULE = "Camera"
#MODULE = "Lamp"
#MODULE = "Material"
BPY_OBJECT = MODULE
LONG_STRING = "Supercalifragilisticspialidous"
import types, sys
import Blender
exec ("from Blender import %s" % MODULE)
def PRINT_HEADER(header, sep):
print "\n", sep * 79
print header
print sep * 79
def PRINT_UNDERLINED(str):
print "\n", str
print "-" * len(str)
def PRINT_AND_RM(arg, branch, d):
for a in arg:
if a in d:
d.remove(a)
print "\n%s.%s:" % (branch, a),
exec("print %s.%s" % (branch, a))
PRINT_HEADER("Testing the Blender.%s module" % MODULE, '=')
exec ("Module_dir = dir (%s)" % MODULE)
print "\ndir (%s):" % MODULE
print Module_dir
PRINT_AND_RM (["__name__", "__doc__"], MODULE, Module_dir)
for item in Module_dir:
hooked = 0
branch = "%s.%s" % (MODULE, item)
PRINT_HEADER(branch, "-")
exec ("item_type = type (%s)" % branch)
print item_type
exec ("sub_dir = dir(%s)" % branch)
PRINT_AND_RM (["__name__", "__doc__"], branch, sub_dir)
if item_type == types.BuiltinFunctionType:
PRINT_UNDERLINED ("Executing %s:" % branch)
exec ("result = %s()" % branch)
print "Returned value is: ", result
if item in ["Get", "get"] and not hooked:
if len(result):
obj = result[0]
hooked = 1
if hooked:
PRINT_HEADER(obj, "=")
exec ("obj_dir = dir(obj)")
print "\ndir():"
print obj_dir
methods = []
member_vars = []
for item in obj_dir:
exec ("item_type = type (obj.%s)" % item)
if item_type == types.BuiltinMethodType:
methods.append(item)
else:
member_vars.append(item)
PRINT_HEADER("%s Methods" % BPY_OBJECT, '-')
if methods: print methods
else: print "XXX No methods found in %s" % BPY_OBJECT
PRINT_HEADER("%s Member Variables" % BPY_OBJECT, '-')
if member_vars:
for m in member_vars:
PRINT_UNDERLINED(m)
exec ("mvalue = obj.%s" % m)
exec ("mtype = type (obj.%s)" % m)
mtype = str(mtype).split("'")[1]
print "%s: %s" % (mtype, mvalue)
M = m[0].upper() + m[1:]
setM = "set%s" % M
getM = "get%s" % M
if setM in methods:
print "There is a .%s() method." % setM
methods.remove(setM)
if mtype == 'str':
try:
print "Trying to set string to %s" % LONG_STRING
exec("obj.%s('%s')" % (setM, LONG_STRING))
exec("get_str = obj.%s()" % getM)
print "It returned:", get_str
len_str = len(get_str)
if len_str < 100:
print "It correctly clamped the string to %s chars." % len_str
except:
PRINT_HEADER("FAILED in .%s()" % setM, "X")
print sys.exc_info()[0]
elif mtype == 'float':
try:
exec("obj.%s(%d)" % (setM, -999999))
exec("result = obj.%s()" % getM)
print "%s's minimum value is %f" % (m, result)
exec("obj.%s(%d)" % (setM, 999999))
exec("result = obj.%s()" % getM)
print "%s's maximum value is %f" % (m, result)
except:
PRINT_HEADER("FAILED in %s or %s" % (setM, getM), "X")
print sys.exc_info()[0]
elif mtype == 'int':
try:
dict = M+"s"
if dict in member_vars:
exec("key = obj.%s.keys()[1]" % dict)
exec("obj.%s('%s')" % (setM, key))
exec("result = obj.%s()" % getM)
except:
PRINT_HEADER("FAILED in %s or %s" % (setM, getM), "X")
print sys.exc_info()[0]
if getM in methods:
print "There is a .%s() method." % getM,
methods.remove(getM)
exec("result = obj.%s()" % getM)
print "It returned:", result
else: print "XXX No member variables found in %s" % BPY_OBJECT
else: # the module .Get() function found nothing
PRINT_HEADER("Failed trying to %s.Get() a %s object"
% (MODULE, BPY_OBJECT), 'X')