| # do not dump Octave core |
| if exist("crash_dumps_octave_core", "builtin") |
| crash_dumps_octave_core(0); |
| endif |
| |
| 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); |
| |