1
require("import") -- the import fn
2
import("overload_template_fast") -- import code
3
for k,v in pairs(overload_template_fast) do _G[k]=v end -- move to global
5
-- lua has only one numeric type, so max(int,int) and max(double,double) are the same
6
-- whichever one was wrapper first will be used (which is int)
13
assert(mix1("hi") == 101)
14
assert(mix1(1.0, 1.0) == 102)
15
assert(mix1(1.0) == 103)
18
assert(mix2("hi") == 101)
19
assert(mix2(1.0, 1.0) == 102)
20
assert(mix2(1.0) == 103)
23
assert(mix3("hi") == 101)
24
assert(mix3(1.0, 1.0) == 102)
25
assert(mix3(1.0) == 103)
28
assert(overtparams1(100) == 10)
29
assert(overtparams1(100.0, 100) == 20)
32
assert(overtparams2(100.0, 100) == 40)
35
assert(overloaded() == 60)
36
assert(overloaded(100.0, 100) == 70)
39
assert(overloadedagain("hello") == 80)
40
assert(overloadedagain() == 90)
43
assert(specialization(10) == 202 or specialization(10.0) == 203) -- only one works
44
assert(specialization(10, 10) == 204 or specialization(10.0, 10.0) == 205) -- ditto
45
assert(specialization("hi", "hi") == 201)
47
-- simple specialization
52
-- a bit of everything
53
assert(overload("hi") == 0)
54
assert(overload(1) == 10)
55
assert(overload(1, 1) == 20)
56
assert(overload(1, "hello") == 30)
59
assert(overload(k) == 10)
60
assert(overload(k, k) == 20)
61
assert(overload(k, "hello") == 30)
62
-- this one is incorrect: it mactches overload(10.0, "hi") with int overload(T t, const char *c)
63
--print(overload(10.0, "hi"))
64
--assert(overload(10.0, "hi") == 40)
65
assert(overload() == 50)
67
-- everything put in a namespace
68
assert(nsoverload("hi") == 1000,"nsoverload()")
69
assert(nsoverload(1) == 1010,"nsoverload(int t)")
70
assert(nsoverload(1, 1) == 1020,"nsoverload(int t, const int &)")
71
assert(nsoverload(1, "hello") == 1030,"nsoverload(int t, const char *)")
72
assert(nsoverload(k) == 1010,"nsoverload(Klass t)")
73
assert(nsoverload(k, k) == 1020,"nsoverload(Klass t, const Klass &)")
74
assert(nsoverload(k, "hello") == 1030,"nsoverload(Klass t, const char *)")
75
-- again this one fails
76
--assert(nsoverload(10.0, "hi") == 1040,"nsoverload(double t, const char *)")
77
assert(nsoverload() == 1050,"nsoverload(const char *)")