plain text version:tests.csp
1| package tests;
2|
3| class tclass_base
4| {
5| var value;
6| function tclass_base(v) { value = v; }
7| function toString() { return string(value); }
8| }
9|
10| class tclass: tclass_base
11| {
12| function tclass(v) { tclass_base(v); }
13| }
14|
15| function basics_test() {
16| var v = new tclass(4);
17| var v_base = new tclass_base(4);
18| if (!(v instanceof tclass)) throw "instanceof 1";
19| if (!(v instanceof tclass_base)) throw "instanceof 2";
20| if (v_base instanceof tclass) throw "instanceof 3";
21| print("basics test passed! \n");
22| }
23|
24| function string_test()
25| {
26| var v = new tclass(4);
27|
28| if ( "1" + 2 + "3" != "123" ) throw "default toString in assignmet";
29| if ( "1" + 2 + "3" + v != "1234" ) throw "user defined toString in assignmet";
30|
31| var s = new string("0123456789");
32| if( s[3] != '3' ) throw "item";
33|
34| // substr test
35| if ( "0123456789".substr(2,3) != "234" ) throw "substr 1";
36| if ( "0123456789".substr(2,10) != "23456789" ) throw "substr 2";
37| if ( "0123456789".substr(-2,8) != "01234567" ) throw "substr 3";
38| if ( "0123456789".substr(2,-8) != "" ) throw "substr 4";
39|
40| // slice test
41| if ( "0123456789".slice(2,6) != "2345" ) throw "slice 1";
42| if ( "0123456789".slice(2,-2) != "234567" ) throw "slice 2";
43|
44| // case tests
45| if ( "Hello World".to_upper() != "HELLO WORLD" ) throw "to_upper";
46| if ( "Hello World".to_lower() != "hello world" ) throw "to_lover";
47|
48| // locale test /russian/. tested on win32 platform. others - not yet
49| // locale("Russian");
50| // if ( "Привет Мир".to_lower() != "привет мир" ) throw "to_lover:" + "Привет Мир".to_lower();
51|
52| // like test
53| if ( !"Hello world".like("??[a-z]l*") ) throw "like 0";
54| if ( !"5*".like("5[*]") ) throw "like 1";
55| if ( !"?n".like("[?]n") ) throw "like 2";
56| if ( !"a".like("[a-cdf]") && !"f".like("[a-cdf]") ) throw "like 3";
57| if ( !"-".like("[-acdf]") && !"f".like("[-acdf]") ) throw "like 4";
58| if ( !"[".like("[[]") ) throw "like 5";
59| if ( !"abc?d".like("abc[?]d*") ) throw "like 5";
60| if ( !"abc?de".like("abc[?]d*") ) throw "like 6";
61| if ( !"abce".like("abc[def]") && !"abcz".like("abc[def]") ) throw "like 7";
62| if ( !"Hello".like("[a-zA-Z]*") && !"hello".like("[a-zA-Z]*") ) throw "like 8";
63| // if ( !"Шишига".like("[А-Я]*") ) throw "like 9";
64|
65| print(string::printf("%d,%.2f,%s\n",123,123.45,"it is a string"));
66|
67| var ts = "1.2.3.4.";
68| if( ts.replace(".","-") != "1-2-3-4-" ) throw "replace " + ts.replace(".","-") ;
69|
70| var sarr = "1,2,3,4,5,6".split(',');
71| if(sarr.length != 6) throw "split 1";
72| if(int(sarr[0]) != 1 && int(sarr[5]) != 6) throw "split 2";
73|
74| print("string test passed!\n");
75| }
76|
77| //compararator function for array sort
78| function less(a,b) {
79| return a < b;
80| }
81|
82| function array_test()
83| {
84| var ar = new array();
85| var i;
86| // push test
87| for(var j=9;j>=0;j--) ar.push(j);
88| if(ar.length != 10) throw "array.length";
89| for(i=0;i<10;i++) if(ar[i] != (9-i) ) throw "array.push";
90|
91| ar[9] = 0; if(ar[9] != 0) throw "array.item";
92|
93| //slice test
94| var fragment = ar.slice(2,-2);
95| if (fragment.length != 6) throw "array.slice";
96|
97| // sort test (default)
98| fragment.sort();
99| for(i=0;i<fragment.length;i++) if(fragment[i] != (i+2) ) throw "array.slice";
100|
101| // sort test (with user defined function)
102| ar.sort(less);
103| for(i=0;i<10;i++) if(ar[i] != i) throw "array.sort UDF";
104|
105| // pop test
106| for(i=0;i<10;i++) if(ar.pop() != (9-i)) throw "array.pop order";
107| if(ar.length != 0) throw "array.pop";
108|
109| // concat test
110| for(i=0;i<10;i++) ar.push(i);
111| var ins = new array(12,13,14);
112| ar.concat(10,11,ins,15);
113| if(ar.length != 16) throw "array.concat length";
114| for(i=0;i<ar.length;i++) if(ar[i] != i) throw "array.concat order";
115|
116| // shift test
117| if(ar.shift() != 0) throw "array.shift return";
118| if(ar.shift() != 1) throw "array.shift return";
119| if(ar.length != 14) throw "array.shift length";
120| for(i=0;i<ar.length;i++) if(ar[i] != (i+2)) throw "array.shift order";
121|
122| // unshift test
123| ar.unshift(0,1);
124| if(ar.length != 16) throw "array.unshift length";
125| for(i=0;i<ar.length;i++) if(ar[i] != i) throw "array.unshift order";
126|
127| print(ar,"\n");
128|
129| print("array test passed! \n");
130| }
131|
132| function date_test() {
133| var d = new date (1962,1,18);
134| print ("my birthday is ", d );
135| print (" wd=",d.day_of_week," yd=",d.day_of_year,"\n");
136|
137| var mon = d.month;
138| d.day += 31;
139| if( d.month != (mon+1) % 12 ) throw "set day";
140|
141| d = new date (1962,2,28);
142| d.day += 1;
143|
144| print ("date ", d, "\n" );
145|
146| print ("time ", d.time, "\n" );
147|
148| print("date test passed! \n");
149| }
150|
151| function map_test() {
152| var m = new map();
153| m.add("one",1);
154| m.add("two",2);
155| m["three"] = 3;
156|
157| //exists test
158| if( !m.exist("one") ) throw "exist";
159| if( m["two"] != 2 ) throw "item";
160|
161| // remove test
162| if( m.remove("two") != 2 ) throw "remove 1";
163| if( m.exist("two") ) throw "remove 2";
164|
165| // literal test
166| var m1 = { "one":1, "two":2, "three":3 };
167| if( m1["two"] != 2 ) throw "literal";
168|
169| print("map test passed! \n");
170| }
171|
172| function regexp_test() {
173| var pat = "sdfdfsgfdg013alocalAB5163k000la";
174| var reg = new regexp( "l[a-z]*" );
175| if(reg.match( pat ) != "local")
176| throw "regexp failed to match!";
177|
178| out.printf("regexp test passed! \n");
179| }
180|
181|
182| // Filter TCP/IP addresses
183| const RE_TCP_IP_ADDR_NAME = "[_a-zA-Z0-9\\-]+([\\.]+[_a-zA-Z0-9\\-]+)*";
184| const RE_TCP_IP_ADDR_IP = "[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+";
185| const RE_TCP_IP_ADDR = "(" + RE_TCP_IP_ADDR_IP + "|" + RE_TCP_IP_ADDR_NAME + ")";
186| // Filter an e-mail address
187| const RE_EMAIL_ADDR = "[_a-zA-Z0-9\\-\\.]+@(" + RE_TCP_IP_ADDR + ")";
188| // Filter an unix path
189| const RE_UNIX_PATH = "(/[_a-zA-Z0-9\\-\\.]+)+";
190| // filters an URL - ftp or http.
191| const RE_URL = "([Ff][Tt][Pp]|[Hh][Tt][Tt][Pp])://(" + RE_TCP_IP_ADDR + ")(:[0-9]+)?(" + RE_UNIX_PATH + ")*";
192|
193| function regexp_test_2()
194| {
195| var pat = "http://www.terra-informatica.org/c-smile/index.htm; ftp://ftp.terra-informatica.org";
196| var reg = new regexp( RE_URL );
197| var matches = reg.split(pat);
198| out.printf( "matching:%s\n", pat);
199| for(var i=0; i < matches.length; i++)
200| out.printf( " match #%d = <%s>\n",i, matches[i] );
201|
202| reg.compile( RE_TCP_IP_ADDR );
203| pat = "127.0.0.1 localhost";
204| out.printf( "matching:%s\n", pat);
205| if(reg.test( pat )) {
206| out.printf( "matched:%s by %s\n", pat, reg);
207| for(var k=0; k < reg.length; k++)
208| out.printf( " element #%d = <%s>\n",k, reg[k] );
209| }
210|
211| out.printf("regexp 2 test passed! \n");
212|
213| }
214|
215|
216| function main()
217| {
218| try {
219| basics_test();
220| string_test();
221| array_test();
222| date_test();
223| map_test();
224| regexp_test();
225| regexp_test_2();
226| print("all tests passed!\n");
227| }
228| catch(e) {
229| print("ERROR:" + e + "\n");
230| }
231| }