Fix Python default argument handing broken since swig-3.0.3
Default values are no longer generated as Python code by default. They must be explicitly turned on using the "python:defaultargs" feature. Closes #294 Closes #296 The problems in these two issues when "python:defaultargs" is turned on still need to be fixed and should be addressed in separate patches. The important thing is the default code generation is now fixed.
This commit is contained in:
parent
34787ab98e
commit
38ba81811e
8 changed files with 139 additions and 69 deletions
|
|
@ -58,6 +58,7 @@ CPP_TEST_CASES += \
|
|||
primitive_types \
|
||||
python_abstractbase \
|
||||
python_append \
|
||||
python_default_args \
|
||||
python_director \
|
||||
python_nondynamic \
|
||||
python_overload_simple_cast \
|
||||
|
|
|
|||
|
|
@ -1,67 +1,91 @@
|
|||
import default_args
|
||||
# Note that this test is also used by python_default_args_runme.py hence the use of __main__ and the run function
|
||||
|
||||
ec = default_args.EnumClass()
|
||||
if not ec.blah():
|
||||
raise RuntimeError,"EnumClass::blah() default arguments don't work"
|
||||
def run(module_name):
|
||||
default_args = __import__(module_name)
|
||||
print "running...."
|
||||
ec = default_args.EnumClass()
|
||||
if not ec.blah():
|
||||
raise RuntimeError,"EnumClass::blah() default arguments don't work"
|
||||
|
||||
if default_args.Statics_staticMethod() != 60:
|
||||
raise RuntimeError
|
||||
|
||||
if default_args.cfunc1(1) != 2:
|
||||
raise RuntimeError
|
||||
de = default_args.DerivedEnumClass()
|
||||
de.accelerate()
|
||||
de.accelerate(default_args.EnumClass.SLOW)
|
||||
|
||||
if default_args.cfunc2(1) != 3:
|
||||
raise RuntimeError
|
||||
if default_args.Statics_staticMethod() != 60:
|
||||
raise RuntimeError
|
||||
|
||||
if default_args.cfunc3(1) != 4:
|
||||
raise RuntimeError
|
||||
if default_args.cfunc1(1) != 2:
|
||||
raise RuntimeError
|
||||
|
||||
if default_args.cfunc2(1) != 3:
|
||||
raise RuntimeError
|
||||
|
||||
if default_args.cfunc3(1) != 4:
|
||||
raise RuntimeError
|
||||
|
||||
|
||||
f = default_args.Foo()
|
||||
f = default_args.Foo()
|
||||
|
||||
f.newname()
|
||||
f.newname(1)
|
||||
f.newname()
|
||||
f.newname(1)
|
||||
|
||||
|
||||
try:
|
||||
f = default_args.Foo(1)
|
||||
error = 1
|
||||
except:
|
||||
error = 0
|
||||
if error: raise RuntimeError,"Foo::Foo ignore is not working"
|
||||
try:
|
||||
f = default_args.Foo(1)
|
||||
error = 1
|
||||
except:
|
||||
error = 0
|
||||
if error: raise RuntimeError,"Foo::Foo ignore is not working"
|
||||
|
||||
try:
|
||||
f = default_args.Foo(1,2)
|
||||
error = 1
|
||||
except:
|
||||
error = 0
|
||||
if error: raise RuntimeError,"Foo::Foo ignore is not working"
|
||||
try:
|
||||
f = default_args.Foo(1,2)
|
||||
error = 1
|
||||
except:
|
||||
error = 0
|
||||
if error: raise RuntimeError,"Foo::Foo ignore is not working"
|
||||
|
||||
try:
|
||||
f = default_args.Foo(1,2,3)
|
||||
error = 1
|
||||
except:
|
||||
error = 0
|
||||
if error: raise RuntimeError,"Foo::Foo ignore is not working"
|
||||
try:
|
||||
f = default_args.Foo(1,2,3)
|
||||
error = 1
|
||||
except:
|
||||
error = 0
|
||||
if error: raise RuntimeError,"Foo::Foo ignore is not working"
|
||||
|
||||
try:
|
||||
m = f.meth(1)
|
||||
error = 1
|
||||
except:
|
||||
error = 0
|
||||
if error: raise RuntimeError,"Foo::meth ignore is not working"
|
||||
try:
|
||||
m = f.meth(1)
|
||||
error = 1
|
||||
except:
|
||||
error = 0
|
||||
if error: raise RuntimeError,"Foo::meth ignore is not working"
|
||||
|
||||
try:
|
||||
m = f.meth(1,2)
|
||||
error = 1
|
||||
except:
|
||||
error = 0
|
||||
if error: raise RuntimeError,"Foo::meth ignore is not working"
|
||||
try:
|
||||
m = f.meth(1,2)
|
||||
error = 1
|
||||
except:
|
||||
error = 0
|
||||
if error: raise RuntimeError,"Foo::meth ignore is not working"
|
||||
|
||||
try:
|
||||
m = f.meth(1,2,3)
|
||||
error = 1
|
||||
except:
|
||||
error = 0
|
||||
if error: raise RuntimeError,"Foo::meth ignore is not working"
|
||||
try:
|
||||
m = f.meth(1,2,3)
|
||||
error = 1
|
||||
except:
|
||||
error = 0
|
||||
if error: raise RuntimeError,"Foo::meth ignore is not working"
|
||||
|
||||
if default_args.Klass.inc(100, default_args.Klass(22)).val != 122:
|
||||
raise RuntimeError, "Klass::inc failed"
|
||||
|
||||
if default_args.Klass.inc(100).val != 99:
|
||||
raise RuntimeError, "Klass::inc failed"
|
||||
|
||||
if default_args.Klass.inc().val != 0:
|
||||
raise RuntimeError, "Klass::inc failed"
|
||||
|
||||
default_args.trickyvalue1(10); default_args.trickyvalue1(10, 10)
|
||||
default_args.trickyvalue2(10); default_args.trickyvalue2(10, 10)
|
||||
default_args.trickyvalue3(10); default_args.trickyvalue3(10, 10)
|
||||
default_args.seek(); default_args.seek(10)
|
||||
|
||||
if __name__=="__main__":
|
||||
run('default_args')
|
||||
|
||||
|
|
|
|||
3
Examples/test-suite/python/python_default_args_runme.py
Normal file
3
Examples/test-suite/python/python_default_args_runme.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# Test %feature("python:defaultargs") using the test code in default_args_runme.py (which does not use the feature)
|
||||
import default_args_runme
|
||||
default_args_runme.run('python_default_args')
|
||||
Loading…
Add table
Add a link
Reference in a new issue