File: test_lingua_palindrome.t

package info (click to toggle)
libregexp-common-perl 2017060201-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster
  • size: 1,324 kB
  • ctags: 229
  • sloc: perl: 17,868; makefile: 2
file content (393 lines) | stat: -rwxr-xr-x 6,664 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
#!/usr/bin/perl

use strict;
use lib  qw {blib/lib};

use Regexp::Common;

use warnings;


my $count;

my $palindrome = qr /^$RE{lingua}{palindrome}$/;
my $fail       = qr /^$RE{lingua}{palindrome}{-chars => '\d'}$/;
my $keep       = qr /^$RE{lingua}{palindrome}{-keep}$/;

sub mess {print ++ $count, " - $_ (@_)\n"}

sub pass {print     "ok "; &mess}
sub fail {print "not ok "; &mess}

my (@passes, @entries, @failures);
while (<DATA>) {
    chomp;
    last unless /\S/;
    push @passes => $_;
}
while (<DATA>) {
    chomp;
    last unless /\S/;
    push @entries => $_;
}
while (<DATA>) {
    chomp;
    push @failures => $_;
}
push @failures => " ", "";

my $max = 2 * @failures + 3 * (@passes + 3 * grep {!/^[<>] .*:$/} @entries);

print "1..$max\n";

# print "$fail\n"; exit;

foreach (@passes) {
    /$palindrome/ ? pass "match"       : fail "no match";
    /$keep/       ? $1 eq $_           ? pass "match; keep"
                                       : fail "match ($1); keep"
                                       : fail "no match; keep";
    /$fail/       ? fail "match; fail" : pass "no match; fail";
}

foreach (@failures) {
    /$palindrome/ ? fail "match"       : pass "no match";
    /$keep/       ? fail "match; keep" : pass "no match; keep";
}

foreach my $entry (@entries) {
    if ($entry =~ /^> (.*):/) {
        $palindrome = qr /^$RE{lingua}{palindrome}{-chars => $1}$/;
        $keep       = qr /^$RE{lingua}{palindrome}{-chars => $1}{-keep}$/;
        next;
    }
    if ($entry =~ /^< (.*):/) {
        $fail       = qr /^$RE{lingua}{palindrome}{-chars => $1}$/;
        next;
    }
    local $_ = $entry;
    /$palindrome/ ? fail "match"       : pass "no match";
    /$keep/       ? fail "match; keep" : pass "no match; keep";
    /$fail/       ? fail "match; fail" : pass "no match; fail";
    local $_ = $entry . reverse $entry;
    /$palindrome/ ? pass "match"       : fail "no match";
    /$keep/       ? $1 eq $_           ? pass "match; keep"
                                       : fail "match ($1); keep"
                                       : fail "no match; keep";
    /$fail/       ? fail "match; fail" : pass "no match; fail";
    local $_ = reverse ($entry) . substr $entry, 1;
    /$palindrome/ ? pass "match"       : fail "no match";
    /$keep/       ? $1 eq $_           ? pass "match; keep"
                                       : fail "match ($1); keep"
                                       : fail "no match; keep";
    /$fail/       ? fail "match; fail" : pass "no match; fail";
}



__DATA__
aha
ara
bib
bob
boob
civic
daad
dad
deed
did
dood
dud
ebbe
egge
eke
ene
ere
etste
ewe
eye
gag
gezeg
gig
goog
huh
jij
kaak
kajak
kak
kazak
keek
kek
kik
kok
kook
lal
lel
lepel
level
lil
lol
lul
madam
mam
meeneem
mem
mom
mum
nebben
neen
negen
neggen
nekken
nellen
nemen
nepen
neppen
neren
nessen
neten
netten
neven
non
noon
nun
oho
paap
pap
peep
pep
pip
pop
pup
raar
radar
redder
reder
refer
rekker
remmer
renner
reviver
rotator
rotor
sas
sees
serres
sexes
sis
solos
soos
staats
stoots
sus
temet
tit
toot
tot
tut
wow

