The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
import perl
#if perl.MULTI_PERL:
#	print "1..0"
#	raise SystemExit

print "1..6"

perl.eval("use lib 't'")     # good when running from ..
perl.eval("use TestClass")

obj = perl.callm("new", "TestClass")

print obj
print type(obj)
print repr(obj)

# Test plain method calls

if obj.foo(42) != None: print "not",
print "ok 1"

if obj.foo() != 42: print "not",
print "ok 2"

my_dict = {}
obj.foo(my_dict)

if obj.foo() is not my_dict: print "not",
print "ok 3"

obj.foo(obj.newhash("key", 42))
try:
	obj.dump()
except perl.PerlError, v:
	print v

if int(obj.hash_deref(obj.foo(), "key")) != 42: print "not",
print "ok 4"

# calling in scalar/array context
print obj.localtime()
print obj.localtime_tuple()
print "----"

# callin back to python
class Foo:
	def foo(self, a):
		print "method foo called with argument", a
		return 12/a
	pass

p_obj = Foo()
x = obj.callback(p_obj, "foo", 3)
if x != 4: print "not",
print "ok 5"

try:
   obj.callback(p_obj, "foo", 0)
except ZeroDivisionError, v:
   if str(v) != "integer division or modulo": print "not",
   print "ok 6"