from smart_pointer_overload import * f = Foo() b = Bar(f) if f.test(3) != 1: raise RuntimeError if f.test(3.5) != 2: raise RuntimeError if f.test("hello") != 3: raise RuntimeError if b.test(3) != 1: raise RuntimeError if b.test(3.5) != 2: raise RuntimeError if b.test("hello") != 3: raise RuntimeError