import director_abstract

class MyFoo(director_abstract.Foo):
	def __init__(self):
		director_abstract.Foo.__init__(self)
	def ping(self):
		return "MyFoo::ping()"


a = MyFoo()

if a.ping() != "MyFoo::ping()":
	raise RuntimeError, a.ping()

if a.pong() != "Foo::pong();MyFoo::ping()":
	raise RuntimeError, a.pong()


class MyExample1(director_abstract.Example1):
	def Color(self, r, g, b):
		return r

class MyExample2(director_abstract.Example2):
	def Color(self, r, g, b):
		return g

class MyExample3(director_abstract.Example3_i):
	def Color(self, r, g, b):
		return b

me1 = MyExample1()
if director_abstract.Example1_get_color(me1, 1,2,3) != 1:
	raise RuntimeError

me2 = MyExample2(1,2)
if MyExample2.get_color(me2, 1,2,3) != 2:
	raise RuntimeError

me3 = MyExample3()
if MyExample3.get_color(me3, 1,2,3) != 3:
	raise RuntimeError

error = 1
try:
	me1 = director_abstract.Example1()
except:
	error = 0
if (error): raise RuntimeError

error = 1
try:
	me2 = director_abstract.Example2()
except:
	error = 0
if (error): raise RuntimeError

error = 1
try:
	me3 = director_abstract.Example3_i()
except:
	error = 0
if (error): raise RuntimeError


try:
	f = director_abstract.A.f
except:
	raise RuntimeError
