/Lib/ctypes/test/test_find.py
http://unladen-swallow.googlecode.com/ · Python · 82 lines · 49 code · 11 blank · 22 comment · 20 complexity · 72dee0b10271e3c841383a9d5c21b8f4 MD5 · raw file
- import unittest
- import sys
- from ctypes import *
- from ctypes.util import find_library
- from ctypes.test import is_resource_enabled
- if sys.platform == "win32":
- lib_gl = find_library("OpenGL32")
- lib_glu = find_library("Glu32")
- lib_gle = None
- elif sys.platform == "darwin":
- lib_gl = lib_glu = find_library("OpenGL")
- lib_gle = None
- else:
- lib_gl = find_library("GL")
- lib_glu = find_library("GLU")
- lib_gle = find_library("gle")
- ## print, for debugging
- if is_resource_enabled("printing"):
- if lib_gl or lib_glu or lib_gle:
- print "OpenGL libraries:"
- for item in (("GL", lib_gl),
- ("GLU", lib_glu),
- ("gle", lib_gle)):
- print "\t", item
- # On some systems, loading the OpenGL libraries needs the RTLD_GLOBAL mode.
- class Test_OpenGL_libs(unittest.TestCase):
- def setUp(self):
- self.gl = self.glu = self.gle = None
- if lib_gl:
- self.gl = CDLL(lib_gl, mode=RTLD_GLOBAL)
- if lib_glu:
- self.glu = CDLL(lib_glu, RTLD_GLOBAL)
- if lib_gle:
- try:
- self.gle = CDLL(lib_gle)
- except OSError:
- pass
- if lib_gl:
- def test_gl(self):
- if self.gl:
- self.gl.glClearIndex
- if lib_glu:
- def test_glu(self):
- if self.glu:
- self.glu.gluBeginCurve
- if lib_gle:
- def test_gle(self):
- if self.gle:
- self.gle.gleGetJoinStyle
- ##if os.name == "posix" and sys.platform != "darwin":
- ## # On platforms where the default shared library suffix is '.so',
- ## # at least some libraries can be loaded as attributes of the cdll
- ## # object, since ctypes now tries loading the lib again
- ## # with '.so' appended of the first try fails.
- ## #
- ## # Won't work for libc, unfortunately. OTOH, it isn't
- ## # needed for libc since this is already mapped into the current
- ## # process (?)
- ## #
- ## # On MAC OSX, it won't work either, because dlopen() needs a full path,
- ## # and the default suffix is either none or '.dylib'.
- ## class LoadLibs(unittest.TestCase):
- ## def test_libm(self):
- ## import math
- ## libm = cdll.libm
- ## sqrt = libm.sqrt
- ## sqrt.argtypes = (c_double,)
- ## sqrt.restype = c_double
- ## self.failUnlessEqual(sqrt(2), math.sqrt(2))
- if __name__ == "__main__":
- unittest.main()