1
PRINT 'Testing generators' ;
3
SET @iterations = 1000;
5
SET @path = 'dictionary/';
10
PRINT ' Testing integer generator' ;
12
/* PGS_INTEGER '(' expression ',' expression ')' */
13
SET @min = -50; SET @max = -@min; SET @mean = (@max + @min) / 2;
14
SET @delta = (@max - @min) * @error / 100;
15
SET @g = integer(@min, @max);
18
WHILE @i < @iterations
25
SET @avg = @sum / @iterations;
26
ASSERT @avg >= @mean - @delta AND @avg <= @mean + @delta;
28
/* PGS_INTEGER '(' expression ',' expression ')' */
29
SET @min = -1234567898765432123456789; SET @max = -1234567898765432123456781;
30
SET @mean = (@max + @min) / 2; SET @delta = (@max - @min) * @error / 100;
31
SET @g = integer(@min, @max);
34
WHILE @i < @iterations
40
SET @avg = @sum / @iterations;
41
ASSERT @avg >= @mean - @delta AND @avg <= @mean + @delta;
43
/* PGS_INTEGER '(' expression ',' expression ')' */
44
SET @min = 0; SET @max = 1234567890;
45
SET @mean = (@max + @min) / 2; SET @delta = (@max - @min) * @error / 100;
46
SET @g = integer(@min, @max);
49
WHILE @i < @iterations
55
SET @avg = @sum / @iterations;
56
ASSERT @avg >= @mean - @delta AND @avg <= @mean + @delta;
58
/* PGS_INTEGER '(' expression ',' expression ')' */
59
SET @min = 1234567890; SET @max = 0;
60
SET @mean = (@max + @min) / 2; SET @delta = (-@max + @min) * @error / 100;
61
SET @g = integer(@min, @max);
64
WHILE @i < @iterations
70
SET @avg = @sum / @iterations;
71
ASSERT @avg >= @mean - @delta AND @avg <= @mean + @delta;
73
/* PGS_INTEGER '(' expression ',' expression ',' expression ',' expression ')' */
74
SET @g = integer(-50, -(-50), 0, 0);
81
/* PGS_INTEGER '(' expression ',' expression ',' expression ')' */
82
SET @local_iterations = 100;
83
SET @min = 1; SET @max = @local_iterations;
84
SET @mean = (@max + @min) / 2; SET @delta = (-@max + @min) * @error / 100;
85
SET @g = integer(@min, @max, 1);
89
WHILE @i < @local_iterations
91
SET @result = CAST (@g AS INTEGER);
93
WHILE @j < LINES(@save)
95
ASSERT @save[@j][0] <> @result;
99
SET @save[@i][0] = @result;
100
SET @sum = @sum + @result;
104
SET @avg = @sum / @local_iterations;
107
PRINT ' Testing real generator';
109
/* PGS_REAL '(' expression ',' expression ',' expression ')' */
110
SET @min = -50; SET @max = -@min; SET @mean = (@max + @min) / 2;
111
SET @delta = (@max - @min) * @error / 100;
112
SET @g = real(@min, @max, 10);
115
WHILE @i < @iterations
117
SET @sum = @sum + @g;
121
SET @avg = @sum / @iterations;
122
ASSERT @avg >= @mean - @delta AND @avg <= @mean + @delta;
124
/* PGS_REAL '(' expression ',' expression ',' expression ')' */
125
SET @min = -1234567898765432123456789; SET @max = -1234567898765432123456781;
126
SET @mean = (@max + @min) / 2; SET @delta = (@max - @min) * @error / 100;
127
SET @g = real(@min, @max, 1);
130
WHILE @i < @iterations
132
SET @sum = @sum + @g;
136
SET @avg = @sum / @iterations;
137
ASSERT @avg >= @mean - @delta AND @avg <= @mean + @delta;
139
/* PGS_REAL '(' expression ',' expression ',' expression ')' */
140
SET @min = 0; SET @max = 1234567890;
141
SET @mean = (@max + @min) / 2; SET @delta = (@max - @min) * @error / 100;
142
SET @g = real(@min, @max, 0);
145
WHILE @i < @iterations
147
SET @sum = @sum + @g;
151
SET @avg = @sum / @iterations;
152
ASSERT @avg >= @mean - @delta AND @avg <= @mean + @delta;
154
/* PGS_REAL '(' expression ',' expression ',' expression ')' */
155
SET @min = 1234567890.123456789; SET @max = 0.123456789;
156
SET @mean = (@max + @min) / 2; SET @delta = (-@max + @min) * @error / 100;
157
SET @g = real(@min, @max, 30);
160
WHILE @i < @iterations
162
SET @sum = @sum + @g;
166
SET @avg = @sum / @iterations;
167
ASSERT @avg >= @mean - @delta AND @avg <= @mean + @delta;
169
/* PGS_REAL '(' expression ',' expression ',' expression ',' expression ',' expression ')' */
170
SET @g = real(-50, -(-50), 2, 0, 50);
171
ASSERT @g = -3.249E+1;
172
ASSERT @g = 4.709e+1;
174
ASSERT @g = 2.286E+1;
175
ASSERT @g = 1.731E+1;
177
/* PGS_REAL '(' expression ',' expression ',' expression ',' expression ')' */
178
SET @local_iterations = 100;
179
SET @min = 0.1; SET @max = @local_iterations / 10;
180
SET @mean = (@max + @min) / 2; SET @delta = (-@max + @min) * @error / 100;
181
SET @g = real(@min, @max, 1, 1);
183
DECLARE @save { @a };
185
WHILE @i < @local_iterations
187
SET @result = CAST (@g AS REAL);
189
WHILE @j < LINES(@save)
191
ASSERT @save[@j][0] <> @result;
195
SET @save[@i][0] = @result;
196
SET @sum = @sum + @result;
200
SET @avg = @sum / @local_iterations;
203
PRINT ' Testing string generator';
205
SET @iteration_save = @iterations;
206
SET @iterations = @iterations / 10;
208
/* PGS_STRING '(' expression ',' expression ')' */
209
SET @min = 0; SET @max = 0;
210
SET @g = string(@min, @max);
212
WHILE @i < @iterations
214
SET @result = CAST (@g AS STRING);
221
/* PGS_STRING '(' expression ',' expression ')' */
222
SET @min = 10; SET @max = 5;
223
SET @g = string(@min, @max);
225
WHILE @i < @iterations
227
SET @result = CAST (@g AS STRING);
228
ASSERT @result <> '';
234
/* PGS_STRING '(' expression ',' expression ',' expression ')' */
235
SET @min = 10; SET @max = 20;
236
SET @g = string(@min, @max, 3);
238
WHILE @i < @iterations
240
SET @result = CAST (@g AS STRING);
241
ASSERT @result <> '';
247
/* PGS_STRING '(' expression ',' expression ',' expression ')' */
248
SET @min = 10; SET @max = 20;
249
SET @g = string(@min, @max, 0);
251
WHILE @i < @iterations
253
SET @result = CAST (@g AS STRING);
260
/* PGS_STRING '(' expression ',' expression ',' expression ',' expression ')' */
261
SET @min = 3; SET @max = 4;
262
SET @g = string(@min, @max, 1, 500);
269
SET @iterations = @iteration_save;
271
PRINT ' Testing regex generator';
273
SET @iteration_save = @iterations;
274
SET @iterations = @iterations / 10;
276
/* PGS_REGEX '(' expression ')' */
277
SET @g = regex('login@domain.com');
279
WHILE @i < @iterations
281
SET @result = CAST (@g AS STRING);
282
ASSERT @result = 'login@domain.com';
287
/* PGS_REGEX '(' expression ')' */
288
SET @g = regex('http://localhost[12]');
290
WHILE @i < @iterations
292
SET @result = CAST (@g AS STRING);
293
ASSERT (@result = 'http://localhost1'
294
OR @result = 'http://localhost2');
299
/* PGS_REGEX '(' expression ')' */
300
SET @g = regex('[8-2]');
302
WHILE @i < @iterations
304
SET @result = CAST (@g AS INTEGER);
305
ASSERT @result >= 2 AND @result <= 8;
310
/* PGS_REGEX '(' expression ')' */
311
SET @g = regex('[0-9]{2}\\.[0-9]{2}');
313
WHILE @i < @iterations
315
SET @result = CAST (@g AS REAL);
316
ASSERT @result >= 0 AND @result <= 99.99;
321
/* PGS_REGEX '(' expression ')' */
322
SET @g = regex('[\\]\\[]');
324
WHILE @i < @iterations
326
SET @result = CAST (@g AS STRING);
327
ASSERT @result = '[' OR @result = ']';
332
/* PGS_REGEX '(' expression ')' */
333
SET @g = regex('[\\}\\{]');
335
WHILE @i < @iterations
337
SET @result = CAST (@g AS STRING);
338
ASSERT @result = '{' OR @result = '}';
343
/* PGS_REGEX '(' expression ')' */
344
SET @g = regex('[a]{1,2}');
346
WHILE @i < @iterations
348
SET @result = CAST (@g AS STRING);
349
ASSERT @result = 'a' OR @result = 'aa';
354
/* PGS_REGEX '(' expression ')' */
355
SET @g = regex('[a]{3}');
357
WHILE @i < @iterations
359
SET @result = CAST (@g AS STRING);
360
ASSERT @result = 'aaa';
365
/* PGS_REGEX '(' expression ')' */
366
SET @g = regex('[a]{-5}');
368
WHILE @i < @iterations
370
SET @result = CAST (@g AS STRING);
371
ASSERT @result = 'a';
376
/* PGS_REGEX '(' expression ')' */
377
SET @g = regex('a{-5, -1}');
379
WHILE @i < @iterations
381
SET @result = CAST (@g AS STRING);
382
ASSERT @result = 'a';
387
/* PGS_REGEX '(' expression ')' */
388
SET @g = regex(' a{3}[ab]');
390
WHILE @i < @iterations
392
SET @result = CAST (@g AS STRING);
393
ASSERT @result = ' aaaa' OR @result = ' aaab';
398
/* PGS_REGEX '(' expression ')' */
401
WHILE @i < @iterations
403
SET @result = CAST (@g AS STRING);
409
/* PGS_REGEX '(' expression ')' */
410
SET @g = regex('\\[\\]\\{\\}');
412
WHILE @i < @iterations
414
SET @result = CAST (@g AS STRING);
415
ASSERT @result = '[]{}';
420
/* PGS_REGEX '(' expression ',' expression ')' */
421
SET @g = regex('[A-Za-z0-9][_\\.\\-]{1}[a-zA-Z0-9]{1,10}@[A-Za-z0-9]{1,10}', 0);
422
ASSERT @g = 'X.xGZc@XgzC';
423
ASSERT @g = 'g.dGPaxe@DgpAXE';
424
ASSERT @g = 'z-zQK50GfOz@Zqk50gFoZ';
428
/* PGS_REGEX '(' expression ',' expression ')' */
429
SET @g = regex('[A-Za-z0-9][_\\.\\-]{1}[a-zA-Z0-9]{1,10}@[A-Za-z0-9]{1,10}', 50);
430
ASSERT @g = 'K_k8@K8';
431
ASSERT @g = '8-HTPEIxkv2u@htpeiXKV2U';
432
ASSERT @g = 'h.BGtvLR@bgTVlr';
433
ASSERT @g = 't-XdFghxXz@xDfGHXxZ';
434
ASSERT @g = 'p-NYIqvhi@nyiQVHI';
436
SET @iterations = @iteration_save;
438
PRINT ' Testing dictionary generator';
440
SET @iteration_save = @iterations;
441
SET @iterations = @iterations / 10;
443
/* PGS_FILE '(' expression ',' expression ',' expression ',' expression ')' */
446
SET @g = file(@path + 'dict_utf8.txt', 0, @NOW, 'utf-8');
448
WHILE @i < @iterations
450
SET @result = CAST (@g AS STRING);
451
ASSERT (@result = 'abc' OR @result = 'def'
452
OR @result = 'ghi' OR @result = '���');
458
/* PGS_FILE '(' expression ',' expression ',' expression ',' expression ')' */
459
SET @g = file(@path + 'dict_iso8859.txt', 0, @NOW, 'iso8859-1');
461
WHILE @i < @iterations
463
SET @result = CAST (@g AS STRING);
464
ASSERT (@result = 'abc' OR @result = 'def'
465
OR @result = 'ghi' OR @result = '���');
470
/* PGS_FILE '(' expression ',' expression ',' expression ',' expression ')' */
471
SET @g = file(@path + 'dict_iso8859.txt', 1, 12345, 'iso8859-1');
482
SET @iterations = @iteration_save;
484
PRINT ' Testing date generator';
486
/* PGS_DATE '(' expression ',' expression ')' */
487
SET @min = '2008-05-01'; SET @max = '2008-05-02';
488
SET @g = date(@min, @max);
490
WHILE @i < @iterations
492
SET @result = CAST (@g AS STRING);
493
ASSERT @result = '2008-05-01' OR @result = '2008-05-02';
498
/* PGS_DATE '(' expression ',' expression ')' */
499
SET @min = '2008/05/02'; SET @max = '2008/05/01';
500
SET @g = date(@min, @max);
502
WHILE @i < @iterations
504
SET @result = CAST (@g AS STRING);
505
ASSERT @result = '2008-05-01' OR @result = '2008-05-02';
510
/* PGS_DATE '(' expression ',' expression ',' expression ',' expression ')' */
511
SET @min = '1000-05-01'; SET @max = '2000-05-01';
512
SET @g = date(@min, @max, 0, 100);
513
ASSERT @g = '1171-02-08';
514
ASSERT @g = '1044-10-23';
515
ASSERT @g = '1096-11-11';
516
ASSERT @g = '1098-09-05';
517
ASSERT @g = '1167-01-23';
518
ASSERT @g = '1073-03-11';
519
ASSERT @g = '1115-04-09';
521
/* PGS_DATE '(' expression ',' expression ',' expression ')' */
522
SET @local_iterations = 31;
523
SET @min = '2008-05-01'; SET @max = '2008-05-31';
524
SET @g = date(@min, @max, 1);
525
DECLARE @save { @a };
527
WHILE @i < @local_iterations
529
SET @result = CAST (@g AS STRING);
531
WHILE @j < LINES(@save)
533
ASSERT @save[@j][0] <> @result;
537
SET @save[@i][0] = @result;
542
PRINT ' Testing time generator';
544
/* PGS_TIME '(' expression ',' expression ')' */
545
SET @min = '00:00:00'; SET @max = '00:00:01';
546
SET @g = time(@min, @max);
548
WHILE @i < @iterations
550
SET @result = CAST (@g AS STRING);
551
ASSERT @result = '00:00:00' OR @result = '00:00:01';
556
/* PGS_TIME '(' expression ',' expression ')' */
557
SET @min = '14:34:07'; SET @max = '14:34:05';
558
SET @g = time(@min, @max);
560
WHILE @i < @iterations
562
SET @result = CAST (@g AS STRING);
563
ASSERT (@result = '14:34:05' OR @result = '14:34:06'
564
OR @result = '14:34:07');
569
/* PGS_TIME '(' expression ',' expression ',' expression ',' expression ')' */
570
SET @min = '01:00:00'; SET @max = '12:00:00';
571
SET @g = time(@min, @max, 0, 100);
572
ASSERT @g = '04:51:08';
573
ASSERT @g = '11:21:29';
574
ASSERT @g = '02:03:42';
575
ASSERT @g = '06:01:46';
576
ASSERT @g = '04:48:28';
577
ASSERT @g = '11:40:13';
578
ASSERT @g = '02:15:51';
579
ASSERT @g = '09:28:05';
581
/* PGS_TIME '(' expression ',' expression ',' expression ')' */
582
SET @local_iterations = 120;
583
SET @min = '01:00:01'; SET @max = '01:02:00';
584
SET @g = time(@min, @max, 1);
585
DECLARE @save { @a };
587
WHILE @i < @local_iterations
589
SET @result = CAST (@g AS STRING);
591
WHILE @j < LINES(@save)
593
ASSERT @save[@j][0] <> @result;
597
SET @save[@i][0] = @result;
602
PRINT ' Testing date/time generator';
604
/* PGS_DATE_TIME '(' expression ',' expression ')' */
605
SET @min = '2008-05-01 00:00:00'; SET @max = '2008-05-01 00:00:01';
606
SET @g = datetime(@min, @max);
608
WHILE @i < @iterations
610
SET @result = CAST (@g AS STRING);
611
ASSERT (@result = '2008-05-01 00:00:00'
612
OR @result = '2008-05-01 00:00:01');
617
/* PGS_DATE_TIME '(' expression ',' expression ')' */
618
SET @min = '2008-05-01 14:34:07'; SET @max = '2008-05-01 14:34:05';
619
SET @g = datetime(@min, @max);
621
WHILE @i < @iterations
623
SET @result = CAST (@g AS STRING);
624
ASSERT (@result = '2008-05-01 14:34:05' OR @result = '2008-05-01 14:34:06'
625
OR @result = '2008-05-01 14:34:07');
630
/* PGS_DATE_TIME '(' expression ',' expression ',' expression ',' expression ')' */
631
SET @min = '2000-05-01 01:00:00'; SET @max = '2008-05-01 12:00:00';
632
SET @g = datetime(@min, @max, 0, 100);
633
/* ASSERT @g = '2003-02-18 11:13:17';
634
ASSERT @g = '2007-11-12 21:29:32';
635
ASSERT @g = '2001-02-07 02:50:28';
636
ASSERT @g = '2003-12-28 04:19:34';
637
ASSERT @g = '2003-02-06 15:33:43';
638
ASSERT @g = '2008-02-03 20:11:10'; */
640
/* PGS_DATE_TIME '(' expression ',' expression ',' expression ')' */
641
SET @local_iterations = 120;
642
SET @min = '2008-05-01 23:59:01'; SET @max = '2008-05-02 00:01:00';
643
SET @g = datetime(@min, @max, 1);
644
DECLARE @save { @a };
646
WHILE @i < @local_iterations
648
SET @result = CAST (@g AS STRING);
650
WHILE @j < LINES(@save)
652
ASSERT @save[@j][0] <> @result;
656
SET @save[@i][0] = @result;