SFuHaTEaajrNbFeBpEkPN
YcIUURmSfRLoFjJe
eckIDoGgvoqkCEUsqMBLTWkK
pkgwKxLVxQwhQEtAwUesTSogkaIyJf
xYjBxdGcCfLFzXNtAqKRUOJxGKXeJ
AdXpQMeyEIfyr
SfsapxXkpVfbjsmdXUOou
PktrbesqhkyfluVnPwHRugocwvuq
WODAUSbVppQb
efvqfBZLuqYX
ByPHDLvRms
DhHqdSYYJAKMNiHvXPLbl
eKHZtibxzoXlqgILImYzkCctwhku
ecKrqPQqBtIpOEvGEmLIhVFWBuh
FwrCTwpQnnaJOqPhMPBODgzpBmXnH
lDhQ
KRYddvyTyUEWYEahlWtihNOpDrd
rlEBgFsNFsO
nfjVWYpUdgtiab
qHbABOUypLKobEaQyBjp
NsBpkIzckTmqZycZuQBQxkbfmGaj
ZcNRflemqdsWrCnJeFCydBOnJ
qDFnPI
YiImqMoXUdhnNC
nQGnrxzYicL
WmoOUKJi
NeVHWlCPsIW
PzBTPEoraVOMIbZAIzq
iOJqVDGCOPTyZsbsaPlg
Yl
LDuXxKkGOsmcJWUoKbQUuqLrwh
LGDDKUmrXJhhKWXeoYhVGEpwWVX
ddvJjgOYbVQBlpTB
LAZ
pRrxZfIukSORIjJxz
xYaeftKXISpLasaDZkeWbUDReFJS
YElBQsxQdiddncurlxbKVXov
EZTpMtSLMCx
OAcfWphdMFv
Axref
XMwzzoMfHOSMgGMBhVOV
sCnhq
yLYrxgkXDyfMzNqQxvX
UrhwiKxtOLeWD
blM
efhbKlXqBAtnVzfDbf
qnoSZfhTTvgTruFcGAyiGVX
CFsXnsXF
jjqgFrkIpookzlHpKEDPmAtqMP
MzPZ
> [a-z]:
uehbewnkitmcy
eqeeaphplt
cqmbytmkanwsmkquegylnkuevwxic
gsgyunrvb
tdhzvufhgcqoqzvmoizyevcvn
vmnoqltrdesvnxfyr
ipyroepwytimbdrdmyx
gicxjfzpqctsfoz
wzpksllqjyiyxaquvxbswzgclk
wruucflfyqvitzyzwompwetgd
edskskyxbryntdkzo
jmmigbfxerisfwzwropzxv
dyj
dmjgxwbuisixuqsmhv
jfsdunyulovxszozsuhdoisykwha
beljpcjnbidwiej
ihpjalczkejyreaygautktqoh
zkujheuhkitqsnggnqvo
cpfemiavljvvfsgrmrgvkfx
yjiamfbajifvnlmwhvxnco
zflbfreheohquoehmehklgtijpqekm
oywqmgecvv
thddjpasasumoy
tagxlzsazzwnzzelrp
klvxwmvchyrv
supbdycwkufqqftc
mafws
hlpztnbtbgruqukiroksqscniuqd
mobbxnqfqrhlmfvjbxgbcsxbfcoeh
webaxlcfqsfw
rsxhmxneutngvkgeogmbw
cdryfjtleqzhsxyhi
uuqriyeartlufhmrbutssb
bznyd
hrlkwexwhxrudfdjefikc
nqovsytdjshkupnklycxpxb
zm
zmtdrfdvcedutdjhu
qslxhtkxnrjdxjfyzkedncvbg
thlycnbuhszdtcxqhjyfjtrbc
thlttfpdjfwksigtyhiopgiry
qiwvs
zkcxrrbmqixmuon
paqtpvptus
vbowrpena
xujixuzudptoosuaojdj
miqjwg
yajiqeszalxloaltijpzzhytoij
ueputmp
itczvgkjdmnfcdalyuvtnjxuo
> \w:
rDi5YALoea2yGa0
IO
EzrPIMK04vif
cXSyVEHYbFQ8WzBrAkS0LnsIklfC
dBH0qE5dcg
PolVi_
ywihyxxZXuIeWbqiuMu5a5_hDTVr
DZQ12Cg8g_CTHvZZzHB
5f5NPQwgctuaETEBWi0TaAqLbJS
XZ
nflye5EapNHktnWyUGcOV9vJoHOP
ewoxUSGw_bQr6WiQBJdmVDpNWBM_A
daET_OL48NZ2213dcVT3P
SYav069GQ
17cT4sCDBqbRyaaaP7Ql1
V49uRZmWo2Pq
mVnJOovJarUmvvj6HCWYKcX
3b0q78jBIV4dVkLvqRMDEgmordp3
UiNxe7XNn1suVr3WuXCLn6NNV0voz
GMnUJJbyj_g_nHShSkAQJ2q0V6Ik
Nu5ZWWWmG8bXWH0klxU1iQy
bJm99Sn2IzfaxYHQRYhm74N2U
8rjj9pDVQ2
H9iw8mR4F
2z
YuOudFhIgi3l
DK_vYQ1lmOOo4Hv1JmM
MaEPzGE
FEwFsBhr0rad21pZc5vNBZ35sRi
M1H90gYO
L5Mxi3GuDcrtlOCdmCO7kSmQZAboOA
9Y8CJoGXY2Aj1awnsOehU3pg6_pHHR
3gwnySmFEGhvc7dBcw
FYmqwVHuxi0hepGvNhlEHA5R4d8
LxcoA_CCCG6x6
4axbAGGHEjQ4ChVDAIt5YUqHedgg
hp
qlIj2
SoUXBA0dQc5d7yueCHWL5N1tXWT
nxGFfSG8GIRK
9QvGo36LKz_m8xvniiXuMmKla9RrL
9TjcA
PJwRkL76mkv0g6RZBDF
nzrxgXRI237kKSH6POckTNImHrA
JHmkQ
OW_JRzG1afVb6eC9
cBsJo5C
hp4dUtypQQoToURHf8iEDYPZIuWe
C4Va9
FJ1DVeihL2
< [a-z]:
> \d:
29980996457893057
21313835378243030333668
091
729409601
9719624
370
3789153763679167124200438111
7213
205106612350732070380126
560
9932022468162
294997433
07622546948740
651026122541173516020300
813133424529744256580
260427038421
595082137168646535
7097770631397070695986287
810892652
1220621475
92013886546801507931905918
3767894100
71804184572999032104977644350
3941946950830399143521798239
985536734
4493935115991509368392962898
9655414455050335
172310303035555466194702906201
2402676066185
8834370
021824572200322891809377668051
03495183957
24151107
571087664136929781569896
551
7538
1265
91
821889
30933868030192296343807
7858
4405659824543046178
167460529774400160101784746938
8067316585
242483834532989211693778145
089226
7917129387435406520218042163
299639586008870965630234891
47714904484521065705502616510
0741473983774