This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Support Unicode properties Identifier_(Status|Type)
[perl5.git] / lib / Tie / SubstrHash.t
1 #!/usr/bin/perl -w
2
3
4 BEGIN {
5     chdir 't' if -d 't';
6     @INC = '.'; 
7     push @INC, '../lib';
8 }    
9
10 print "1..20\n";
11
12 use strict;
13
14 require Tie::SubstrHash;
15
16 my %a;
17
18 tie %a, 'Tie::SubstrHash', 3, 3, 3;
19
20 $a{abc} = 123;
21 $a{bcd} = 234;
22
23 print "not " unless $a{abc} == 123;
24 print "ok 1\n";
25
26 print "not " unless keys %a == 2;
27 print "ok 2\n";
28
29 delete $a{abc};
30
31 print "not " unless $a{bcd} == 234;
32 print "ok 3\n";
33
34 print "not " unless (values %a)[0] == 234;
35 print "ok 4\n";
36
37 eval { $a{abcd} = 123 };
38 print "not " unless $@ =~ /Key "abcd" is not 3 characters long/;
39 print "ok 5\n";
40
41 eval { $a{abc} = 1234 };
42 print "not " unless $@ =~ /Value "1234" is not 3 characters long/;
43 print "ok 6\n";
44
45 eval { $a = $a{abcd}; $a++  };
46 print "not " unless $@ =~ /Key "abcd" is not 3 characters long/;
47 print "ok 7\n";
48
49 @a{qw(abc cde)} = qw(123 345); 
50
51 print "not " unless $a{cde} == 345;
52 print "ok 8\n";
53
54 eval { $a{def} = 456 };
55 print "not " unless $@ =~ /Table is full \(3 elements\)/;
56 print "ok 9\n";
57
58 %a = ();
59
60 print "not " unless keys %a == 0;
61 print "ok 10\n";
62
63 # Tests 11..16 by Linc Madison.
64
65 my $hashsize = 119;                # arbitrary values from my data
66 my %test;
67 tie %test, "Tie::SubstrHash", 13, 86, $hashsize;
68
69 for (my $i = 1; $i <= $hashsize; $i++) {
70         my $key1 = $i + 100_000;           # fix to uniform 6-digit numbers
71         my $key2 = "abcdefg$key1";
72         $test{$key2} = ("abcdefgh" x 10) . "$key1";
73 }
74
75 for (my $i = 1; $i <= $hashsize; $i++) {
76         my $key1 = $i + 100_000;
77         my $key2 = "abcdefg$key1";
78         unless ($test{$key2}) {
79                 print "not ";
80                 last;
81         }
82 }
83 print "ok 11\n";
84
85 print "not " unless Tie::SubstrHash::findgteprime(1) == 2;
86 print "ok 12\n";
87
88 print "not " unless Tie::SubstrHash::findgteprime(2) == 2;
89 print "ok 13\n";
90
91 print "not " unless Tie::SubstrHash::findgteprime(5.5) == 7;
92 print "ok 14\n";
93
94 print "not " unless Tie::SubstrHash::findgteprime(13) == 13;
95 print "ok 15\n";
96
97 print "not " unless Tie::SubstrHash::findgteprime(13.000001) == 17;
98 print "ok 16\n";
99
100 print "not " unless Tie::SubstrHash::findgteprime(114) == 127;
101 print "ok 17\n";
102
103 print "not " unless Tie::SubstrHash::findgteprime(1000) == 1009;
104 print "ok 18\n";
105
106 print "not " unless Tie::SubstrHash::findgteprime(1024) == 1031;
107 print "ok 19\n";
108
109 print "not " unless Tie::SubstrHash::findgteprime(10000) == 10007;
110 print "ok 20\n";
111