summaryrefslogtreecommitdiff
path: root/Examples/test-suite/octave/overload_simple_cast_runme.m
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2009-08-18 20:56:02 +0000
committerLorry <lorry@roadtrain.codethink.co.uk>2012-09-25 16:59:08 +0000
commit9f8a09ed743cedd9547bf0661d518647966ab114 (patch)
tree9c7803d3b27a8ec22e91792ac7f7932efa128b20 /Examples/test-suite/octave/overload_simple_cast_runme.m
downloadswig-tarball-master.tar.gz
Imported from /srv/lorry/lorry-area/swig-tarball/swig-1.3.40.tar.gz.HEADswig-1.3.40master
Diffstat (limited to 'Examples/test-suite/octave/overload_simple_cast_runme.m')
-rw-r--r--Examples/test-suite/octave/overload_simple_cast_runme.m229
1 files changed, 229 insertions, 0 deletions
diff --git a/Examples/test-suite/octave/overload_simple_cast_runme.m b/Examples/test-suite/octave/overload_simple_cast_runme.m
new file mode 100644
index 0000000..65bc422
--- /dev/null
+++ b/Examples/test-suite/octave/overload_simple_cast_runme.m
@@ -0,0 +1,229 @@
+overload_simple_cast
+
+Ai=@(x) subclass('x',x,'__int',@(self) self.x);
+Ad=@(x) subclass('x',x,'__float',@(self) self.x);
+
+ai = Ai(4);
+
+ad = Ad(5.0);
+add = Ad(5.5);
+
+try
+ fint(add);
+ good = 0;
+catch
+ good = 1;
+end_try_catch
+
+if (!good)
+ error("fint(int)")
+endif
+
+
+if (!strcmp(fint(ad),"fint:int"))
+ error("fint(int)")
+endif
+
+if (!strcmp(fdouble(ad),"fdouble:double"))
+ error("fdouble(double)")
+endif
+
+if (!strcmp(fint(ai),"fint:int"))
+ error("fint(int)")
+endif
+
+if (!strcmp(fint(5.0),"fint:int"))
+ error("fint(int)")
+endif
+
+if (!strcmp(fint(3),"fint:int"))
+ error("fint(int)")
+endif
+if (!strcmp(fint(3.0),"fint:int"))
+ error("fint(int)")
+endif
+
+if (!strcmp(fdouble(ad),"fdouble:double"))
+ error("fdouble(double)")
+endif
+if (!strcmp(fdouble(3),f"fdouble:double"))
+ error("fdouble(double)")
+endif
+if (!strcmp(fdouble(3.0),"fdouble:double"))
+ error("fdouble(double)")
+endif
+
+if (!strcmp(fid(3,3.0),"fid:intdouble"))
+ error("fid:intdouble")
+endif
+
+if (!strcmp(fid(3.0,3),"fid:doubleint"))
+ error("fid:doubleint")
+endif
+
+if (!strcmp(fid(ad,ai),"fid:doubleint"))
+ error("fid:doubleint")
+endif
+
+if (!strcmp(fid(ai,ad),"fid:intdouble"))
+ error("fid:intdouble")
+endif
+
+
+
+if (!strcmp(foo(3),"foo:int"))
+ error("foo(int)")
+endif
+
+if (!strcmp(foo(3.0),"foo:double"))
+ error("foo(double)")
+endif
+
+if (!strcmp(foo("hello"),"foo:char *"))
+ error("foo(char *)")
+endif
+
+f = Foo();
+b = Bar();
+
+if (!strcmp(foo(f),"foo:Foo *"))
+ error("foo(Foo *)")
+endif
+
+if (!strcmp(foo(b),"foo:Bar *"))
+ error("foo(Bar *)")
+endif
+
+v = malloc_void(32);
+
+if (!strcmp(foo(v),"foo:void *"))
+ error("foo(void *)")
+endif
+
+s = Spam();
+
+if (!strcmp(s.foo(3),"foo:int"))
+ error("Spam::foo(int)")
+endif
+
+if (!strcmp(s.foo(3.0),"foo:double"))
+ error("Spam::foo(double)")
+endif
+
+if (!strcmp(s.foo("hello"),"foo:char *"))
+ error("Spam::foo(char *)")
+endif
+
+if (!strcmp(s.foo(f),"foo:Foo *"))
+ error("Spam::foo(Foo *)")
+endif
+
+if (!strcmp(s.foo(b),"foo:Bar *"))
+ error("Spam::foo(Bar *)")
+endif
+
+if (!strcmp(s.foo(v),"foo:void *"))
+ error("Spam::foo(void *)")
+endif
+
+if (!strcmp(Spam_bar(3),"bar:int"))
+ error("Spam::bar(int)")
+endif
+
+if (!strcmp(Spam_bar(3.0),"bar:double"))
+ error("Spam::bar(double)")
+endif
+
+if (!strcmp(Spam_bar("hello"),"bar:char *"))
+ error("Spam::bar(char *)")
+endif
+
+if (!strcmp(Spam_bar(f),"bar:Foo *"))
+ error("Spam::bar(Foo *)")
+endif
+
+if (!strcmp(Spam_bar(b),"bar:Bar *"))
+ error("Spam::bar(Bar *)")
+endif
+
+if (!strcmp(Spam_bar(v),"bar:void *"))
+ error("Spam::bar(void *)")
+endif
+
+# Test constructors
+
+s = Spam();
+if (!strcmp(s.type,"none"))
+ error("Spam()")
+endif
+
+s = Spam(3);
+if (!strcmp(s.type,"int"))
+ error("Spam(int)")
+endif
+
+s = Spam(3.4);
+if (!strcmp(s.type,"double"))
+ error("Spam(double)")
+endif
+
+s = Spam("hello");
+if (!strcmp(s.type,"char *"))
+ error("Spam(char *)")
+endif
+
+s = Spam(f);
+if (!strcmp(s.type,"Foo *"))
+ error("Spam(Foo *)")
+endif
+
+s = Spam(b);
+if (!strcmp(s.type,"Bar *"))
+ error("Spam(Bar *)")
+endif
+
+s = Spam(v);
+if (!strcmp(s.type,"void *"))
+ error("Spam(void *)")
+endif
+
+
+# unsigned long long
+ullmax = 9223372036854775807; #0xffffffffffffffff
+ullmaxd = 9007199254740992.0;
+ullmin = 0;
+ullmind = 0.0;
+if (ull(ullmin) != ullmin)
+ error("ull(ullmin)")
+endif
+if (ull(ullmax) != ullmax)
+ error("ull(ullmax)")
+endif
+if (ull(ullmind) != ullmind)
+ error("ull(ullmind)")
+endif
+if (ull(ullmaxd) != ullmaxd)
+ error("ull(ullmaxd)")
+endif
+
+# long long
+llmax = 9223372036854775807; #0x7fffffffffffffff
+llmin = -9223372036854775808;
+# these are near the largest floats we can still convert into long long
+llmaxd = 9007199254740992.0;
+llmind = -9007199254740992.0;
+if (ll(llmin) != llmin)
+ error("ll(llmin)")
+endif
+if (ll(llmax) != llmax)
+ error("ll(llmax)")
+endif
+if (ll(llmind) != llmind)
+ error("ll(llmind)")
+endif
+if (ll(llmaxd) != llmaxd)
+ error("ll(llmaxd)")
+endif
+
+free_void(v);
+