1function Add(a, b, c)
2{
3    Stdout("Test Add ", a, b, c);
4    a = a + b;
5    c = a + c;
6    return a, c;
7}
8
9Stdout("Test Add-int ", Add(100, 200, 10.0));
10Stdout("Test Add-float ", Add(100.0, 200.0, 10));
11// 失败
12#Stdout("Test Add-string ", Add(100.0, 200.0, "1000"));
13Stdout("Test Add-string ", Add("100.0 + ", 200.0, "++++"));
14
15function Sub(a, b, c)
16{
17    Stdout("Test Sub ", a, b, c);
18    a = a - b;
19    c = a - c;
20    return a, c;
21}
22
23Stdout("Test Sub-int ", Sub(100, 200, 10.0));
24Stdout("Test Sub-float ", Sub(100.0, 200.0, 10));
25
26function Mul(a, b, c)
27{
28    Stdout("Test Mul ", a, b, c);
29    a = a * b;
30    c = a * c;
31    return a, c;
32}
33
34Stdout("Test Mul-int ", Mul(100, 200, 10.0));
35Stdout("Test Mul-float ", Mul(100.0, 200.0, 10));
36
37function Div(a, b, c)
38{
39    Stdout("Test Div ", a, b, c);
40    a = a / b;
41    c = a / c;
42    return a, c;
43}
44
45Stdout("Test Div-int ", Div(100, 200, 10.0));
46Stdout("Test Div-float ", Div(100.0, 200.0, 10));
47
48function EQ(a, b, c)
49{
50    Stdout("Test EQ ", a, b, c);
51    d = a == b;
52    e = a == c;
53    return d, e;
54}
55
56Stdout("Test EQ-int ", EQ(100, 100, 10.0));
57Stdout("Test EQ-float ", EQ(100.1, 200.1, 200));
58Stdout("Test EQ-float ", EQ(100.1, 200, 200));
59// string 只支持和str比较
60#Stdout("Test EQ-string ", EQ("200.0", 200.0, 10));
61Stdout("Test EQ-string ", EQ("200.0", "200.0", "10"));
62
63function NE(a, b, c)
64{
65    Stdout("Test NE ", a, b, c);
66    d = a != b;
67    e = a != c;
68    return d, e;
69}
70
71Stdout("Test NE-int ", NE(100, 100, 10.0));
72Stdout("Test NE-float ", NE(100.1, 200.1, 200));
73Stdout("Test NE-float ", NE(100.1, 200, 200));
74// string 只支持和str比较
75#Stdout("Test NE-string ", NE("200.0", 200.0, 10));
76Stdout("Test NE-string ", NE("200.0", "200.0", "10"));
77
78Stdout("Test NE-int ", NE(100, 100, 10.0));
79Stdout("Test NE-float ", NE(100.1, 200.1, 200));
80Stdout("Test NE-float ", NE(100.1, 200, 200));
81// string 只支持和str比较
82#Stdout("Test NE-string ", NE("200.0", 200.0, 10));
83Stdout("Test NE-string ", NE("200.0", "200.0", "10"));
84
85function GT(a, b, c)
86{
87    Stdout("Test GT ", a, b, c);
88    d = a > b;
89    e = a > c;
90    return d, e;
91}
92
93Stdout("Test GT-int ", GT(100, 100, 10.0));
94Stdout("Test GT-float ", GT(100.1, 200.1, 200));
95Stdout("Test GT-float ", GT(100.1, 200, 200));
96// string 只支持和str比较
97#Stdout("Test GT-string ", GT("200.0", 200.0, 10));
98Stdout("Test GT-string ", GT("200.0", "200.0", "10"));
99
100function GE(a, b, c)
101{
102    Stdout("Test GE ", a, b, c);
103    d = a >= b;
104    e = a >= c;
105    return d, e;
106}
107
108Stdout("Test GE-int ", GE(100, 100, 10.0));
109Stdout("Test GE-float ", GE(100.1, 200.1, 200));
110Stdout("Test GE-float ", GE(100.1, 200, 200));
111// string 只支持和str比较
112#Stdout("Test GE-string ", GE("200.0", 200.0, 10));
113Stdout("Test GE-string ", GE("200.0", "200.0", "10"));
114
115function LT(a, b, c)
116{
117    Stdout("Test LT ", a, b, c);
118    d = a < b;
119    e = a < c;
120    return d, e;
121}
122
123Stdout("Test LT-int ", LT(100, 100, 10.0));
124Stdout("Test LT-float ", LT(100.1, 200.1, 200));
125Stdout("Test LT-float ", LT(100.1, 200, 200));
126// string 只支持和str比较
127#Stdout("Test LT-string ", LT("200.0", 200.0, 10));
128Stdout("Test LT-string ", LT("200.0", "200.0", "10"));
129
130function LE(a, b, c)
131{
132    Stdout("Test LE ", a, b, c);
133    d = a <= b;
134    e = a <= c;
135    return d, e;
136}
137
138Stdout("Test LE-int ", LE(100, 100, 10.0));
139Stdout("Test LE-float ", LE(100.1, 200.1, 200));
140Stdout("Test LE-float ", LE(100.1, 200, 200));
141// string 只支持和str比较
142#Stdout("Test LE-string ", LE("200.0", 200.0, 10));
143Stdout("Test LE-string ", LE("200.0", "200.0", "10"));
144
145// 测试if语句
146function TestIf(a, b, c)
147{
148    if (a > b) {
149        return a, c;
150    } else {
151        return b, c;
152    }
153}
154
155Stdout("TestIf ", TestIf(100, 10, 10.0));
156Stdout("TestIf ", TestIf(200, 100, 10.0));
157Stdout("TestIf ", TestIf(100, 10 + 200, 10.0));
158
159// 测试for
160function TestFor(a, b, c)
161{
162    for (i = 0; i < a; i = i + 1) {
163        Stdout("TestFor i = ", i);
164        if (i > b) {
165            Stdout("TestFor return");
166            return i;
167        }
168        if (i == b) {
169            Stdout("TestFor continue");
170            continue;
171        }
172        if (i == c) {
173            Stdout("TestFor break");
174            break;
175        }
176    }
177    return c;
178}
179
180Stdout("TestFor ", TestFor(10, 5, 10));
181Stdout("TestFor ", TestFor(10, 5, 10));
182Stdout("TestFor ", TestFor(10, 5, 3));
183
184// 测试while 循环
185function TestWhile(a, b, c)
186{
187    i = 0;
188    while (i < a) {
189        Stdout("TestWhile i = ", i);
190        if (i > b) {
191            Stdout("TestWhile return");
192            return i;
193        }
194        if (i == b) {
195            Stdout("TestWhile continue i= ", i);
196            i = i + 2;
197            continue;
198        }
199        if (i == c) {
200            Stdout("TestWhile break");
201            break;
202        }
203        i = i + 1;
204    }
205    return c;
206}
207
208Stdout("TestWhile ", TestWhile(10, 5, 10));
209Stdout("TestWhile ", TestWhile(10, 5, 10));
210Stdout("TestWhile ", TestWhile(10, 5, 3));