1N/A#!/usr/bin/perl -w
1N/A#
1N/A
1N/ABEGIN {
1N/A chdir 't' if -d 't';
1N/A @INC = '.';
1N/A push @INC, '../lib';
1N/A}
1N/A
1N/Aprint "1..20\n";
1N/A
1N/Ause strict;
1N/A
1N/Arequire Tie::SubstrHash;
1N/A
1N/Amy %a;
1N/A
1N/Atie %a, 'Tie::SubstrHash', 3, 3, 3;
1N/A
1N/A$a{abc} = 123;
1N/A$a{bcd} = 234;
1N/A
1N/Aprint "not " unless $a{abc} == 123;
1N/Aprint "ok 1\n";
1N/A
1N/Aprint "not " unless keys %a == 2;
1N/Aprint "ok 2\n";
1N/A
1N/Adelete $a{abc};
1N/A
1N/Aprint "not " unless $a{bcd} == 234;
1N/Aprint "ok 3\n";
1N/A
1N/Aprint "not " unless (values %a)[0] == 234;
1N/Aprint "ok 4\n";
1N/A
1N/Aeval { $a{abcd} = 123 };
1N/Aprint "not " unless $@ =~ /Key "abcd" is not 3 characters long/;
1N/Aprint "ok 5\n";
1N/A
1N/Aeval { $a{abc} = 1234 };
1N/Aprint "not " unless $@ =~ /Value "1234" is not 3 characters long/;
1N/Aprint "ok 6\n";
1N/A
1N/Aeval { $a = $a{abcd}; $a++ };
1N/Aprint "not " unless $@ =~ /Key "abcd" is not 3 characters long/;
1N/Aprint "ok 7\n";
1N/A
1N/A@a{qw(abc cde)} = qw(123 345);
1N/A
1N/Aprint "not " unless $a{cde} == 345;
1N/Aprint "ok 8\n";
1N/A
1N/Aeval { $a{def} = 456 };
1N/Aprint "not " unless $@ =~ /Table is full \(3 elements\)/;
1N/Aprint "ok 9\n";
1N/A
1N/A%a = ();
1N/A
1N/Aprint "not " unless keys %a == 0;
1N/Aprint "ok 10\n";
1N/A
1N/A# Tests 11..16 by Linc Madison.
1N/A
1N/Amy $hashsize = 119; # arbitrary values from my data
1N/Amy %test;
1N/Atie %test, "Tie::SubstrHash", 13, 86, $hashsize;
1N/A
1N/Afor (my $i = 1; $i <= $hashsize; $i++) {
1N/A my $key1 = $i + 100_000; # fix to uniform 6-digit numbers
1N/A my $key2 = "abcdefg$key1";
1N/A $test{$key2} = ("abcdefgh" x 10) . "$key1";
1N/A}
1N/A
1N/Afor (my $i = 1; $i <= $hashsize; $i++) {
1N/A my $key1 = $i + 100_000;
1N/A my $key2 = "abcdefg$key1";
1N/A unless ($test{$key2}) {
1N/A print "not ";
1N/A last;
1N/A }
1N/A}
1N/Aprint "ok 11\n";
1N/A
1N/Aprint "not " unless Tie::SubstrHash::findgteprime(1) == 2;
1N/Aprint "ok 12\n";
1N/A
1N/Aprint "not " unless Tie::SubstrHash::findgteprime(2) == 2;
1N/Aprint "ok 13\n";
1N/A
1N/Aprint "not " unless Tie::SubstrHash::findgteprime(5.5) == 7;
1N/Aprint "ok 14\n";
1N/A
1N/Aprint "not " unless Tie::SubstrHash::findgteprime(13) == 13;
1N/Aprint "ok 15\n";
1N/A
1N/Aprint "not " unless Tie::SubstrHash::findgteprime(13.000001) == 17;
1N/Aprint "ok 16\n";
1N/A
1N/Aprint "not " unless Tie::SubstrHash::findgteprime(114) == 127;
1N/Aprint "ok 17\n";
1N/A
1N/Aprint "not " unless Tie::SubstrHash::findgteprime(1000) == 1009;
1N/Aprint "ok 18\n";
1N/A
1N/Aprint "not " unless Tie::SubstrHash::findgteprime(1024) == 1031;
1N/Aprint "ok 19\n";
1N/A
1N/Aprint "not " unless Tie::SubstrHash::findgteprime(10000) == 10007;
1N/Aprint "ok 20\n";
1N/A