~ubuntu-branches/ubuntu/hardy/swig1.3/hardy

« back to all changes in this revision

Viewing changes to Examples/test-suite/lua/operator_overload_runme.lua

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-12-05 01:16:04 UTC
  • mfrom: (1.2.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20051205011604-ygx904it6413k3go
Tags: 1.3.27-1ubuntu1
Resynchronise with Debian again, for the new subversion packages.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
-- demo of lua swig capacilities (operator overloading)
 
2
require("import")       -- the import fn
 
3
import("operator_overload")     -- import lib
 
4
 
 
5
for k,v in pairs(operator_overload) do _G[k]=v end -- move to global
 
6
 
 
7
-- catching undefined variables
 
8
setmetatable(getfenv(),{__index=function (t,i) error("undefined global variable `"..i.."'",2) end})
 
9
 
 
10
-- test routine:
 
11
a=Op()
 
12
b=Op(5)
 
13
c=Op(b) -- copy construct
 
14
d=Op(2)
 
15
dd=d; -- assignment operator
 
16
 
 
17
-- test equality
 
18
assert(a~=b)
 
19
assert(b==c)
 
20
assert(a~=d)
 
21
assert(d==dd)
 
22
 
 
23
-- test <
 
24
assert(a<b)
 
25
assert(a<=b)
 
26
assert(b<=c)
 
27
assert(b>=c)
 
28
assert(b>d)
 
29
assert(b>=d)
 
30
 
 
31
-- lua does not support += operators: skiping
 
32
 
 
33
-- test +
 
34
f=Op(1)
 
35
g=Op(1)
 
36
assert(f+g==Op(2))
 
37
assert(f-g==Op(0))
 
38
assert(f*g==Op(1))
 
39
assert(f/g==Op(1))
 
40
--assert(f%g==Op(0))    -- lua does not support %
 
41
 
 
42
-- test unary operators
 
43
--assert((not a)==true) -- lua does not allow overloading for not operator
 
44
--assert((not b)==false) -- lua does not allow overloading for not operator
 
45
assert(-a==a)
 
46
assert(-b==Op(-5))
 
47
 
 
48
-- test []
 
49
h=Op(3)
 
50
assert(h[0]==3)
 
51
assert(h[1]==0)
 
52
h[0]=2  -- set
 
53
assert(h[0]==2)
 
54
h[1]=2  -- ignored
 
55
assert(h[0]==2)
 
56
assert(h[1]==0)
 
57
 
 
58
-- test ()
 
59
i=Op(3)
 
60
assert(i()==3)
 
61
assert(i(1)==4)
 
62
assert(i(1,2)==6)
 
63
 
 
64
-- plus add some code to check the __str__ fn
 
65
assert(tostring(Op(1))=="Op(1)")
 
66
assert(tostring(Op(-3))=="Op(-3)")
 
67
 
 
68
--[[
 
69
/* Sample test code in C++
 
70
 
 
71
#include <assert.h>
 
72
#include <stdio.h>
 
73
 
 
74
int main(int argc,char** argv)
 
75
{
 
76
        // test routine:
 
77
        Op a;
 
78
        Op b=5;
 
79
        Op c=b; // copy construct
 
80
        Op d=2;
 
81
 
 
82
        // test equality
 
83
        assert(a!=b);
 
84
        assert(b==c);
 
85
        assert(a!=d);
 
86
 
 
87
        // test <
 
88
        assert(a<b);
 
89
        assert(a<=b);
 
90
        assert(b<=c);
 
91
        assert(b>=c);
 
92
        assert(b>d);
 
93
        assert(b>=d);
 
94
 
 
95
        // test +=
 
96
        Op e=3;
 
97
        e+=d;
 
98
        assert(e==b);
 
99
        e-=c;
 
100
        assert(e==a);
 
101
        e=Op(1);
 
102
        e*=b;
 
103
        assert(e==c);
 
104
        e/=d;
 
105
        assert(e==d);
 
106
        e%=c;
 
107
        assert(e==d);
 
108
 
 
109
        // test +
 
110
        Op f(1),g(1);
 
111
        assert(f+g==Op(2));
 
112
        assert(f-g==Op(0));
 
113
        assert(f*g==Op(1));
 
114
        assert(f/g==Op(1));
 
115
        assert(f%g==Op(0));
 
116
 
 
117
        // test unary operators
 
118
        assert(!a==true);
 
119
        assert(!b==false);
 
120
        assert(-a==a);
 
121
        assert(-b==Op(-5));
 
122
 
 
123
        // test []
 
124
        Op h=3;
 
125
        assert(h[0]==3);
 
126
        assert(h[1]==0);
 
127
        h[0]=2; // set
 
128
        assert(h[0]==2);
 
129
        h[1]=2; // ignored
 
130
        assert(h[0]==2);
 
131
        assert(h[1]==0);
 
132
 
 
133
        // test ()
 
134
        Op i=3;
 
135
        assert(i()==3);
 
136
        assert(i(1)==4);
 
137
        assert(i(1,2)==6);
 
138
 
 
139
        // plus add some code to check the __str__ fn
 
140
        //assert(str(Op(1))=="Op(1)");
 
141
        //assert(str(Op(-3))=="Op(-3)");
 
142
 
 
143
        printf("ok\n");
 
144
}
 
145
*/
 
146
]]