1# Before `make install' is performed this script should be runnable with
2# `make test'.
3
4##################### We start with some black magic to print on failure.
5
6BEGIN { $| = 1; print "1..29\n"; }
7END {print "not ok 1\n" unless $loaded;}
8use Text::NSP::Measures::2D::MI::pmi;
9$loaded = 1;
10print "ok 1\n";
11
12######################### End of black magic.
13
14############ Computing PMI value for some count values.
15
16my @bigram_count = (10, 20, 20,60);
17
18$value = calculateStatistic(n11 => 10,
19                                    n1p => 20,
20                                    np1 => 20,
21                                    npp => 60);
22$err = getErrorCode();
23if($err)
24{
25    print "not ok 2\n";
26}
27elsif($value >= 0.58 && $value <= 0.59)
28{
29    print "ok 2\n";
30}
31else
32{
33    print "not ok 2\n";
34}
35
36############Error Code check for missing values
37
38%count_values = (n1p => 20,
39                 np1 => 20,
40                 npp => 60);
41
42$value = calculateStatistic(%count_values);
43
44$err = getErrorCode();
45if($err == 200)
46{
47  print "ok 3\n";
48}
49else
50{
51  print"not ok 3\n";
52}
53
54############Error Code check for missing values
55
56%count_values = (n11 =>10,
57                 np1 => 20,
58                 npp => 60);
59
60$value = calculateStatistic(%count_values);
61
62$err = getErrorCode();
63if($err == 200)
64{
65  print "ok 4\n";
66}
67else
68{
69  print"not ok 4\n";
70}
71############Error Code check for missing values
72
73%count_values = (n11=>10,
74                 n1p => 20,
75                 np1 => 20);
76
77$value = calculateStatistic(%count_values);
78
79$err = getErrorCode();
80if($err == 200)
81{
82  print "ok 5\n";
83}
84else
85{
86  print"not ok 5\n";
87}
88############Error Code check for -ve values
89
90%count_values = (n11 => -10,
91                 n1p => 20,
92                 np1 => 20,
93                 npp => 60);
94
95$value = calculateStatistic(%count_values);
96
97$err = getErrorCode();
98if($err == 201)
99{
100  print "ok 6\n";
101}
102else
103{
104  print"not ok 6\n";
105}
106
107############Error Code check for -ve values
108
109%count_values = (n11 => 10,
110                 n1p => -20,
111                 np1 => 20,
112                 npp => 60);
113
114$value = calculateStatistic(%count_values);
115
116$err = getErrorCode();
117if($err == 204)
118{
119  print "ok 7\n";
120}
121else
122{
123  print"not ok 7\n";
124}
125
126############Error Code check for -ve values
127
128%count_values = (n11 => 10,
129                 n1p => 20,
130                 np1 => 20,
131                 npp => -60);
132
133$value = calculateStatistic(%count_values);
134
135$err = getErrorCode();
136if($err == 204)
137{
138  print "ok 8\n";
139}
140else
141{
142  print"not ok 8\n";
143}
144
145############Error Code check invalid values
146
147%count_values = (n11 => 80,
148                 n1p => 20,
149                 np1 => 20,
150                 npp => 60);
151
152$value = calculateStatistic(%count_values);
153
154$err = getErrorCode();
155if($err == 202)
156{
157  print "ok 9\n";
158}
159else
160{
161  print"not ok 9\n";
162}
163
164############Error Code check invalid values
165
166%count_values = (n11 => 30,
167                 n1p => 20,
168                 np1 => 20,
169                 npp => 60);
170
171$value = calculateStatistic(%count_values);
172
173$err = getErrorCode();
174if($err == 202)
175{
176  print "ok 10\n";
177}
178else
179{
180  print"not ok 10\n";
181}
182
183
184############Error Code check invalid values
185
186%count_values = (n11 => 10,
187                 n1p => 70,
188                 np1 => 20,
189                 npp => 60);
190
191$value = calculateStatistic(%count_values);
192
193$err = getErrorCode();
194if($err == 203)
195{
196  print "ok 11\n";
197}
198else
199{
200  print"not ok 11\n";
201  print $err;
202}
203
204############## Checking Error code for -ve observed frequency
205
206$value = calculateStatistic(n11 => 10,
207                                    n1p => 20,
208                                    np1 => 11,
209                                    npp => 20);
210$err = getErrorCode();
211if($err==201)
212{
213    print "ok 12\n";
214}
215else
216{
217    print "not ok 12\n";
218}
219
220############## Checking measure value for a contingency table with a zero observed value
221
222$value = calculateStatistic(n11 => 10,
223                                    n1p => 20,
224                                    np1 => 20,
225                                    npp => 30);
226$err = getErrorCode();
227if($value<=-0.41503 and $value >= -0.41504)
228{
229    print "ok 13\n";
230}
231else
232{
233    print "not ok 13\n";
234}
235
236############## Checking measure value for actual bigram data
237
238my $n11; my $n1p; my $np1; my $npp;
239
240$npp = 567835;
241$n11 = 3972;
242$n1p = 23189;
243$np1 = 22641;
244
245$value = calculateStatistic(n11 => $n11,
246                                    n1p => $n1p,
247                                    np1 => $np1,
248                                    npp => $npp);
249$err = getErrorCode();
250if($value < 2.10296 and $value > 2.102959)
251{
252    print "ok 14\n";
253}
254else
255{
256    print "not ok 14\n";
257}
258
259##############
260
261$npp = 567835;
262$n11 = 2298;
263$n1p = 4624;
264$np1 = 8677;
265$value = calculateStatistic(n11 => $n11,
266                                    n1p => $n1p,
267                                    np1 => $np1,
268                                    npp => $npp);
269$err = getErrorCode();
270if($value < 5.02336904 and $value > 5.02336903)
271{
272    print "ok 15\n";
273}
274else
275{
276    print "not ok 15\n";
277}
278
279##############
280
281$npp = 8293549;
282$n11 = 44796;
283$n1p = 179966;
284$np1 = 433831;
285$value = calculateStatistic(n11 => $n11,
286                                    n1p => $n1p,
287                                    np1 => $np1,
288                                    npp => $npp);
289$err = getErrorCode();
290if($value < 2.250502 and $value > 2.2505019)
291{
292    print "ok 16\n";
293}
294else
295{
296    print "not ok 16\n";
297}
298
299##############
300
301$npp = 8293549;
302$n11 = 40666;
303$n1p = 432943;
304$np1 = 433831;
305$value = calculateStatistic( n11 => $n11,
306                                    n1p => $n1p,
307                                    np1 => $np1,
308                                    npp => $npp);
309$err = getErrorCode();
310if($value < 0.844502445 and $value > 0.844502444)
311{
312    print "ok 17\n";
313}
314else
315{
316    print "not ok 17\n";
317}
318
319##############
320
321$npp = 8293549;
322$n11 = 37397;
323$n1p = 143010;
324$np1 = 433831;
325$value = calculateStatistic(n11 => $n11,
326                                    n1p => $n1p,
327                                    np1 => $np1,
328                                    npp => $npp);
329$err = getErrorCode();
330if($value < 2.32166296 and $value > 2.321662959)
331{
332    print "ok 18\n";
333}
334else
335{
336    print "not ok 18\n";
337}
338
339##############
340
341$npp = 8293549;
342$n11 = 32660;
343$n1p = 454949;
344$np1 = 433831;
345$value = calculateStatistic(n11 => $n11,
346                                    n1p => $n1p,
347                                    np1 => $np1,
348                                    npp => $npp);
349$err = getErrorCode();
350if($value < 0.456676414 and $value > 0.456676413)
351{
352    print "ok 19\n";
353}
354else
355{
356    print "not ok 19\n";
357}
358
359##############
360
361$npp = 8293549;
362$n11 = 25919;
363$n1p = 454949;
364$np1 = 169091;
365$value = calculateStatistic(n11 => $n11,
366                                    n1p => $n1p,
367                                    np1 => $np1,
368                                    npp => $npp);
369$err = getErrorCode();
370if($value < 1.48249496 and $value > 1.48249495)
371{
372    print "ok 20\n";
373}
374else
375{
376    print "not ok 20\n";
377}
378
379##############
380
381$npp = 8293549;
382$n11 = 17042;
383$n1p = 454949;
384$np1 = 185958;
385$value = calculateStatistic(n11 => $n11,
386                                    n1p => $n1p,
387                                    np1 => $np1,
388                                    npp => $npp);
389$err = getErrorCode();
390if($value < 0.74040261 and $value > 0.74040260)
391{
392    print "ok 21\n";
393}
394else
395{
396    print "not ok 21\n";
397}
398
399##############
400
401$npp = 8293549;
402$n11 = 16862;
403$n1p = 186141;
404$np1 = 433831;
405$value = calculateStatistic(n11 => $n11,
406                                    n1p => $n1p,
407                                    np1 => $np1,
408                                    npp => $npp);
409$err = getErrorCode();
410if($value < 0.79223626 and $value > 0.79223625)
411{
412    print "ok 22\n";
413}
414else
415{
416    print "not ok 22\n";
417}
418
419##############
420
421$npp = 8293549;
422$n11 = 16115;
423$n1p = 52569;
424$np1 = 432944;
425$value = calculateStatistic(n11 => $n11,
426                                    n1p => $n1p,
427                                    np1 => $np1,
428                                    npp => $npp);
429$err = getErrorCode();
430if($value < 2.55392916 and $value > 2.553929159)
431{
432    print "ok 23\n";
433}
434else
435{
436    print "not ok 23\n";
437}
438
439##############
440
441$npp = 8293549;
442$n11 = 16089;
443$n1p = 432943;
444$np1 = 34837;
445$value = calculateStatistic(n11 => $n11,
446                                    n1p => $n1p,
447                                    np1 => $np1,
448                                    npp => $npp);
449$err = getErrorCode();
450if($value < 3.145194863 and $value > 3.145194862)
451{
452    print "ok 24\n";
453}
454else
455{
456    print "not ok 24\n";
457}
458
459##############
460
461$npp = 8293549;
462$n11 = 15800;
463$n1p = 432943;
464$np1 = 432944;
465$value = calculateStatistic(n11 => $n11,
466                                    n1p => $n1p,
467                                    np1 => $np1,
468                                    npp => $npp);
469$err = getErrorCode();
470if($value < -0.5164433705 and $value > -0.5164433707)
471{
472    print "ok 25\n";
473}
474else
475{
476    print "not ok 25\n";
477}
478
479##############
480
481$npp = 8293549;
482$n11 = 15459;
483$n1p = 54930;
484$np1 = 433831;
485$value = calculateStatistic(n11 => $n11,
486                                    n1p => $n1p,
487                                    np1 => $np1,
488                                    npp => $npp);
489$err = getErrorCode();
490if($value < 2.4276372511 and $value > 2.4276372510)
491{
492    print "ok 26\n";
493}
494else
495{
496    print "not ok 26\n";
497}
498
499##############
500
501$npp = 8293549;
502$n11 = 14206;
503$n1p = 454949;
504$np1 = 52569;
505$value = calculateStatistic(n11 => $n11,
506                                    n1p => $n1p,
507                                    np1 => $np1,
508                                    npp => $npp);
509$err = getErrorCode();
510if($value < 2.3005009626 and $value > 2.3005009625)
511{
512    print "ok 27\n";
513}
514else
515{
516    print "not ok 27\n";
517}
518
519##############
520
521$npp = 8293549;
522$n11 = 14075;
523$n1p = 432943;
524$np1 = 59565;
525$value = calculateStatistic(n11 => $n11,
526                                    n1p => $n1p,
527                                    np1 => $np1,
528                                    npp => $npp);
529$err = getErrorCode();
530if($value < 2.1784106554 and $value > 2.1784106553)
531{
532    print "ok 28\n";
533}
534else
535{
536    print "not ok 28\n";
537}
538
539##############
540
541$npp = 8293549;
542$n11 = 14070;
543$n1p = 432943;
544$np1 = 34669;
545$value = calculateStatistic(n11 => $n11,
546                                    n1p => $n1p,
547                                    np1 => $np1,
548                                    npp => $npp);
549$err = getErrorCode();
550if($value < 2.9587167 and $value > 2.95871669)
551{
552    print "ok 29\n";
553}
554else
555{
556    print "not ok 29\n";
557}
558
559##############
560