gmtime/localtime are busted around 2**48
[perl.git] / t / re / pat_special_cc.t
1 #!./perl
2 #
3 # This test file is used to bulk check that /\s/ and /[\s]/ 
4 # test the same and that /\s/ and /\S/ are opposites, and that
5 # /[\s]/ and /[\S]/ are also opposites, for \s/\S and \d/\D and 
6 # \w/\W.
7 use strict;
8 use warnings;
9 use 5.010;
10
11
12 sub run_tests;
13
14 $| = 1;
15
16
17 BEGIN {
18     chdir 't' if -d 't';
19     @INC = ('../lib','.');
20     do "re/ReTest.pl" or die $@;
21 }
22
23
24 plan tests => 9;  # Update this when adding/deleting tests.
25
26 run_tests() unless caller;
27
28 #
29 # Tests start here.
30 #
31 sub run_tests {
32     my $upper_bound= 10_000;
33     for my $special (qw(\s \w \d)) {
34         my $upper= uc($special);
35         my @cc_plain_failed;
36         my @cc_complement_failed;
37         my @plain_complement_failed;
38         for my $ord (0 .. $upper_bound) {
39             my $ch= chr $ord;
40             my $plain= $ch=~/$special/ ? 1 : 0;
41             my $plain_u= $ch=~/$upper/ ? 1 : 0;
42             push @plain_complement_failed, "$ord-$plain-$plain_u" if $plain == $plain_u;
43
44             my $cc= $ch=~/[$special]/ ? 1 : 0;
45             my $cc_u= $ch=~/[$upper]/ ? 1 : 0;
46             push @cc_complement_failed, "$ord-$cc-$cc_u" if $cc == $cc_u;
47
48             push @cc_plain_failed, "$ord-$plain-$cc" if $plain != $cc;
49         }
50         iseq(join(" | ",@cc_plain_failed),"", "Check that /$special/ and /[$special]/ match same things (ord-plain-cc)");
51         iseq(join(" | ",@plain_complement_failed),"", "Check that /$special/ and /$upper/ are complements (ord-plain-plain_u)");
52         iseq(join(" | ",@cc_complement_failed),"", "Check that /[$special]/ and /[$upper]/ are complements (ord-cc-cc_u)");
53     }
54 } # End of sub run_tests
55
56 1;