From: <wsf...@us...> - 2012-12-08 10:37:11
|
Revision: 13950 http://swig.svn.sourceforge.net/swig/?rev=13950&view=rev Author: wsfulton Date: 2012-12-08 10:37:04 +0000 (Sat, 08 Dec 2012) Log Message: ----------- Add runtime test for %implicitconv Modified Paths: -------------- trunk/Examples/test-suite/implicittest.i Added Paths: ----------- trunk/Examples/test-suite/python/implicittest_runme.py Modified: trunk/Examples/test-suite/implicittest.i =================================================================== --- trunk/Examples/test-suite/implicittest.i 2012-12-07 07:38:24 UTC (rev 13949) +++ trunk/Examples/test-suite/implicittest.i 2012-12-08 10:37:04 UTC (rev 13950) @@ -18,7 +18,6 @@ explicit A(char *s) { ii = 4; } int get() const { return ii; } - }; int get(const A& a) { return a.ii; } @@ -33,7 +32,7 @@ explicit A_T(char *s) { ii = 4; } int get() const { return ii; } - + static int sget(const A_T& a) { return a.ii; } }; } Added: trunk/Examples/test-suite/python/implicittest_runme.py =================================================================== --- trunk/Examples/test-suite/python/implicittest_runme.py (rev 0) +++ trunk/Examples/test-suite/python/implicittest_runme.py 2012-12-08 10:37:04 UTC (rev 13950) @@ -0,0 +1,73 @@ +from implicittest import * + +def check(a, b): + if a != b: + raise RuntimeError(str(a) + " does not equal " + str(b)) + +#### Class #### + +# No implicit conversion +check(1, A(1).get()) +check(2, A(1.0).get()) +check(3, A(B()).get()) +check(4, A("hello").get()) + +check(1, get(1)) +check(2, get(1.0)) +check(3, get(B())) + +# Explicit constructor: +try: + check(4, get("hello")) + raise RuntimeError +except TypeError: + pass + +#### Template Class #### + +# No implicit conversion +check(1, A_int(1).get()) +check(2, A_int(1.0).get()) +check(3, A_int(B()).get()) +check(4, A_int("hello").get()) + +check(1, A_int.sget(1)) +check(2, A_int.sget(1.0)) +check(3, A_int.sget(B())) + +# explicit constructor: +try: + check(4, A_int.sget("hello")) + raise RuntimeError +except TypeError: + pass + +#### Global variable assignment #### + +cvar.foo = Foo(1); check(cvar.foo.ii, 1) +cvar.foo = 1; check(cvar.foo.ii, 1) +cvar.foo = 1.0; check(cvar.foo.ii, 2) +cvar.foo = Foo("hello"); check(cvar.foo.ii, 3) + +# explicit constructor: +try: + cvar.foo = "hello" + raise RuntimeError +except TypeError: + pass + +#### Member variable assignment #### +# Note: also needs naturalvar + +b = Bar(); check(b.f.ii, 0) +b.f = Foo("hello"); check(b.f.ii, 3) +b.f = 1; check(b.f.ii, 1) +b.f = 1.0; check(b.f.ii, 2) + +# explicit constructor: +try: + b.f = "hello" + raise RuntimeError +except TypeError: + pass + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |